diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index b3f517954e..2483812c4f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -27,5 +27,5 @@ Please delete options that are not relevant. - [ ] Has a known issue - [Link to the open issue addressing it]() - [ ] If your PR changes the Operator compatibility (Ex: Upgrade prover versions) - - [ ] This PR adds compatibility for operator for both versions and do not change batcher/docs/examples + - [ ] This PR adds compatibility for operator for both versions and do not change crates/docs/examples - [ ] This PR updates batcher and docs/examples to the newer version. This requires the operator are already updated to be compatible diff --git a/.github/workflows/build-and-test-go.yml b/.github/workflows/build-and-test-go.yml index d7add5f1d4..2e209bb27d 100644 --- a/.github/workflows/build-and-test-go.yml +++ b/.github/workflows/build-and-test-go.yml @@ -2,7 +2,9 @@ name: build-go-projects on: push: - branches: [main] + branches: + - testnet + - staging pull_request: branches: ["*"] paths: @@ -16,7 +18,7 @@ env: FFI_FOR_RELEASE: false jobs: build: - runs-on: aligned-runner + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/build-and-test-rust.yml b/.github/workflows/build-and-test-rust.yml index 705f7f73f6..7969bf25f5 100644 --- a/.github/workflows/build-and-test-rust.yml +++ b/.github/workflows/build-and-test-rust.yml @@ -2,12 +2,15 @@ name: build-and-test-rust-projects on: push: - branches: [main] + branches: + - testnet + - staging pull_request: branches: ["*"] paths: - - "batcher/**" - - ".github/workflows/build-rust.yml" + - "crates/**" + - "aggregation_mode/**" + - ".github/workflows/build-and-test-rust.yml" jobs: build: @@ -19,51 +22,105 @@ jobs: - name: Set up Rust uses: actions-rs/toolchain@v1 with: - toolchain: stable + toolchain: 1.86.0 components: rustfmt, clippy override: true + + # Reference: https://github.com/succinctlabs/sp1/actions/runs/8886659400/workflow#L61-L65 + - name: Install sp1 toolchain + run: | + curl -L https://sp1.succinct.xyz | bash + source /home/runner/.bashrc + ~/.sp1/bin/sp1up + + - name: Install risc0 toolchain + run: | + curl -L https://risczero.com/install | bash + source ~/.bashrc + ~/.risc0/bin/rzup install + - name: Cache Rust dependencies uses: actions/cache@v3 with: path: | ~/.cargo/registry ~/.cargo/git - batcher/target + crates/target key: ${{ runner.os }}-rust-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-rust- - - name: Check formatting of Rust projects + + - name: Check formatting run: | - cd batcher + cd crates cargo fmt --all -- --check + - name: Run Clippy run: | - cd batcher + cd crates cargo clippy --all -- -D warnings - - name: Build Rust projects + + - name: Build Batcher + run: | + cd crates + cargo build --all + + - name: Check formatting of AggregationMode + run: | + cd aggregation_mode + cargo fmt --all -- --check + + - name: Build AggregationMode # We build before clippy to generate the ELF run: | - cd batcher + cd aggregation_mode cargo build --all + - name: Run Clippy on AggregationMode + run: | + cd aggregation_mode + # We need to skip the build as clippy does not support the riscv32im-risc0-zkvm-elf target + RISC0_SKIP_BUILD=1 cargo clippy --all -- -D warnings + test: runs-on: aligned-runner needs: build steps: - name: Checkout code uses: actions/checkout@v4 + - name: foundry-toolchain uses: foundry-rs/foundry-toolchain@v1.2.0 + + # Reference: https://github.com/succinctlabs/sp1/actions/runs/8886659400/workflow#L61-L65 + - name: Install sp1 toolchain + run: | + curl -L https://sp1.succinct.xyz | bash + source /home/runner/.bashrc + ~/.sp1/bin/sp1up + + - name: Install risc0 toolchain + run: | + curl -L https://risczero.com/install | bash + source ~/.bashrc + ~/.risc0/bin/rzup install + - name: Cache Rust dependencies uses: actions/cache@v3 with: path: | ~/.cargo/registry ~/.cargo/git - batcher/target + crates/target key: ${{ runner.os }}-rust-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-rust- - - name: Run tests + + - name: Run Batcher tests + run: | + cd crates + cargo test --all + + - name: Run AggregationMode tests run: | - cd batcher + cd aggregation_mode cargo test --all diff --git a/.github/workflows/build-contracts.yml b/.github/workflows/build-contracts.yml index 14c5889b15..033d2f86ef 100644 --- a/.github/workflows/build-contracts.yml +++ b/.github/workflows/build-contracts.yml @@ -1,7 +1,9 @@ name: Build contracts on: push: - branches: [main] + branches: + - testnet + - staging pull_request: branches: ["*"] paths: diff --git a/.github/workflows/foundry-gas-diff.yml b/.github/workflows/foundry-gas-diff.yml index be3529421b..287c863b3a 100644 --- a/.github/workflows/foundry-gas-diff.yml +++ b/.github/workflows/foundry-gas-diff.yml @@ -3,7 +3,8 @@ name: Report gas diff on: push: branches: - - main + - testnet + - staging pull_request: # Run only for changes in specific files. paths: diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 08fa8c2b3b..75da755b10 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -2,8 +2,8 @@ name: golangci-lint on: push: branches: - - master - - main + - testnet + - staging pull_request: paths: - 'operator/**' @@ -26,13 +26,13 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: '1.22' + go-version: '1.24' cache: false - name: golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v8 with: # Require: The version of golangci-lint to use. # When `install-mode` is `binary` (default) the value can be v1.2 or v1.2.3 or `latest` to use the latest version. # When `install-mode` is `goinstall` the value can be v1.2.3, `latest`, or the hash of a commit. - version: v1.54 + version: v2.1.6 args: --timeout=5m diff --git a/.github/workflows/lint-contracts.yml b/.github/workflows/lint-contracts.yml index 361e9e3c11..49aafc2c91 100644 --- a/.github/workflows/lint-contracts.yml +++ b/.github/workflows/lint-contracts.yml @@ -1,7 +1,9 @@ name: Lint contracts on: push: - branches: [main] + branches: + - testnet + - staging pull_request: branches: ["*"] paths: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 41cdc93600..8f7d33f335 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: run: make build_batcher_client - name: Rename binary - run: mv batcher/target/release/aligned ${{ matrix.artifact_name }} + run: mv crates/target/release/aligned ${{ matrix.artifact_name }} - name: Release uses: softprops/action-gh-release@v2 diff --git a/.github/workflows/test-merkle-tree.yml b/.github/workflows/test-merkle-tree.yml index 0f2fa0280e..098c6903bd 100644 --- a/.github/workflows/test-merkle-tree.yml +++ b/.github/workflows/test-merkle-tree.yml @@ -2,7 +2,9 @@ name: test-merkle-tree on: push: - branches: [main] + branches: + - testnet + - staging pull_request: branches: ["*"] paths: diff --git a/.github/workflows/test-risc-zero.yml b/.github/workflows/test-risc-zero.yml index 081fcdc512..b74b71d654 100644 --- a/.github/workflows/test-risc-zero.yml +++ b/.github/workflows/test-risc-zero.yml @@ -2,7 +2,9 @@ name: test-risc-zero on: push: - branches: [main] + branches: + - testnet + - staging pull_request: branches: ["*"] paths: diff --git a/.github/workflows/test-sp1.yml b/.github/workflows/test-sp1.yml index 23fe351cec..1ad763c9bf 100644 --- a/.github/workflows/test-sp1.yml +++ b/.github/workflows/test-sp1.yml @@ -2,7 +2,9 @@ name: test-sp1 on: push: - branches: [main] + branches: + - testnet + - staging pull_request: branches: ["*"] paths: diff --git a/.gitignore b/.gitignore index 4944f23252..e7f9acb0e1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,14 +6,38 @@ out cache **/build **/target +**/CLAUDE.md +CLAUDE.md scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/** -batcher/aligned/batch_inclusion_responses/* +crates/cli/batch_inclusion_responses/* **/aligned_verification_data **/broadcast volume +volume2 config-files/*.last_processed_batch.json +config-files/*.last_aggregated_block.json nonce_*.bin infra/ansible/playbooks/ini/**.ini infra/ansible/playbooks/files/**.pem + +examples/l2/crates/l2/db +examples/l2/crates/l2/zkvm_programs/sp1/elf/sp1_state_transition_program + +# Circom +*.ptau +challenge_0003 +response_0003 +challenge_phase2_0003 +circuit.r1cs +circuit.r1cs.json +circuit.sym +response_phase2_0003 +witness.wtns +*.zkey +circuit_cpp/ +circuit_js + +# Reports +docs/dead_links_report.txt diff --git a/.gitmodules b/.gitmodules index 7ebd195c02..397e401f79 100644 --- a/.gitmodules +++ b/.gitmodules @@ -31,3 +31,18 @@ [submodule "claim_contracts/lib/openzeppelin-contracts"] path = claim_contracts/lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts +[submodule "contracts/lib/sp1-contracts"] + path = contracts/lib/sp1-contracts + url = https://github.com/succinctlabs/sp1-contracts +[submodule "contracts/lib/risc0-ethereum"] + path = contracts/lib/risc0-ethereum + url = https://github.com/risc0/risc0-ethereum +[submodule "contracts/eigenlayer_contracts/eigenlayer-contracts"] + path = contracts/eigenlayer_contracts/eigenlayer-contracts + url = https://github.com/Layr-Labs/eigenlayer-contracts.git +[submodule "examples/l2/contracts/lib/forge-std"] + path = examples/l2/contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std +[submodule "examples/circom/contracts/lib/forge-std"] + path = examples/circom/contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std diff --git a/Makefile b/Makefile index 96c3971664..f3fbd2f2e1 100644 --- a/Makefile +++ b/Makefile @@ -3,13 +3,25 @@ SHELL := /bin/bash OS := $(shell uname -s) +NETWORK ?= devnet # devnet | holesky-stage | holesky +ifeq ($(NETWORK),holesky) + RPC_URL ?= https://ethereum-holesky-rpc.publicnode.com + BEACON_URL ?= https://eth-beacon-chain-holesky.drpc.org/rest/ +else ifeq ($(NETWORK), holesky-stage) + RPC_URL ?= https://ethereum-holesky-rpc.publicnode.com + BEACON_URL ?= https://eth-beacon-chain-holesky.drpc.org/rest/ +else + RPC_URL ?= http://localhost:8545 + BEACON_URL ?= http://localhost:58801 +endif + CONFIG_FILE?=config-files/config.yaml -export OPERATOR_ADDRESS ?= $(shell yq -r '.operator.address' $(CONFIG_FILE)) AGG_CONFIG_FILE?=config-files/config-aggregator.yaml -OPERATOR_VERSION=v0.14.0 +OPERATOR_VERSION=v0.20.0 +EIGEN_SDK_GO_VERSION_DEVNET=v0.2.0-beta.1 EIGEN_SDK_GO_VERSION_TESTNET=v0.2.0-beta.1 -EIGEN_SDK_GO_VERSION_MAINNET=v0.1.13 +EIGEN_SDK_GO_VERSION_MAINNET=v0.2.0-beta.1 ifeq ($(OS),Linux) BUILD_ALL_FFI = $(MAKE) build_all_ffi_linux @@ -20,16 +32,16 @@ ifeq ($(OS),Darwin) endif ifeq ($(OS),Linux) - export LD_LIBRARY_PATH+=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/mina/lib:$(CURDIR)/operator/mina_account/lib - OPERATOR_FFIS=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/mina/lib:$(CURDIR)/operator/mina_account/lib + export LD_LIBRARY_PATH+=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/sp1/lib:$(CURDIR)/operator/mina/lib:$(CURDIR)/operator/mina_account/lib + OPERATOR_FFIS=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/sp1/lib:$(CURDIR)/operator/mina/lib:$(CURDIR)/operator/mina_account/lib endif ifeq ($(OS),Linux) - BUILD_OPERATOR = $(MAKE) build_operator_linux + BUILD_OPERATOR = $(MAKE) operator_build_linux endif ifeq ($(OS),Darwin) - BUILD_OPERATOR = $(MAKE) build_operator_macos + BUILD_OPERATOR = $(MAKE) operator_build_macos endif ifeq ($(ENVIRONMENT), devnet) @@ -54,9 +66,11 @@ else endif help: - @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {if ($$1 ~ /^__/) printf "\033[33m%-50s\033[0m %s\n", $$1, $$2; else printf "\033[36m%-50s\033[0m %s\n", $$1, $$2}' + +__DEPENDENCIES__: ## ____ -submodules: +submodules: ## Initialize and update git submodules git submodule update --init --recursive @echo "Updated submodules" @@ -65,41 +79,73 @@ deps: submodules go_deps build_all_ffi ## Install deps go_deps: @echo "Installing Go dependencies..." go install github.com/maoueh/zap-pretty@v0.3.0 - go install github.com/ethereum/go-ethereum/cmd/abigen@latest - go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@latest + go install github.com/ethereum/go-ethereum/cmd/abigen@v1.14.0 + go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@v0.13.0 -install_foundry: +foundry_install: curl -L https://foundry.paradigm.xyz | bash -anvil_deploy_eigen_contracts: +eigenlayer_cli_install: ## Install Eigenlayer CLI v0.13.0 + curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s -- v0.13.0 + +__UTILS__: ## ____ + +bindings: ## Generate Go bindings for contracts + cd contracts && ./generate-go-bindings.sh + +lint_contracts: ## Lint Solidity contracts + @cd contracts && npm run lint:sol + +build_aligned_contracts: ## Build AlignedLayer contracts + @cd contracts/src/core && forge build --via-ir + +show_aligned_error_codes: ## Show AlignedLayer error codes + @echo "\nAlignedLayerServiceManager errors:" + @cd contracts && forge inspect src/core/IAlignedLayerServiceManager.sol:IAlignedLayerServiceManager errors + @echo "\nBatcherPaymentService errors:" + @cd contracts && forge inspect src/core/BatcherPaymentService.sol:BatcherPaymentService errors + +__CONTRACTS_DEPLOYMENT_ANVIL__: ## ____ + +anvil_deploy_all_contracts: anvil_deploy_eigen_contracts anvil_deploy_risc0_contracts anvil_deploy_sp1_contracts anvil_deploy_aligned_contracts + +anvil_deploy_eigen_contracts: ## Deploy EigenLayer Contracts on ANVIL @echo "Deploying Eigen Contracts..." . contracts/scripts/anvil/deploy_eigen_contracts.sh -anvil_deploy_aligned_contracts: +anvil_deploy_risc0_contracts: ## Deploy RISC0 Contracts used by Aggregation Mode on ANVIL + @echo "Deploying RISC0 Contracts..." + . contracts/scripts/anvil/deploy_risc0_contracts.sh + +anvil_deploy_sp1_contracts: ## Deploy SP1 Contracts used by Aggregation Mode on ANVIL + @echo "Deploying SP1 Contracts..." + . contracts/scripts/anvil/deploy_sp1_contracts.sh + +anvil_deploy_aligned_contracts: ## Deploy Aligned Contracts (Verification Layer and Aggregation Mode) on ANVIL @echo "Deploying Aligned Contracts..." . contracts/scripts/anvil/deploy_aligned_contracts.sh -anvil_upgrade_aligned_contracts: +anvil_upgrade_aligned_contracts: ## Upgrade Aligned Contracts (Verification Layer and Aggregation Mode) on ANVIL @echo "Upgrading Aligned Contracts..." . contracts/scripts/anvil/upgrade_aligned_contracts.sh -anvil_upgrade_batcher_payment_service: +anvil_upgrade_batcher_payment_service: ## Upgrade BatcherPaymentService contract on ANVIL @echo "Upgrading BatcherPayments contract..." . contracts/scripts/anvil/upgrade_batcher_payment_service.sh -anvil_upgrade_registry_coordinator: +anvil_upgrade_registry_coordinator: ## Upgrade Registry Coordinator Contracts on ANVIL @echo "Upgrading Registry Coordinator Contracts..." . contracts/scripts/anvil/upgrade_registry_coordinator.sh -anvil_upgrade_bls_apk_registry: +anvil_upgrade_bls_apk_registry: ## Upgrade Bls Apk Registry Contract on ANVIL @echo "Upgrading Bls Apk Registry Contract..." . contracts/scripts/anvil/upgrade_bls_apk_registry.sh -anvil_upgrade_stake_registry: +anvil_upgrade_stake_registry: ## Upgrade Stake Registry Contract on ANVIL @echo "Upgrading Stake Registry Contract..." . contracts/scripts/anvil/upgrade_stake_registry.sh -anvil_upgrade_index_registry: +anvil_upgrade_index_registry: ## Upgrade Index Registry Contracts on ANVIL @echo "Upgrading Index Registry Contracts..." . contracts/scripts/anvil/upgrade_index_registry.sh @@ -107,27 +153,29 @@ anvil_upgrade_add_aggregator: @echo "Adding Aggregator to Aligned Contracts..." . contracts/scripts/anvil/upgrade_add_aggregator_to_service_manager.sh -pause_all_aligned_service_manager: +__CONTRACTS_MANAGEMENT__: ## ____ + +pause_all_aligned_service_manager: ## Pause all Aligned Service Manager contracts @echo "Pausing all contracts..." . contracts/scripts/pause_aligned_service_manager.sh all -unpause_all_aligned_service_manager: +unpause_all_aligned_service_manager: ## Unpause all Aligned Service Manager contracts @echo "Pausing all contracts..." . contracts/scripts/unpause_aligned_service_manager.sh all -get_paused_state_aligned_service_manager: +get_paused_state_aligned_service_manager: ## Get paused state of Aligned Service Manager contracts @echo "Getting paused state of Aligned Service Manager contract..." . contracts/scripts/get_paused_state_aligned_service_manager.sh -pause_batcher_payment_service: +pause_batcher_payment_service: ## Pause BatcherPaymentService contract @echo "Pausing BatcherPayments contract..." . contracts/scripts/pause_batcher_payment_service.sh -unpause_batcher_payment_service: +unpause_batcher_payment_service: ## Unpause BatcherPaymentService contract @echo "Unpausing BatcherPayments contract..." . contracts/scripts/unpause_batcher_payment_service.sh -get_paused_state_batcher_payments_service: +get_paused_state_batcher_payments_service: ## Get paused state of BatcherPaymentService contract @echo "Getting paused state of Batcher Payments Service contract..." . contracts/scripts/get_paused_state_batcher_payments_service.sh @@ -135,34 +183,141 @@ anvil_upgrade_initialize_disable_verifiers: @echo "Initializing disabled verifiers..." . contracts/scripts/anvil/upgrade_disabled_verifiers_in_service_manager.sh -lint_contracts: - @cd contracts && npm run lint:sol +# The verifier ID to enable or disable corresponds to the index of the verifier in the `ProvingSystemID` enum. +verifier_enable_devnet: ## Enable a verifier on devnet + @echo "Enabling verifier with id: $(VERIFIER_ID)" + PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 RPC_URL=http://localhost:8545 OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/enable_verifier.sh $(VERIFIER_ID) -anvil_start: - @echo "Starting Anvil..." - anvil --load-state contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json +verifier_disable_devnet: ## Disable a verifier on devnet + @echo "Disabling verifier with id: $(VERIFIER_ID)" + PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 RPC_URL=http://localhost:8545 OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/disable_verifier.sh $(VERIFIER_ID) -anvil_start_with_block_time: +verifier_enable: ## Enable a verifier + @echo "Enabling verifier with ID: $(VERIFIER_ID)" + @. contracts/scripts/.env && . contracts/scripts/enable_verifier.sh $(VERIFIER_ID) + +verifier_disable: ## Disable a verifier + @echo "Disabling verifier with ID: $(VERIFIER_ID)" + @. contracts/scripts/.env && . contracts/scripts/disable_verifier.sh $(VERIFIER_ID) + +strategies_get_weight: ## Get the weight of a strategy + @echo "Getting weight of strategy: $(STRATEGY_INDEX)" + @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/get_strategy_weight.sh $(STRATEGY_INDEX) + +strategies_update_weight: ## TODO + @echo "Updating strategy weights: " + @echo "STRATEGY_INDICES: $(STRATEGY_INDICES)" + @echo "NEW_MULTIPLIERS: $(NEW_MULTIPLIERS)" + @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/update_strategy_weight.sh $(STRATEGY_INDICES) $(NEW_MULTIPLIERS) + +strategies_remove: ## TODO + @echo "Removing strategies: $(INDICES_TO_REMOVE)" + @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/remove_strategy.sh $(INDICES_TO_REMOVE) + +strategies_get_addresses: ## TODO + @echo "Getting strategy addresses" + @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/get_restakeable_strategies.sh + +__ANVIL__: ## ____ + +anvil_start: ## Start Anvil with pre-deployed state @echo "Starting Anvil..." anvil --load-state contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json --block-time 7 -anvil_start_with_block_time_with_more_prefunded_accounts: +anvil_start_with_more_prefunded_accounts: @echo "Starting Anvil..." anvil --load-state contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json --block-time 7 -a 2000 -_AGGREGATOR_: +__AGGREGATION_MODE__: ## ____ -build_aggregator: - $(GET_SDK_VERSION) - @echo "Building aggregator" - @go build -o ./build/aligned-aggregator ./aggregator/cmd/main.go +is_aggregator_set: + @if [ -z "$(AGGREGATOR)" ]; then \ + echo "Error: AGGREGATOR is not set. Please provide arg AGGREGATOR='sp1' or 'risc0'."; \ + exit 1; \ + fi + +reset_last_aggregated_block: + @echo "Resetting last aggregated block..." + @echo '{"last_aggregated_block":0}' > config-files/proof-aggregator.last_aggregated_block.json + +AGGREGATION_MODE_SOURCES = $(wildcard ./aggregation_mode/Cargo.toml) $(wildcard ./aggregation_mode/src/**) $(wildcard ./aggregation_mode/aggregation_programs/risc0/Cargo.toml) $(wildcard ./aggregation_mode/aggregation_programs/risc0/src/**) $(wildcard ./aggregation_mode/aggregation_programs/sp1/Cargo.toml) $(wildcard ./aggregation_mode/aggregation_programs/sp1/src/**) + +### All Dev proof aggregator receipts with no real proving +./aggregation_mode/target/release/proof_aggregator_dev: $(AGGREGATION_MODE_SOURCES) + AGGREGATOR=$(AGGREGATOR) cargo build --manifest-path ./aggregation_mode/Cargo.toml --release --bin proof_aggregator_dev + +proof_aggregator_start_dev: is_aggregator_set reset_last_aggregated_block ./aggregation_mode/target/release/proof_aggregator_dev ## Starts proof aggregator with mock proofs (DEV mode). Parameters: AGGREGATOR= + AGGREGATOR=$(AGGREGATOR) RISC0_DEV_MODE=1 ./aggregation_mode/target/release/proof_aggregator_dev config-files/config-proof-aggregator-mock.yaml + +proof_aggregator_start_dev_ethereum_package: is_aggregator_set reset_last_aggregated_block ./aggregation_mode/target/release/proof_aggregator_dev ## Starts proof aggregator with mock proofs (DEV mode) in ethereum package. Parameters: AGGREGATOR= + AGGREGATOR=$(AGGREGATOR) RISC0_DEV_MODE=1 ./aggregation_mode/target/release/proof_aggregator_dev config-files/config-proof-aggregator-mock-ethereum-package.yaml -aggregator_start: +### All CPU proof aggregator receipts +./aggregation_mode/target/release/proof_aggregator_cpu: $(AGGREGATION_MODE_SOURCES) + AGGREGATOR=$(AGGREGATOR) cargo build --features prove --manifest-path ./aggregation_mode/Cargo.toml --release --bin proof_aggregator_cpu + +proof_aggregator_start: is_aggregator_set reset_last_aggregated_block ./aggregation_mode/target/release/proof_aggregator_cpu ## Starts proof aggregator with proving activated. Parameters: AGGREGATOR= + AGGREGATOR=$(AGGREGATOR) ./aggregation_mode/target/release/proof_aggregator_cpu config-files/config-proof-aggregator.yaml + +proof_aggregator_start_ethereum_package: is_aggregator_set reset_last_aggregated_block ./aggregation_mode/target/release/proof_aggregator_cpu ## Starts proof aggregator with proving activated in ethereum package. Parameters: AGGREGATOR= + AGGREGATOR=$(AGGREGATOR) ./aggregation_mode/target/release/proof_aggregator_cpu config-files/config-proof-aggregator-ethereum-package.yaml + +### All GPU proof aggregator receipts +./aggregation_mode/target/release/proof_aggregator_gpu: $(AGGREGATION_MODE_SOURCES) + AGGREGATOR=$(AGGREGATOR) cargo build --features "prove,gpu" --manifest-path ./aggregation_mode/Cargo.toml --release --bin proof_aggregator_gpu + +proof_aggregator_start_gpu: is_aggregator_set reset_last_aggregated_block ./aggregation_mode/target/release/proof_aggregator_gpu ## Starts proof aggregator with proving + GPU acceleration (CUDA). Parameters: AGGREGATOR= + AGGREGATOR=$(AGGREGATOR) SP1_PROVER=cuda ./aggregation_mode/target/release/proof_aggregator_gpu config-files/config-proof-aggregator.yaml + +proof_aggregator_start_gpu_ethereum_package: is_aggregator_set reset_last_aggregated_block ./aggregation_mode/target/release/proof_aggregator_gpu ## Starts proof aggregator with proving activated in ethereum package. Parameters: AGGREGATOR= + AGGREGATOR=$(AGGREGATOR) SP1_PROVER=cuda ./aggregation_mode/target/release/proof_aggregator_gpu config-files/config-proof-aggregator-ethereum-package.yaml + +verify_aggregated_proof_sp1: + @echo "Verifying SP1 in aggregated proofs on $(NETWORK)..." + @cd crates/cli/ && \ + cargo run verify-agg-proof \ + --network $(NETWORK) \ + --from-block $(FROM_BLOCK) \ + --proving_system SP1 \ + --public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \ + --program-id-file ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.vk \ + --beacon_url $(BEACON_URL) \ + --rpc_url $(RPC_URL) + +verify_aggregated_proof_risc0: + @echo "Verifying RISC0 in aggregated proofs on $(NETWORK)..." + @cd crates/cli/ && \ + cargo run verify-agg-proof \ + --network $(NETWORK) \ + --from-block $(FROM_BLOCK) \ + --proving_system Risc0 \ + --program-id-file ../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ + --public_input ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub \ + --beacon_url $(BEACON_URL) \ + --rpc_url $(RPC_URL) + +proof_aggregator_install: ## Install the aggregation mode with proving enabled + cargo install --path aggregation_mode --features prove,gpu --bin proof_aggregator_gpu --locked + +proof_aggregator_write_program_ids: ## Write proof aggregator zkvm programs ids + @cd aggregation_mode && ./scripts/build_programs.sh + +__AGGREGATOR__: ## ____ + +aggregator_start: ## Start the Aggregator. Parameters: ENVIRONMENT=, AGG_CONFIG_FILE $(GET_SDK_VERSION) @echo "Starting Aggregator..." @go run aggregator/cmd/main.go --config $(AGG_CONFIG_FILE) \ 2>&1 | zap-pretty +aggregator_start_ethereum_package: ## Start the Aggregator with Ethereum package config. Parameters: ENVIRONMENT=, AGG_CONFIG_FILE + $(MAKE) aggregator_start AGG_CONFIG_FILE=config-files/config-aggregator-ethereum-package.yaml + +aggregator_build: ## Build the Aggregator. Parameters: ENVIRONMENT= + $(GET_SDK_VERSION) + @echo "Building aggregator" + @go build -o ./build/aligned-aggregator ./aggregator/cmd/main.go + aggregator_send_dummy_responses: @echo "Sending dummy responses to Aggregator..." @cd aggregator && go run dummy/submit_task_responses.go @@ -171,19 +326,24 @@ test_go_retries: @cd core/ && \ go test -v -timeout 15m -__OPERATOR__: +__OPERATOR__: ## ____ -operator_start: +operator_start: ## Start the Operator. Parameters: ENVIRONMENT=, CONFIG_FILE $(GET_SDK_VERSION) @echo "Starting Operator..." go run operator/cmd/main.go start --config $(CONFIG_FILE) \ 2>&1 | zap-pretty +operator_start_ethereum_package: ## Start the Operator with Ethereum package config + $(MAKE) operator_start ENVIRONMENT=devnet CONFIG_FILE=config-files/config-operator-1-ethereum-package.yaml + operator_set_eigen_sdk_go_version_testnet: @echo "Setting Eigen SDK version to: $(EIGEN_SDK_GO_VERSION_TESTNET)" go get github.com/Layr-Labs/eigensdk-go@$(EIGEN_SDK_GO_VERSION_TESTNET) -operator_set_eigen_sdk_go_version_devnet: operator_set_eigen_sdk_go_version_mainnet +operator_set_eigen_sdk_go_version_devnet: + @echo "Setting Eigen SDK version to: $(EIGEN_SDK_GO_VERSION_DEVNET)" + go get github.com/Layr-Labs/eigensdk-go@$(EIGEN_SDK_GO_VERSION_DEVNET) operator_set_eigen_sdk_go_version_mainnet: @echo "Setting Eigen SDK version to: $(EIGEN_SDK_GO_VERSION_MAINNET)" @@ -193,29 +353,39 @@ operator_set_eigen_sdk_go_version_error: @echo "Error setting Eigen SDK version, missing ENVIRONMENT. Possible values for ENVIRONMENT=" exit 1 -operator_full_registration: operator_get_eth operator_register_with_eigen_layer operator_mint_mock_tokens operator_deposit_into_mock_strategy operator_whitelist_devnet operator_register_with_aligned_layer +operator_full_registration: operator_get_eth operator_register_with_eigen_layer operator_mint_mock_tokens operator_deposit_into_mock_strategy operator_whitelist_devnet operator_register_with_aligned_layer ## Register the operator in EigenLayer and AlignedLayer. Parameters: ENVIRONMENT=, CONFIG_FILE -operator_register_and_start: $(GET_SDK_VERSION) operator_full_registration operator_start +operator_full_registration_and_start: ## Register the operator in EigenLayer and AlignedLayer, then start the Operator. Parameters: ENVIRONMENT=, CONFIG_FILE + @echo "Operator address: $$(yq -r '.operator.address' $$CONFIG_FILE)" && \ + $(MAKE) operator_full_registration CONFIG_FILE=$(CONFIG_FILE) && \ + $(MAKE) operator_start ENVIRONMENT=devnet CONFIG_FILE=$(CONFIG_FILE) -build_operator: deps +operator_full_registration_and_start_ethereum_package: ## Register the operator in EigenLayer and AlignedLayer, then start the Operator with Ethereum package config + @export CONFIG_FILE=config-files/config-operator-1-ethereum-package.yaml && \ + echo "Operator address: $$(yq -r '.operator.address' $$CONFIG_FILE)" && \ + $(MAKE) operator_full_registration CONFIG_FILE=$$CONFIG_FILE && \ + $(MAKE) operator_start ENVIRONMENT=devnet CONFIG_FILE=$$CONFIG_FILE + + +operator_build: deps ## Build the Operator. Parameters: ENVIRONMENT= $(GET_SDK_VERSION) $(BUILD_OPERATOR) -build_operator_macos: +operator_build_macos: @echo "Building Operator..." @go build -ldflags "-X main.Version=$(OPERATOR_VERSION)" -o ./operator/build/aligned-operator ./operator/cmd/main.go @echo "Operator built into /operator/build/aligned-operator" -build_operator_linux: +operator_build_linux: @echo "Building Operator..." @go build -ldflags "-X main.Version=$(OPERATOR_VERSION) -r $(OPERATOR_FFIS)" -o ./operator/build/aligned-operator ./operator/cmd/main.go @echo "Operator built into /operator/build/aligned-operator" -update_operator: +operator_update: ## Update the Operator to the latest version and build it. Parameters: ENVIRONMENT= $(GET_SDK_VERSION) @echo "Updating Operator..." @./scripts/fetch_latest_release.sh - @make build_operator + @make operator_build @./operator/build/aligned-operator --version operator_valid_marshall_fuzz_macos: @@ -232,13 +402,9 @@ operator_marshall_unmarshall_fuzz_linux: @cd operator/pkg && \ go test -fuzz=FuzzMarshalUnmarshal -bindings: - cd contracts && ./generate-go-bindings.sh - test: go test ./... -timeout 15m - get_delegation_manager_address: @sed -n 's/.*"delegationManager": "\([^"]*\)".*/\1/p' contracts/script/output/devnet/eigenlayer_deployment_output.json @@ -254,7 +420,8 @@ operator_generate_config: operator_get_eth: @echo "Sending funds to operator address on devnet" - @. ./scripts/fund_operator_devnet.sh + @OPERATOR_ADDRESS=$$(yq -r '.operator.address' $(CONFIG_FILE)) && \ + . ./scripts/fund_operator_devnet.sh operator_register_with_eigen_layer: @echo "Registering operator with EigenLayer" @@ -262,35 +429,39 @@ operator_register_with_eigen_layer: operator_mint_mock_tokens: @echo "Minting tokens" + @OPERATOR_ADDRESS=$$(yq -r '.operator.address' $(CONFIG_FILE)) && \ . ./scripts/mint_mock_token.sh $(CONFIG_FILE) 100000000000000000 operator_whitelist_devnet: @echo "Whitelisting operator" - @echo "Operator address: $(OPERATOR_ADDRESS)" - RPC_URL="http://localhost:8545" PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/operator_whitelist.sh $(OPERATOR_ADDRESS) + @OPERATOR_ADDRESS=$$(yq -r '.operator.address' $(CONFIG_FILE)) && \ + echo "Operator address: $$OPERATOR_ADDRESS" && \ + RPC_URL="http://localhost:8545" PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/operator_whitelist.sh $$OPERATOR_ADDRESS operator_remove_from_whitelist_devnet: @echo "Removing operator" - @echo "Operator address: $(OPERATOR_ADDRESS)" - RPC_URL="http://localhost:8545" PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/operator_remove_from_whitelist.sh $(OPERATOR_ADDRESS) + @OPERATOR_ADDRESS=$$(yq -r '.operator.address' $(CONFIG_FILE)) && \ + echo "Operator address: $$OPERATOR_ADDRESS" && \ + RPC_URL="http://localhost:8545" PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/operator_remove_from_whitelist.sh $$OPERATOR_ADDRESS operator_whitelist: - @echo "Whitelisting operator $(OPERATOR_ADDRESS)" - @. contracts/scripts/.env && . contracts/scripts/operator_whitelist.sh $(OPERATOR_ADDRESS) + @OPERATOR_ADDRESS=$$(yq -r '.operator.address' $(CONFIG_FILE)) && \ + echo "Whitelisting operator $$OPERATOR_ADDRESS on $(NETWORK)" && \ + . contracts/scripts/.env.$(NETWORK) && . contracts/scripts/operator_whitelist.sh $$OPERATOR_ADDRESS operator_remove_from_whitelist: - @echo "Removing operator $(OPERATOR_ADDRESS)" - @. contracts/scripts/.env && . contracts/scripts/operator_remove_from_whitelist.sh $(OPERATOR_ADDRESS) + @OPERATOR_ADDRESS=$$(yq -r '.operator.address' $(CONFIG_FILE)) && \ + echo "Removing operator $$OPERATOR_ADDRESS" && \ + . contracts/scripts/.env && . contracts/scripts/operator_remove_from_whitelist.sh $$OPERATOR_ADDRESS operator_deposit_into_mock_strategy: @echo "Depositing into mock strategy" - $(eval STRATEGY_ADDRESS = $(shell jq -r '.addresses.strategies.MOCK' contracts/script/output/devnet/eigenlayer_deployment_output.json)) + $(eval STRATEGY_ADDRESS = $(shell jq -r '.addresses.strategies.WETH' contracts/script/output/devnet/eigenlayer_deployment_output.json)) @go run operator/cmd/main.go deposit-into-strategy \ --config $(CONFIG_FILE) \ --strategy-address $(STRATEGY_ADDRESS) \ --amount 100000000000000000 - AMOUNT ?= 1000 operator_deposit_into_strategy: @@ -305,294 +476,328 @@ operator_register_with_aligned_layer: @go run operator/cmd/main.go register \ --config $(CONFIG_FILE) -operator_deposit_and_register: operator_deposit_into_strategy operator_register_with_aligned_layer - - -# The verifier ID to enable or disable corresponds to the index of the verifier in the `ProvingSystemID` enum. -verifier_enable_devnet: - @echo "Enabling verifier with id: $(VERIFIER_ID)" - PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 RPC_URL=http://localhost:8545 OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/enable_verifier.sh $(VERIFIER_ID) - -verifier_disable_devnet: - @echo "Disabling verifier with id: $(VERIFIER_ID)" - PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 RPC_URL=http://localhost:8545 OUTPUT_PATH=./script/output/devnet/alignedlayer_deployment_output.json ./contracts/scripts/disable_verifier.sh $(VERIFIER_ID) - -verifier_enable: - @echo "Enabling verifier with ID: $(VERIFIER_ID)" - @. contracts/scripts/.env && . contracts/scripts/enable_verifier.sh $(VERIFIER_ID) - -verifier_disable: - @echo "Disabling verifier with ID: $(VERIFIER_ID)" - @. contracts/scripts/.env && . contracts/scripts/disable_verifier.sh $(VERIFIER_ID) - -strategies_get_weight: - @echo "Getting weight of strategy: $(STRATEGY_INDEX)" - @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/get_strategy_weight.sh $(STRATEGY_INDEX) - -strategies_update_weight: - @echo "Updating strategy weights: " - @echo "STRATEGY_INDICES: $(STRATEGY_INDICES)" - @echo "NEW_MULTIPLIERS: $(NEW_MULTIPLIERS)" - @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/update_strategy_weight.sh $(STRATEGY_INDICES) $(NEW_MULTIPLIERS) - -strategies_remove: - @echo "Removing strategies: $(INDICES_TO_REMOVE)" - @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/remove_strategy.sh $(INDICES_TO_REMOVE) - -strategies_get_addresses: - @echo "Getting strategy addresses" - @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/get_restakeable_strategies.sh - -__BATCHER__: +__BATCHER__: ## ____ BURST_SIZE ?= 5 user_fund_payment_service: @. ./scripts/user_fund_payment_service_devnet.sh -./batcher/aligned-batcher/.env: - @echo "To start the Batcher ./batcher/aligned-batcher/.env needs to be manually set"; false; +./crates/batcher/.env: + @echo "To start the Batcher ./crates/batcher/.env needs to be manually set"; false; -batcher_start: ./batcher/aligned-batcher/.env user_fund_payment_service +batcher_start: ./crates/batcher/.env user_fund_payment_service @echo "Starting Batcher..." - @cargo run --manifest-path ./batcher/aligned-batcher/Cargo.toml --release -- --config ./config-files/config-batcher.yaml --env-file ./batcher/aligned-batcher/.env + @cargo run --manifest-path ./crates/batcher/Cargo.toml --release -- --config ./config-files/config-batcher.yaml --env-file ./crates/batcher/.env -batcher_start_local: user_fund_payment_service +batcher_start_local: user_fund_payment_service ## Start the Batcher locally. It runs LocalStack as S3 service. @echo "Starting Batcher..." - @$(MAKE) run_storage & - @cargo run --manifest-path ./batcher/aligned-batcher/Cargo.toml --release -- --config ./config-files/config-batcher.yaml --env-file ./batcher/aligned-batcher/.env.dev + @$(MAKE) storage_start & + @cargo run --manifest-path ./crates/batcher/Cargo.toml --release -- --config ./config-files/config-batcher.yaml --env-file ./crates/batcher/.env.dev batcher_start_local_no_fund: @echo "Starting Batcher..." - @$(MAKE) run_storage & - @cargo run --manifest-path ./batcher/aligned-batcher/Cargo.toml --release -- --config ./config-files/config-batcher.yaml --env-file ./batcher/aligned-batcher/.env.dev + @$(MAKE) storage_start & + @cargo run --manifest-path ./crates/batcher/Cargo.toml --release -- --config ./config-files/config-batcher.yaml --env-file ./crates/batcher/.env.dev + +batcher_start_ethereum_package: user_fund_payment_service ## Start the Batcher with Ethereum package config. It runs LocalStack as S3 service. + @echo "Starting Batcher..." + @$(MAKE) storage_start & + @cargo run --manifest-path ./crates/batcher/Cargo.toml --release -- --config ./config-files/config-batcher-ethereum-package.yaml --env-file ./crates/batcher/.env.dev + + +batcher_install: ## Install latest version of Batcher + @cargo install --path crates/batcher -install_batcher: - @cargo install --path batcher/aligned-batcher +__STORAGE__: ## ____ +storage_start: ## Run S3-storage using storage-docker-compose.yaml + @echo "Running storage..." + @docker compose -f storage-docker-compose.yaml up -install_aligned: - @./batcher/aligned/install_aligned.sh +__ALIGNED_CLI__: ## ____ -uninstall_aligned: +aligned_install: ## Install latest version of Aligned CLI + @./crates/cli/install_aligned.sh + +aligned_uninstall: ## Uninstall Aligned CLI @rm -rf ~/.aligned && echo "Aligned uninstalled" -install_aligned_compiling: - @cargo install --path batcher/aligned +aligned_install_compiling: ## Install Aligned CLI by compiling from source + @cargo install --path crates/cli build_batcher_client: - @cd batcher/aligned && cargo b --release - -batcher/target/release/aligned: - @cd batcher/aligned && cargo b --release + @cd crates/cli && cargo build --release +__SEND_PROOFS__: ## ____ -RPC_URL=http://localhost:8545 -NETWORK=devnet # devnet | holesky-stage | holesky +crates/target/release/aligned: + @cd crates/cli && cargo b --release -batcher_send_sp1_task: - @echo "Sending SP1 fibonacci task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_sp1_task: ## Send a SP1 fibonacci proof to Batcher. Parameters: RPC_URL, NETWORK + @echo "Sending SP1 fibonacci proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system SP1 \ - --proof ../../scripts/test_files/sp1/sp1_fibonacci.proof \ - --vm_program ../../scripts/test_files/sp1/sp1_fibonacci.elf \ + --proof ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \ + --vm_program ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \ + --public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_sp1_burst: - @echo "Sending SP1 fibonacci task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_sp1_burst: ## Send a burst of SP1 fibonacci proofs to Batcher. Parameters: RPC_URL, NETWORK, BURST_SIZE + @echo "Sending SP1 fibonacci proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system SP1 \ - --proof ../../scripts/test_files/sp1/sp1_fibonacci.proof \ - --vm_program ../../scripts/test_files/sp1/sp1_fibonacci.elf \ - --repetitions $(BURST_SIZE) \ + --proof ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \ + --vm_program ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \ + --public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --repetitions $(BURST_SIZE) \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_infinite_sp1: - @echo "Sending infinite SP1 fibonacci task to Batcher..." - @./batcher/aligned/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh +batcher_send_sp1_infinite: ## Send burst of SP1 fibonacci proofs to Batcher every certain time + @echo "Sending infinite SP1 fibonacci proofs to Batcher..." + @./crates/cli/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh -batcher_send_risc0_task: - @echo "Sending Risc0 fibonacci task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_risc0_task: ## Send a Risc0 fibonacci proof to Batcher. Parameters: RPC_URL, NETWORK + @echo "Sending Risc0 fibonacci proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system Risc0 \ - --proof ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.proof \ - --vm_program ../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id.bin \ - --public_input ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.pub \ + --proof ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof \ + --vm_program ../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ + --public_input ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_risc0_task_no_pub_input: - @echo "Sending Risc0 fibonacci task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_risc0_task_no_pub_input: ## Send a Risc0 proof without public input to Batcher. Parameters: RPC_URL, NETWORK + @echo "Sending Risc0 no pub input proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system Risc0 \ - --proof ../../scripts/test_files/risc_zero/no_public_inputs/risc_zero_no_pub_input.proof \ - --vm_program ../../scripts/test_files/risc_zero/no_public_inputs/no_pub_input_id.bin \ + --proof ../../scripts/test_files/risc_zero/no_public_inputs/risc_zero_no_pub_input_3_0_3.proof \ + --vm_program ../../scripts/test_files/risc_zero/no_public_inputs/risc_zero_no_pub_input_id_3_0_3.bin \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_risc0_burst: - @echo "Sending Risc0 fibonacci task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_risc0_burst: ## Send a burst of Risc0 fibonacci proofs to Batcher. Parameters: RPC_URL, NETWORK, BURST_SIZE + @echo "Sending Risc0 fibonacci proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system Risc0 \ - --proof ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.proof \ - --vm_program ../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id.bin \ - --public_input ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.pub \ - --repetitions $(BURST_SIZE) \ + --proof ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof \ + --vm_program ../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ + --public_input ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --repetitions $(BURST_SIZE) \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_plonk_bn254_task: batcher/target/release/aligned - @echo "Sending Groth16Bn254 1!=0 task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_gnark_plonk_bn254_task: crates/target/release/aligned ## Send a Gnark Plonk Bn254 1!=0 proof to Batcher. Parameters: RPC_URL, NETWORK + @echo "Sending Gnark Plonk Bn254 1!=0 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system GnarkPlonkBn254 \ - --proof ../../scripts/test_files/gnark_plonk_bn254_script/plonk.proof \ - --public_input ../../scripts/test_files/gnark_plonk_bn254_script/plonk_pub_input.pub \ - --vk ../../scripts/test_files/gnark_plonk_bn254_script/plonk.vk \ + --proof ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_pub_input_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.vk \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_plonk_bn254_burst: batcher/target/release/aligned - @echo "Sending Groth16Bn254 1!=0 task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_gnark_plonk_bn254_burst: crates/target/release/aligned ## Send a burst of Gnark Plonk Bn254 1!=0 proofs to Batcher. Parameters: RPC_URL, NETWORK, BURST_SIZE + @echo "Sending Gnark Plonk Bn254 1!=0 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system GnarkPlonkBn254 \ - --proof ../../scripts/test_files/gnark_plonk_bn254_script/plonk.proof \ - --public_input ../../scripts/test_files/gnark_plonk_bn254_script/plonk_pub_input.pub \ - --vk ../../scripts/test_files/gnark_plonk_bn254_script/plonk.vk \ + --proof ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_pub_input_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.vk \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ - --rpc_url $(RPC_URL) \ --repetitions $(BURST_SIZE) \ + --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_plonk_bls12_381_task: batcher/target/release/aligned - @echo "Sending Groth16 BLS12-381 1!=0 task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_gnark_plonk_bls12_381_task: crates/target/release/aligned ## Send a Gnark Plonk BLS12-381 1!=0 proof to Batcher. Parameters: RPC_URL, NETWORK + @echo "Sending Gnark Plonk BLS12-381 1!=0 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system GnarkPlonkBls12_381 \ - --proof ../../scripts/test_files/gnark_plonk_bls12_381_script/plonk.proof \ - --public_input ../../scripts/test_files/gnark_plonk_bls12_381_script/plonk_pub_input.pub \ - --vk ../../scripts/test_files/gnark_plonk_bls12_381_script/plonk.vk \ + --proof ../../scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_pub_input_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.vk \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_plonk_bls12_381_burst: batcher/target/release/aligned - @echo "Sending Groth16 BLS12-381 1!=0 task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ +batcher_send_gnark_plonk_bls12_381_burst: crates/target/release/aligned ## Send a burst of Gnark Plonk BLS12-381 1!=0 proofs to Batcher. Parameters: RPC_URL, NETWORK, BURST_SIZE + @echo "Sending Gnark Plonk BLS12-381 1!=0 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ --proving_system GnarkPlonkBls12_381 \ - --proof ../../scripts/test_files/gnark_plonk_bls12_381_script/plonk.proof \ - --public_input ../../scripts/test_files/gnark_plonk_bls12_381_script/plonk_pub_input.pub \ - --vk ../../scripts/test_files/gnark_plonk_bls12_381_script/plonk.vk \ + --proof ../../scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_pub_input_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.vk \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ - --repetitions 15 \ + --repetitions $(BURST_SIZE) \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_groth16_bn254_task: batcher/target/release/aligned - @echo "Sending Groth16Bn254 1!=0 task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ - --proving_system Groth16Bn254 \ - --proof ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_1_groth16.proof \ - --public_input ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_1_groth16.pub \ - --vk ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_1_groth16.vk \ +batcher_send_gnark_groth16_bn254_task: crates/target/release/aligned ## Send a Gnark Groth16 Bn254 1!=0 proof to Batcher. Parameters: RPC_URL, NETWORK + @echo "Sending Gnark Groth 16Bn254 1!=0 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ + --proving_system GnarkGroth16Bn254 \ + --proof ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.vk \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ --rpc_url $(RPC_URL) \ --network $(NETWORK) -batcher_send_infinite_groth16: batcher/target/release/aligned ## Send a different Groth16 BN254 proof using the client every 3 seconds - @mkdir -p scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs - @echo "Sending a different GROTH16 BN254 proof in a loop every n seconds..." - @./batcher/aligned/send_infinite_tasks.sh 4 +batcher_send_gnark_groth16_bn254_burst: crates/target/release/aligned ## Send a burst of Gnark Groth16 Bn254 1!=0 proofs to Batcher. Parameters: RPC_URL, NETWORK, BURST_SIZE + @echo "Sending Gnark Groth16 Bn254 1!=0 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ + --proving_system GnarkGroth16Bn254 \ + --proof ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.vk \ + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --repetitions $(BURST_SIZE) \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) -batcher_send_burst_groth16: batcher/target/release/aligned - @echo "Sending a burst of tasks to Batcher..." +## TODO: send_burst_tasks.sh and send_infinite_tasks.sh does a similar thing. We could delete one +batcher_send_gnark_groth16_bn254_infinite: crates/target/release/aligned ## Send a different Gnark Groth16 BN254 proof using the client every 3 seconds. Parameters: BURST_SIZE, START_COUNTER + @echo "Sending a burst of proofs to Batcher..." @mkdir -p scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs - @./batcher/aligned/send_burst_tasks.sh $(BURST_SIZE) $(START_COUNTER) + @./crates/cli/send_burst_tasks.sh $(BURST_SIZE) $(START_COUNTER) + +batcher_send_circom_groth16_bn256_task: crates/target/release/aligned ## Send a Circom Groth16 BN256 proof to Batcher. Parameters: RPC_URL, NETWORK + @echo "Sending Circom Groth16 BN256 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ + --proving_system CircomGroth16Bn256 \ + --proof ../../scripts/test_files/circom_groth16_bn256_script/proof.json \ + --public_input ../../scripts/test_files/circom_groth16_bn256_script/public.json \ + --vk ../../scripts/test_files/circom_groth16_bn256_script/verification_key.json \ + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) + +batcher_send_circom_groth16_bn256_burst: crates/target/release/aligned ## Send a burst of Circom Groth16 BN256 proofs to Batcher. Parameters: RPC_URL, NETWORK, BURST_SIZE + @echo "Sending Circom Groth16 BN256 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ + --proving_system CircomGroth16Bn256 \ + --proof ../../scripts/test_files/circom_groth16_bn256_script/proof.json \ + --public_input ../../scripts/test_files/circom_groth16_bn256_script/public.json \ + --vk ../../scripts/test_files/circom_groth16_bn256_script/verification_key.json \ + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --repetitions $(BURST_SIZE) \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) + +batcher_send_circom_groth16_bn256_no_pub_input_burst: crates/target/release/aligned ## Send a burst of Circom Groth16 BN256 proofs to Batcher. Parameters: RPC_URL, NETWORK, BURST_SIZE + @echo "Sending Circom Groth16 BN256 proof to Batcher..." + @cd crates/cli/ && cargo run --release -- submit \ + --proving_system CircomGroth16Bn256 \ + --proof ../../scripts/test_files/circom_groth16_bn256_no_pub_input_script/proof.json \ + --public_input ../../scripts/test_files/circom_groth16_bn256_no_pub_input_script/public.json \ + --vk ../../scripts/test_files/circom_groth16_bn256_no_pub_input_script/verification_key.json \ + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --repetitions $(BURST_SIZE) \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) batcher_send_mina_task: @echo "Sending Mina state task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ + @cd crates/cli/ && cargo run --release -- submit \ --proving_system Mina \ --proof ../../scripts/test_files/mina/devnet_mina_state.proof \ --public_input ../../scripts/test_files/mina/devnet_mina_state.pub \ - --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) batcher_send_mina_task_bad_hash: @echo "Sending Mina state task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ + @cd crates/cli/ && cargo run --release -- submit \ --proving_system Mina \ --proof ../../scripts/test_files/mina/devnet_mina_state.proof \ --public_input ../../scripts/test_files/mina/mina_state_bad_hash.pub \ - --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) batcher_send_mina_burst: @echo "Sending Mina state task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ + @cd crates/cli/ && cargo run --release -- submit \ --proving_system Mina \ --proof ../../scripts/test_files/mina/devnet_mina_state.proof \ --public_input ../../scripts/test_files/mina/devnet_mina_state.pub \ - --repetitions 15 \ - --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --repetitions $(BURST_SIZE) \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) batcher_send_mina_account_task: @echo "Sending Mina account task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ + @cd crates/cli/ && cargo run --release -- submit \ --proving_system MinaAccount \ --proof ../../scripts/test_files/mina_account/mina_account.proof \ --public_input ../../scripts/test_files/mina_account/mina_account.pub \ - --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) batcher_send_mina_account_burst: @echo "Sending Mina account task to Batcher..." - @cd batcher/aligned/ && cargo run --release -- submit \ + @cd crates/cli/ && cargo run --release -- submit \ --proving_system MinaAccount \ --proof ../../scripts/test_files/mina_account/mina_account.proof \ --public_input ../../scripts/test_files/mina_account/mina_account.pub \ - --repetitions 15 \ - --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 + --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ + --repetitions $(BURST_SIZE) \ + --rpc_url $(RPC_URL) \ + --network $(NETWORK) + +batcher_send_proof_with_random_address: ## Send a proof with a random address to Batcher. Parameters: RPC_URL, NETWORK, PROOF_TYPE, REPETITIONS + @cd crates/cli/ && ./send_proof_with_random_address.sh + +batcher_send_burst_with_random_address: ## Send a burst of proofs with random addresses to Batcher. Parameters: RPC_URL, NETWORK, PROOF_TYPE, REPETITIONS + @cd crates/cli/ && ./send_burst_with_random_address.sh __TASK_SENDER__: BURST_TIME_SECS ?= 3 -task_sender_generate_groth16_proofs: - @cd batcher/aligned-task-sender && \ +task_sender_generate_gnark_groth16_proofs: + @cd crates/task-sender && \ cargo run --release -- generate-proofs \ - --number-of-proofs $(NUMBER_OF_PROOFS) --proof-type groth16 \ + --number-of-proofs $(NUMBER_OF_PROOFS) --proof-type gnark_groth16 \ --dir-to-save-proofs $(CURDIR)/scripts/test_files/task_sender/proofs # ===== DEVNET ===== task_sender_fund_wallets_devnet: - @cd batcher/aligned-task-sender && \ + @cd crates/task-sender && \ cargo run --release -- generate-and-fund-wallets \ --eth-rpc-url http://localhost:8545 \ --network devnet \ --amount-to-deposit 1 \ --amount-to-deposit-to-aligned 0.9999 \ - --private-keys-filepath $(CURDIR)/batcher/aligned-task-sender/wallets/devnet + --private-keys-filepath $(CURDIR)/crates/task-sender/wallets/devnet task_sender_send_infinite_proofs_devnet: - @cd batcher/aligned-task-sender && \ + @cd crates/task-sender && \ cargo run --release -- send-infinite-proofs \ --burst-size $(BURST_SIZE) --burst-time-secs $(BURST_TIME_SECS) \ --eth-rpc-url http://localhost:8545 \ --network devnet \ --proofs-dirpath $(CURDIR)/scripts/test_files/task_sender/proofs \ - --private-keys-filepath $(CURDIR)/batcher/aligned-task-sender/wallets/devnet + --private-keys-filepath $(CURDIR)/crates/task-sender/wallets/devnet task_sender_test_connections_devnet: - @cd batcher/aligned-task-sender && \ + @cd crates/task-sender && \ cargo run --release -- test-connections \ --num-senders $(NUM_SENDERS) \ --network devnet # ===== HOLESKY-STAGE ===== task_sender_generate_and_fund_wallets_holesky_stage: - @cd batcher/aligned-task-sender && \ + @cd crates/task-sender && \ cargo run --release -- generate-and-fund-wallets \ --eth-rpc-url https://ethereum-holesky-rpc.publicnode.com \ --network holesky-stage \ @@ -600,73 +805,86 @@ task_sender_generate_and_fund_wallets_holesky_stage: --number-wallets $(NUM_WALLETS) \ --amount-to-deposit $(AMOUNT_TO_DEPOSIT) \ --amount-to-deposit-to-aligned $(AMOUNT_TO_DEPOSIT_TO_ALIGNED) \ - --private-keys-filepath $(CURDIR)/batcher/aligned-task-sender/wallets/holesky-stage + --private-keys-filepath $(CURDIR)/crates/task-sender/wallets/holesky-stage task_sender_send_infinite_proofs_holesky_stage: - @cd batcher/aligned-task-sender && \ + @cd crates/task-sender && \ cargo run --release -- send-infinite-proofs \ --burst-size $(BURST_SIZE) --burst-time-secs $(BURST_TIME_SECS) \ --eth-rpc-url https://ethereum-holesky-rpc.publicnode.com \ --network holesky-stage \ --proofs-dirpath $(CURDIR)/scripts/test_files/task_sender/proofs \ - --private-keys-filepath $(CURDIR)/batcher/aligned-task-sender/wallets/holesky-stage + --private-keys-filepath $(CURDIR)/crates/task-sender/wallets/holesky-stage task_sender_test_connections_holesky_stage: - @cd batcher/aligned-task-sender && \ + @cd crates/task-sender && \ cargo run --release -- test-connections \ --num-senders $(NUM_SENDERS) \ --network holesky-stage __UTILS__: aligned_get_user_balance_devnet: - @cd batcher/aligned/ && cargo run --release -- get-user-balance \ + @cd crates/cli/ && cargo run --release -- get-user-balance \ --user_addr $(USER_ADDR) \ --network devnet aligned_get_user_balance_holesky: - @cd batcher/aligned/ && cargo run --release -- get-user-balance \ + @cd crates/cli/ && cargo run --release -- get-user-balance \ --rpc_url https://ethereum-holesky-rpc.publicnode.com \ --network holesky \ --user_addr $(USER_ADDR) +__GENERATE_PROOFS__: ## ____ +generate_sp1_fibonacci_proof: ## Run the SP1 Fibonacci proof generator script + @cd scripts/test_files/sp1/fibonacci_proof_generator/script && RUST_LOG=info cargo run --release + @echo "Fibonacci proof and ELF generated in scripts/test_files/sp1 folder" + +generate_sp1_fibonacci_proof_no_pub_input: ## Run the SP1 Fibonacci proof generator script with empty journal + @cd scripts/test_files/sp1/no_public_inputs/script && RUST_LOG=info cargo run --release + @echo "Fibonacci proof and ELF with no public inputs generated in scripts/test_files/sp1 folder" -__GENERATE_PROOFS__: - # TODO add a default proving system +generate_risc_zero_fibonacci_proof: ## Run the Risc0 Fibonacci proof generator script + @cd scripts/test_files/risc_zero/fibonacci_proof_generator && \ + RUST_LOG=info cargo run --release && \ + echo "Fibonacci proof, pub input and image ID generated in scripts/test_files/risc_zero folder" -generate_plonk_bls12_381_proof: ## Run the gnark_plonk_bls12_381_script +generate_risc_zero_empty_journal_proof: ## Run the Risc0 Fibonacci proof generator script with empty journal + @cd scripts/test_files/risc_zero/no_public_inputs && RUST_LOG=info cargo run --release + @echo "Fibonacci proof and ELF with empty journal generated in scripts/test_files/risc_zero/no_public_inputs folder" + +generate_gnark_plonk_bls12_381_proof: ## Run the gnark_plonk_bls12_381_script @echo "Running gnark_plonk_bls12_381 script..." @go run scripts/test_files/gnark_plonk_bls12_381_script/main.go -generate_plonk_bn254_proof: ## Run the gnark_plonk_bn254_script +generate_gnark_plonk_bn254_proof: ## Run the gnark_plonk_bn254_script @echo "Running gnark_plonk_bn254 script..." @go run scripts/test_files/gnark_plonk_bn254_script/main.go -generate_groth16_proof: ## Run the gnark_plonk_bn254_script +generate_gnark_groth16_bn254_proof: ## Run the gnark_groth16_bn254_script @echo "Running gnark_groth_bn254 script..." @go run scripts/test_files/gnark_groth16_bn254_script/main.go -generate_groth16_ineq_proof: ## Run the gnark_plonk_bn254_script +generate_gnark_groth16_bn254_ineq_proof: ## Run the gnark_plonk_bn254_script @echo "Running gnark_groth_bn254_ineq script..." @go run scripts/test_files/gnark_groth16_bn254_infinite_script/cmd/main.go 1 -__METRICS__: -# Prometheus and Grafana -metrics_remove_containers: - @docker stop prometheus grafana - @docker rm prometheus grafana -metrics_clean_db: metrics_remove_containers - @docker volume rm aligned_layer_grafana_data aligned_layer_prometheus_data +generate_circom_groth16_bn256_proof: ## Run the circom_groth16_bn256_script + @echo "Running circom_groth16_bn256 script..." + @cd scripts/test_files/circom_groth16_bn256_script && ./generate_proof.sh -run_metrics: ## Run metrics using metrics-docker-compose.yaml - @echo "Running metrics..." - @docker compose -f metrics-docker-compose.yaml up +generate_circom_groth16_bn256_setup: ## Run the circom_groth16_bn256_script setup + @echo "Running circom_groth16_bn256 script setup..." + @cd scripts/test_files/circom_groth16_bn256_script && ./generate_setup.sh -__STORAGE__: -run_storage: ## Run storage using storage-docker-compose.yaml - @echo "Running storage..." - @docker compose -f storage-docker-compose.yaml up +generate_circom_groth16_bn256_no_pub_input_proof: ## Run the circom_groth16_bn256_script + @echo "Running circom_groth16_bn256 script..." + @cd scripts/test_files/circom_groth16_bn256_no_pub_input_script && ./generate_proof.sh -__DEPLOYMENT__: ## ____ +generate_circom_groth16_bn256_no_pub_input_setup: ## Run the circom_groth16_bn256_script setup + @echo "Running circom_groth16_bn256_no_pub_input_script setup..." + @cd scripts/test_files/circom_groth16_bn256_no_pub_input_script && ./generate_setup.sh + +__CONTRACTS_DEPLOYMENT__: ## ____ deploy_aligned_contracts: ## Deploy Aligned Contracts. Parameters: NETWORK= @echo "Deploying Aligned Contracts on $(NETWORK) network..." @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/deploy_aligned_contracts.sh @@ -729,23 +947,13 @@ upgrade_batcher_payment_service: ## Upgrade BatcherPayments contract. Parameters @echo "Upgrading BatcherPayments Contract on $(NETWORK) network..." @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/upgrade_batcher_payment_service.sh -build_aligned_contracts: - @cd contracts/src/core && forge build +deploy_proof_aggregator: ## Deploy ProofAggregator contract. Parameters: NETWORK= + @echo "Deploying ProofAggregator contract on $(NETWORK) network..." + @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/deploy_proof_aggregator.sh -show_aligned_error_codes: - @echo "\nAlignedLayerServiceManager errors:" - @cd contracts && forge inspect src/core/IAlignedLayerServiceManager.sol:IAlignedLayerServiceManager errors - @echo "\nBatcherPaymentService errors:" - @cd contracts && forge inspect src/core/BatcherPaymentService.sol:BatcherPaymentService errors - -__BUILD__: -build_binaries: - @echo "Building aggregator..." - @go build -o ./aggregator/build/aligned-aggregator ./aggregator/cmd/main.go - @echo "Aggregator built into /aggregator/build/aligned-aggregator" - @echo "Building aligned layer operator..." - @go build -ldflags "-X main.Version=$(OPERATOR_VERSION)" -o ./operator/build/aligned-operator ./operator/cmd/main.go - @echo "Aligned layer operator built into /operator/build/aligned-operator" +upgrade_proof_aggregator: ## Upgrade ProofAggregator contract. Parameters: NETWORK= + @echo "Upgrading ProofAggregator Contract on $(NETWORK) network..." + @. contracts/scripts/.env.$(NETWORK) && . contracts/scripts/upgrade_proof_aggregator.sh __SP1_FFI__: ## build_sp1_macos: @@ -768,18 +976,6 @@ test_sp1_go_bindings_linux: build_sp1_linux @echo "Testing SP1 Go bindings..." go test ./operator/sp1/... -v -# @cp -r scripts/test_files/sp1/fibonacci_proof_generator/script/sp1_fibonacci.elf scripts/test_files/sp1/ -generate_sp1_fibonacci_proof: - @cd scripts/test_files/sp1/fibonacci_proof_generator/script && RUST_LOG=info cargo run --release - @mv scripts/test_files/sp1/fibonacci_proof_generator/program/elf/riscv32im-succinct-zkvm-elf scripts/test_files/sp1/sp1_fibonacci.elf - @mv scripts/test_files/sp1/fibonacci_proof_generator/script/sp1_fibonacci.proof scripts/test_files/sp1/ - @echo "Fibonacci proof and ELF generated in scripts/test_files/sp1 folder" - -generate_risc_zero_empty_journal_proof: - @cd scripts/test_files/risc_zero/no_public_inputs && RUST_LOG=info cargo run --release - @echo "Fibonacci proof and ELF with empty journal generated in scripts/test_files/risc_zero/no_public_inputs folder" - - __RISC_ZERO_FFI__: ## build_risc_zero_macos: @cd operator/risc_zero/lib && cargo build $(RELEASE_FLAG) @@ -801,12 +997,6 @@ test_risc_zero_go_bindings_linux: build_risc_zero_linux @echo "Testing RISC Zero Go bindings..." go test ./operator/risc_zero/... -v -generate_risc_zero_fibonacci_proof: - @cd scripts/test_files/risc_zero/fibonacci_proof_generator && \ - RUST_LOG=info cargo run --release && \ - echo "Fibonacci proof, pub input and image ID generated in scripts/test_files/risc_zero folder" - - __MERKLE_TREE_FFI__: ## build_merkle_tree_macos: @cd operator/merkle_tree/lib && cargo build $(RELEASE_FLAG) @@ -872,7 +1062,7 @@ test_mina_account_go_bindings_linux: build_mina_account_linux @echo "Testing Mina Account Go bindings..." go test ./operator/mina_account/... -v -__BUILD_ALL_FFI__: +__FFI__: ## ____ build_all_ffi: ## Build all FFIs $(BUILD_ALL_FFI) @@ -896,25 +1086,19 @@ build_all_ffi_linux: ## Build all FFIs for Linux @$(MAKE) build_mina_account_linux @echo "All Linux FFIs built successfully." -__EXPLORER__: - -run_explorer_without_docker_db: explorer_ecto_setup_db - @cd explorer/ && \ - pnpm install --prefix assets && \ - mix setup && \ - ./start.sh +__EXPLORER__: ## ____ -run_explorer: explorer_run_db explorer_ecto_setup_db +explorer_start: explorer_start_db explorer_ecto_setup_db ## Start the Explorer with the database @cd explorer/ && \ pnpm install --prefix assets && \ mix setup && \ ./start.sh -explorer_build_db: +explorer_build_db: ## Build the Explorer database image @cd explorer && \ docker build -t explorer-postgres-image . -explorer_run_db: explorer_remove_db_container +explorer_start_db: explorer_remove_db_container @cd explorer && \ docker run -d --name explorer-postgres-container -p 5432:5432 -v explorer-postgres-data:/var/lib/postgresql/data explorer-postgres-image @@ -927,16 +1111,16 @@ explorer_remove_db_container: docker stop explorer-postgres-container || true && \ docker rm explorer-postgres-container || true -explorer_clean_db: explorer_remove_db_container +explorer_clean_db: explorer_remove_db_container ## Remove the Explorer database container and volume @cd explorer && \ docker volume rm explorer-postgres-data || true -explorer_dump_db: +explorer_dump_db: ## Dump the Explorer database to a file @cd explorer && \ docker exec -t explorer-postgres-container pg_dumpall -c -U explorer_user > dump.$$(date +\%Y\%m\%d_\%H\%M\%S).sql @echo "Dumped database successfully to /explorer" -explorer_recover_db: explorer_run_db +explorer_recover_db: explorer_start_db ## Recover the Explorer database from a dump file @read -p $$'\e[32mEnter the dump file to recover (e.g., dump.20230607_123456.sql): \e[0m' DUMP_FILE && \ cd explorer && \ docker cp $$DUMP_FILE explorer-postgres-container:/dump.sql && \ @@ -1021,8 +1205,9 @@ docker_batcher_send_sp1_burst: docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ --private_key $(DOCKER_PROOFS_PRIVATE_KEY) \ --proving_system SP1 \ - --proof ./scripts/test_files/sp1/sp1_fibonacci.proof \ - --vm_program ./scripts/test_files/sp1/sp1_fibonacci.elf \ + --proof ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \ + --vm_program ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \ + --public_input ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \ --repetitions $(DOCKER_BURST_SIZE) \ --proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \ --rpc_url $(DOCKER_RPC_URL) \ @@ -1033,53 +1218,79 @@ docker_batcher_send_risc0_burst: docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ --private_key $(DOCKER_PROOFS_PRIVATE_KEY) \ --proving_system Risc0 \ - --proof ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.proof \ - --vm_program ./scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id.bin \ - --public_input ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.pub \ + --proof ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof \ + --vm_program ./scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ + --public_input ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub \ --repetitions $(DOCKER_BURST_SIZE) \ --proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \ --rpc_url $(DOCKER_RPC_URL) \ --max_fee 0.1ether -docker_batcher_send_plonk_bn254_burst: - @echo "Sending Groth16Bn254 1!=0 task to Batcher..." +docker_batcher_send_gnark_plonk_bn254_burst: + @echo "Sending Gnark Plonk Bn254 1!=0 task to Batcher..." docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ --private_key $(DOCKER_PROOFS_PRIVATE_KEY) \ --proving_system GnarkPlonkBn254 \ - --proof ./scripts/test_files/gnark_plonk_bn254_script/plonk.proof \ - --public_input ./scripts/test_files/gnark_plonk_bn254_script/plonk_pub_input.pub \ - --vk ./scripts/test_files/gnark_plonk_bn254_script/plonk.vk \ + --proof ./scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.proof \ + --public_input ./scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_pub_input_0_12_0.pub \ + --vk ./scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.vk \ --proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \ --rpc_url $(DOCKER_RPC_URL) \ --repetitions $(DOCKER_BURST_SIZE) \ --max_fee 0.1ether -docker_batcher_send_plonk_bls12_381_burst: - @echo "Sending Groth16 BLS12-381 1!=0 task to Batcher..." +docker_batcher_send_gnark_plonk_bls12_381_burst: + @echo "Sending Gnark Plonk BLS12-381 1!=0 task to Batcher..." docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ --private_key $(DOCKER_PROOFS_PRIVATE_KEY) \ --proving_system GnarkPlonkBls12_381 \ - --proof ./scripts/test_files/gnark_plonk_bls12_381_script/plonk.proof \ - --public_input ./scripts/test_files/gnark_plonk_bls12_381_script/plonk_pub_input.pub \ - --vk ./scripts/test_files/gnark_plonk_bls12_381_script/plonk.vk \ + --proof ./scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.proof \ + --public_input ./scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_pub_input_0_12_0.pub \ + --vk ./scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.vk \ --proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \ --repetitions $(DOCKER_BURST_SIZE) \ --rpc_url $(DOCKER_RPC_URL) \ --max_fee 0.1ether -docker_batcher_send_groth16_burst: +docker_batcher_send_gnark_groth16_burst: @echo "Sending Groth16 BLS12-381 1!=0 task to Batcher..." docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ --private_key $(DOCKER_PROOFS_PRIVATE_KEY) \ - --proving_system Groth16Bn254 \ - --proof ./scripts/test_files/gnark_groth16_bn254_script/groth16.proof \ - --public_input ./scripts/test_files/gnark_groth16_bn254_script/plonk_pub_input.pub \ - --vk ./scripts/test_files/gnark_groth16_bn254_script/groth16.vk \ + --proving_system GnarkGroth16Bn254 \ + --proof ./scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.proof \ + --public_input ./scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.pub \ + --vk ./scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.vk \ --proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \ --repetitions $(DOCKER_BURST_SIZE) \ --rpc_url $(DOCKER_RPC_URL) \ --max_fee 0.1ether +docker_batcher_send_circom_groth16_bn256_burst: + @echo "Sending Circom Groth16 BN256 task to Batcher..." + docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ + --private_key $(DOCKER_PROOFS_PRIVATE_KEY) \ + --proving_system CircomGroth16Bn256 \ + --proof ./scripts/test_files/circom_groth16_bn256_script/proof.json \ + --public_input ./scripts/test_files/circom_groth16_bn256_script/public.json \ + --vk ./scripts/test_files/circom_groth16_bn256_script/verification_key.json \ + --proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \ + --repetitions $(DOCKER_BURST_SIZE) \ + --rpc_url $(DOCKER_RPC_URL) \ + --max_fee 0.1ether + +docker_batcher_send_circom_groth16_bn256_no_pub_input_burst: + @echo "Sending Circom Groth16 BN256 task to Batcher..." + docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ + --private_key $(DOCKER_PROOFS_PRIVATE_KEY) \ + --proving_system CircomGroth16Bn256 \ + --proof ./scripts/test_files/circom_groth16_bn256_no_pub_input_script/proof.json \ + --public_input ./scripts/test_files/circom_groth16_bn256_no_pub_input_script/public.json \ + --vk ./scripts/test_files/circom_groth16_bn256_no_pub_input_script/verification_key.json \ + --proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \ + --repetitions $(DOCKER_BURST_SIZE) \ + --rpc_url $(DOCKER_RPC_URL) \ + --max_fee 0.1ether + docker_batcher_send_mina_burst: @echo "Sending Mina state task to Batcher..." docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \ @@ -1108,9 +1319,11 @@ docker_batcher_send_mina_account_burst: docker_batcher_send_all_proofs_burst: @$(MAKE) docker_batcher_send_sp1_burst @$(MAKE) docker_batcher_send_risc0_burst - @$(MAKE) docker_batcher_send_plonk_bn254_burst - @$(MAKE) docker_batcher_send_plonk_bls12_381_burst - @$(MAKE) docker_batcher_send_groth16_burst + @$(MAKE) docker_batcher_send_gnark_plonk_bn254_burst + @$(MAKE) docker_batcher_send_gnark_plonk_bls12_381_burst + @$(MAKE) docker_batcher_send_gnark_groth16_burst + @$(MAKE) docker_batcher_send_circom_groth16_bn256_burst + @$(MAKE) docker_batcher_send_circom_groth16_bn256_no_pub_input_burst @$(MAKE) docker_batcher_send_mina_burst @$(MAKE) docker_batcher_send_mina_account_burst @@ -1126,10 +1339,10 @@ docker_batcher_send_infinite_groth16: aligned submit \ --rpc_url $(DOCKER_RPC_URL) \ --repetitions $(DOCKER_BURST_SIZE) \ - --proving_system Groth16Bn254 \ - --proof scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_$${counter}_groth16.proof \ - --public_input scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_$${counter}_groth16.pub \ - --vk scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_$${counter}_groth16.vk \ + --proving_system GnarkGroth16Bn254 \ + --proof scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_$${counter}_gnark_groth16_0_12_0.proof \ + --public_input scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_$${counter}_gnark_groth16_0_12_0.pub \ + --vk scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_$${counter}_gnark_groth16_0_12_0.vk \ --proof_generator_addr $(PROOF_GENERATOR_ADDRESS); \ --max_fee 0.1ether sleep $${timer}; \ @@ -1150,6 +1363,7 @@ docker_verify_proofs_onchain: ' DOCKER_PROOFS_WAIT_TIME=60 +DOCKER_SENT_PROOFS=9 docker_verify_proof_submission_success: @echo "Verifying proofs were successfully submitted..." @@ -1178,7 +1392,7 @@ docker_verify_proof_submission_success: fi; \ echo "---------------------------------------------------------------------------------------------------"; \ done; \ - if [ $$(ls -1 ./aligned_verification_data/*.cbor | wc -l) -ne 5 ]; then \ + if [ $$(ls -1 ./aligned_verification_data/*.cbor | wc -l) -ne $(DOCKER_SENT_PROOFS) ]; then \ echo "ERROR: Some proofs were verified successfully, but some proofs are missing in the aligned_verification_data/ directory"; \ exit 1; \ fi; \ @@ -1212,44 +1426,54 @@ docker_logs_operator: docker_logs_batcher: docker compose -f docker-compose.yaml logs batcher -f -__TELEMETRY__: -# Collector, Jaeger and Elixir API -telemetry_full_start: telemetry_compile_bls_verifier open_telemetry_start telemetry_start +__TELEMETRY__: ## ____ +# TODO maybe add a target to run both metrics and telemetry -# Collector and Jaeger -open_telemetry_start: ## Run open telemetry services using telemetry-docker-compose.yaml +metrics_start: ## Run metrics (prometheus, grafana) using metrics-docker-compose.yaml + @echo "Running metrics..." + @docker compose -f metrics-docker-compose.yaml up + +metrics_remove_containers: ## Remove Prometheus and Grafana containers + @docker stop prometheus grafana + @docker rm prometheus grafana + +metrics_clean_db: metrics_remove_containers ## Remove Prometheus and Grafana volumes + @docker volume rm aligned_layer_grafana_data aligned_layer_prometheus_data + +telemetry_start_all: telemetry_compile_bls_verifier open_telemetry_start telemetry_start ## Run all telemetry services (open telemetry, telemetry API) + +open_telemetry_start: ## Run open telemetry services (otel collector, jaeger, cassandra) using telemetry-docker-compose.yaml @echo "Running telemetry..." @docker compose -f telemetry-docker-compose.yaml up -d -open_telemetry_prod_start: ## Run open telemetry services with Cassandra using telemetry-prod-docker-compose.yaml +open_telemetry_prod_start: # TODO check if we are using this target @echo "Running telemetry for Prod..." @docker compose -f telemetry-prod-docker-compose.yaml up -d -# Elixir API -telemetry_start: telemetry_run_db telemetry_ecto_migrate ## Run Telemetry API +telemetry_start: telemetry_start_db telemetry_ecto_migrate ## Run Telemetry API @cd telemetry_api && \ ./start.sh -telemetry_ecto_migrate: ## +telemetry_ecto_migrate: ## Run Ecto migrations for Telemetry API @cd telemetry_api && \ ./ecto_setup_db.sh -telemetry_build_db: +telemetry_build_db: ## Build the Telemetry database image @cd telemetry_api && \ docker build -t telemetry-postgres-image . -telemetry_run_db: telemetry_build_db telemetry_remove_db_container +telemetry_start_db: telemetry_build_db telemetry_remove_db_container ## Run the Telemetry database container @cd telemetry_api && \ docker run -d --name telemetry-postgres-container -p 5434:5432 -v telemetry-postgres-data:/var/lib/postgresql/data telemetry-postgres-image -telemetry_remove_db_container: +telemetry_remove_db_container: ## Remove the Telemetry database container @docker stop telemetry-postgres-container || true && \ docker rm telemetry-postgres-container || true -telemetry_clean_db: telemetry_remove_db_container +telemetry_clean_db: telemetry_remove_db_container ## Remove the Telemetry database container and volume @docker volume rm telemetry-postgres-data || true -telemetry_dump_db: +telemetry_dump_db: ## Dump the Telemetry database to a file @cd telemetry_api && \ docker exec -t telemetry-postgres-container pg_dumpall -c -U telemetry_user > dump.$$(date +\%Y\%m\%d_\%H\%M\%S).sql @echo "Dumped database successfully to /telemetry_api" @@ -1258,31 +1482,31 @@ telemetry_create_env: @cd telemetry_api && \ cp .env.dev .env -telemetry_compile_bls_verifier: +telemetry_compile_bls_verifier: ## Compile the BLS verifier for Telemetry API @cd telemetry_api/priv && \ go build ../bls_verifier/bls_verify.go -setup_local_aligned_all: +setup_local_aligned_all: # TODO check if we are using this target tmux kill-session -t aligned_layer || true tmux new-session -d -s aligned_layer tmux new-window -t aligned_layer -n anvil - tmux send-keys -t aligned_layer 'make anvil_start_with_block_time' C-m + tmux send-keys -t aligned_layer 'make anvil_start' C-m tmux new-window -t aligned_layer -n aggregator tmux send-keys -t aligned_layer:aggregator 'make aggregator_start' C-m tmux new-window -t aligned_layer -n operator - tmux send-keys -t aligned_layer:operator 'sleep 5 && make operator_register_and_start' C-m + tmux send-keys -t aligned_layer:operator 'sleep 5 && make operator_full_registration_and_start' C-m tmux new-window -t aligned_layer -n batcher tmux send-keys -t aligned_layer:batcher 'sleep 60 && make batcher_start_local' C-m tmux new-window -t aligned_layer -n explorer - tmux send-keys -t aligned_layer:explorer 'make explorer_create_env && make explorer_build_db && make run_explorer' C-m + tmux send-keys -t aligned_layer:explorer 'make explorer_create_env && make explorer_build_db && make explorer_start' C-m tmux new-window -t aligned_layer -n telemetry - tmux send-keys -t aligned_layer:telemetry 'docker compose -f telemetry-docker-compose.yaml down && make telemetry_create_env && make telemetry_run_db && make open_telemetry_start && make telemetry_start' C-m + tmux send-keys -t aligned_layer:telemetry 'docker compose -f telemetry-docker-compose.yaml down && make telemetry_create_env && make telemetry_start_db && make open_telemetry_start && make telemetry_start' C-m __ANSIBLE__: ## ____ @@ -1293,14 +1517,13 @@ ansible_batcher_create_env: ## Create empty variables files for the Batcher depl @echo "Config files for the Batcher created in infra/ansible/playbooks/ini" @echo "Please complete the values and run make ansible_batcher_deploy" -ansible_batcher_deploy: ## Deploy the Batcher. Parameters: INVENTORY, KEYSTORE - @if [ -z "$(INVENTORY)" ] || [ -z "$(KEYSTORE)" ]; then \ - echo "Error: Both INVENTORY and KEYSTORE must be set."; \ +ansible_batcher_deploy: ## Deploy the Batcher. Parameters: INVENTORY + @if [ -z "$(INVENTORY)" ]; then \ + echo "Error: INVENTORY must be set."; \ exit 1; \ fi @ansible-playbook infra/ansible/playbooks/batcher.yaml \ - -i $(INVENTORY) \ - -e "keystore_path=$(KEYSTORE)" + -i $(INVENTORY) ansible_aggregator_create_env: ## Create empty variables files for the Aggregator deploy @cp -n infra/ansible/playbooks/ini/config-aggregator.ini.example infra/ansible/playbooks/ini/config-aggregator.ini @@ -1308,14 +1531,12 @@ ansible_aggregator_create_env: ## Create empty variables files for the Aggregato @echo "Please complete the values and run make ansible_aggregator_deploy" ansible_aggregator_deploy: ## Deploy the Operator. Parameters: INVENTORY - @if [ -z "$(INVENTORY)" ] || [ -z "$(ECDSA_KEYSTORE)" ] || [ -z "$(BLS_KEYSTORE)" ]; then \ - echo "Error: INVENTORY, ECDSA_KEYSTORE, BLS_KEYSTORE must be set."; \ + @if [ -z "$(INVENTORY)" ]; then \ + echo "Error: INVENTORY must be set."; \ exit 1; \ fi @ansible-playbook infra/ansible/playbooks/aggregator.yaml \ - -i $(INVENTORY) \ - -e "ecdsa_keystore_path=$(ECDSA_KEYSTORE)" \ - -e "bls_keystore_path=$(BLS_KEYSTORE)" + -i $(INVENTORY) ansible_operator_create_env: ## Create empty variables files for the Operator deploy @cp -n infra/ansible/playbooks/ini/config-operator.ini.example infra/ansible/playbooks/ini/config-operator.ini @@ -1324,56 +1545,39 @@ ansible_operator_create_env: ## Create empty variables files for the Operator de @echo "Please complete the values and run make ansible_operator_deploy" ansible_operator_deploy: ## Deploy the Operator. Parameters: INVENTORY - @if [ -z "$(INVENTORY)" ] || [ -z "$(ECDSA_KEYSTORE)" ] || [ -z "$(BLS_KEYSTORE)" ]; then \ - echo "Error: INVENTORY, ECDSA_KEYSTORE, BLS_KEYSTORE must be set."; \ + @if [ -z "$(INVENTORY)" ]; then \ + echo "Error: INVENTORY must be set."; \ exit 1; \ fi @ansible-playbook infra/ansible/playbooks/operator.yaml \ - -i $(INVENTORY) \ - -e "ecdsa_keystore_path=$(ECDSA_KEYSTORE)" \ - -e "bls_keystore_path=$(BLS_KEYSTORE)" + -i $(INVENTORY) -ansible_explorer_deploy: +ansible_explorer_deploy: ## Deploy the Explorer. Parameters: INVENTORY @ansible-playbook infra/ansible/playbooks/explorer.yaml \ -i $(INVENTORY) -ansible_telemetry_create_env: +ansible_telemetry_create_env: ## Create empty variables files for the Telemetry deploy @cp -n infra/ansible/playbooks/ini/config-telemetry.ini.example infra/ansible/playbooks/ini/config-telemetry.ini @echo "Config files for Telemetry created in infra/ansible/playbooks/ini" @echo "Please complete the values and run make ansible_telemetry_deploy" -ansible_telemetry_deploy: +ansible_telemetry_deploy: ## Deploy the Telemetry. Parameters: INVENTORY @ansible-playbook infra/ansible/playbooks/telemetry.yaml \ -i $(INVENTORY) __ETHEREUM_PACKAGE__: ## ____ ethereum_package_start: ## Starts the ethereum_package environment - kurtosis run --enclave aligned github.com/ethpandaops/ethereum-package --args-file network_params.yaml + kurtosis run --enclave aligned github.com/ethpandaops/ethereum-package@5.0.1 --args-file network_params.yaml ethereum_package_inspect: ## Prints detailed information about the net kurtosis enclave inspect aligned ethereum_package_rm: ## Stops and removes the ethereum_package environment and used resources kurtosis enclave rm aligned -f + kurtosis engine stop -batcher_start_ethereum_package: user_fund_payment_service - @echo "Starting Batcher..." - @$(MAKE) run_storage & - @cargo run --manifest-path ./batcher/aligned-batcher/Cargo.toml --release -- --config ./config-files/config-batcher-ethereum-package.yaml --env-file ./batcher/aligned-batcher/.env.dev - -aggregator_start_ethereum_package: - $(MAKE) aggregator_start AGG_CONFIG_FILE=config-files/config-aggregator-ethereum-package.yaml - -operator_start_ethereum_package: - $(MAKE) operator_start OPERATOR_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 CONFIG_FILE=config-files/config-operator-1-ethereum-package.yaml - -operator_register_start_ethereum_package: - $(MAKE) operator_full_registration OPERATOR_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 CONFIG_FILE=config-files/config-operator-1-ethereum-package.yaml \ - $(MAKE) operator_start OPERATOR_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 CONFIG_FILE=config-files/config-operator-1-ethereum-package.yaml - - -install_spamoor: ## Instal spamoor to spam transactions +spamoor_install: ## Instal spamoor to spam transactions @echo "Installing spamoor..." @git clone https://github.com/ethpandaops/spamoor.git @cd spamoor && make @@ -1400,7 +1604,7 @@ spamoor_send_transactions: ## Sends normal transactions and also replacement tra --refill-amount 5 --refill-balance 2 --tipfee $(TIP_FEE) --basefee 100 \ 2>&1 | grep -v 'checked child wallets (no funding needed)' -__NODE_EXPORTER_: ##__ +__NODE_EXPORTER_: install_node_exporter: @./scripts/install_node_exporter.sh diff --git a/aggregation_mode/Cargo.lock b/aggregation_mode/Cargo.lock new file mode 100644 index 0000000000..7b6b111877 --- /dev/null +++ b/aggregation_mode/Cargo.lock @@ -0,0 +1,11395 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "cpp_demangle", + "fallible-iterator", + "gimli", + "memmap2", + "object", + "rustc-demangle", + "smallvec", + "typed-arena", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sdk" +version = "0.1.0" +dependencies = [ + "ciborium", + "dialoguer", + "ethers", + "futures-util", + "hex", + "lambdaworks-crypto", + "log", + "reqwest 0.12.23", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio", + "tokio-tungstenite 0.23.1", + "url", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b064bd1cea105e70557a258cd2b317731896753ec08edf51da2d1fced587b05" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-contract 0.15.11", + "alloy-core", + "alloy-eips 0.15.11", + "alloy-genesis", + "alloy-network 0.15.11", + "alloy-provider 0.15.11", + "alloy-rpc-client 0.15.11", + "alloy-rpc-types", + "alloy-serde 0.15.11", + "alloy-signer 0.15.11", + "alloy-signer-local 0.15.11", + "alloy-transport 0.15.11", + "alloy-transport-http 0.15.11", +] + +[[package]] +name = "alloy" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754e8b511978ec78b3bf71140d2692fa8b67a09e44a9742487ab21dec616f953" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-contract 1.0.29", + "alloy-core", + "alloy-eips 1.0.29", + "alloy-network 1.0.29", + "alloy-provider 1.0.29", + "alloy-rpc-client 1.0.29", + "alloy-transport 1.0.29", + "alloy-transport-http 1.0.29", +] + +[[package]] +name = "alloy-chains" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8ff73a143281cb77c32006b04af9c047a6b8fe5860e85a88ad325328965355" +dependencies = [ + "alloy-primitives", + "num_enum 0.7.4", + "strum 0.27.2", +] + +[[package]] +name = "alloy-consensus" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32c3f3bc4f2a6b725970cd354e78e9738ea1e8961a91898f57bf6317970b1915" +dependencies = [ + "alloy-eips 0.15.11", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.15.11", + "alloy-trie 0.8.1", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "secp256k1", + "serde", + "serde_with", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-consensus" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1816584b0c17e3ab5781d7044b07d5b884cf8fe005811b4ae2cded266e0e8c87" +dependencies = [ + "alloy-eips 1.0.29", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.0.29", + "alloy-trie 0.9.1", + "alloy-tx-macros", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "secp256k1", + "serde", + "serde_with", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dda014fb5591b8d8d24cab30f52690117d238e52254c6fb40658e91ea2ccd6c3" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-eips 0.15.11", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.15.11", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb74c249b00a0e5005efc2aa3ef48c805b278cad848b544d5f53cb266f45976" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-eips 1.0.29", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.0.29", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9668ce1176f0b87a5e5fc805b3d198954f495de2e99b70a44bed691ba2b0a9d8" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network 0.15.11", + "alloy-network-primitives 0.15.11", + "alloy-primitives", + "alloy-provider 0.15.11", + "alloy-rpc-types-eth 0.15.11", + "alloy-sol-types", + "alloy-transport 0.15.11", + "futures", + "futures-util", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-contract" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5cabcc7fdf60c92df94889d6e1b73814ecf47e99a6554f6dd7f75b45aa9d7fa" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network 1.0.29", + "alloy-network-primitives 1.0.29", + "alloy-primitives", + "alloy-provider 1.0.29", + "alloy-rpc-types-eth 1.0.29", + "alloy-sol-types", + "alloy-transport 1.0.29", + "futures", + "futures-util", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-core" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe6c56d58fbfa9f0f6299376e8ce33091fc6494239466814c3f54b55743cb09" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f56873f3cac7a2c63d8e98a4314b8311aa96adb1a0f82ae923eb2119809d2c" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "itoa", + "serde", + "serde_json", + "winnow 0.7.13", +] + +[[package]] +name = "alloy-eip2124" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-eip2930" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-eips" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f7b2f7010581f29bcace81776cf2f0e022008d05a7d326884763f16f3044620" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.15.11", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "serde", + "sha2 0.10.9", +] + +[[package]] +name = "alloy-eips" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cee87eceefee136d68bba6d7202745c218346f28f0b96ce83b8061c991ddad" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.0.29", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "serde", + "serde_with", + "sha2 0.10.9", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-genesis" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f723856b1c4ad5473f065650ab9be557c96fbc77e89180fbdac003e904a8d6" +dependencies = [ + "alloy-eips 0.15.11", + "alloy-primitives", + "alloy-serde 0.15.11", + "alloy-trie 0.8.1", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125a1c373261b252e53e04d6e92c37d881833afc1315fceab53fd46045695640" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca1e31b50f4ed9a83689ae97263d366b15b935a67c4acb5dd46d5b1c3b27e8e6" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "alloy-json-rpc" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb4dc62df1be5c5f103f66ac8f25bf4d34e7b812e642159918466bb4c0f8e9a9" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "http 1.3.1", + "serde", + "serde_json", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879afc0f4a528908c8fe6935b2ab0bc07f77221a989186f71583f7592831689e" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-consensus-any 0.15.11", + "alloy-eips 0.15.11", + "alloy-json-rpc 0.15.11", + "alloy-network-primitives 0.15.11", + "alloy-primitives", + "alloy-rpc-types-any 0.15.11", + "alloy-rpc-types-eth 0.15.11", + "alloy-serde 0.15.11", + "alloy-signer 0.15.11", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more 2.0.1", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-network" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e07a4331293a40c1a2fff58739c6da826cd86e3e76cd339af5d99b5e085344" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-consensus-any 1.0.29", + "alloy-eips 1.0.29", + "alloy-json-rpc 1.0.29", + "alloy-network-primitives 1.0.29", + "alloy-primitives", + "alloy-rpc-types-any 1.0.29", + "alloy-rpc-types-eth 1.0.29", + "alloy-serde 1.0.29", + "alloy-signer 1.0.29", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more 2.0.1", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec185bac9d32df79c1132558a450d48f6db0bfb5adef417dbb1a0258153f879b" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-eips 0.15.11", + "alloy-primitives", + "alloy-serde 0.15.11", + "serde", +] + +[[package]] +name = "alloy-network-primitives" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "237f507e38aac68d95389fbfba451a8d18cbdb51c971bc78f643de54bb15e395" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-eips 1.0.29", + "alloy-primitives", + "alloy-serde 1.0.29", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash", + "hashbrown 0.15.5", + "indexmap 2.11.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2d918534afe9cc050eabd8309c107dafd161aa77357782eca4f218bef08a660" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.15.11", + "alloy-eips 0.15.11", + "alloy-json-rpc 0.15.11", + "alloy-network 0.15.11", + "alloy-network-primitives 0.15.11", + "alloy-primitives", + "alloy-rpc-client 0.15.11", + "alloy-rpc-types-eth 0.15.11", + "alloy-signer 0.15.11", + "alloy-sol-types", + "alloy-transport 0.15.11", + "alloy-transport-http 0.15.11", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "either", + "futures", + "futures-utils-wasm", + "lru 0.13.0", + "parking_lot", + "pin-project", + "reqwest 0.12.23", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-provider" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "040b10bb781540585e87a1e9f9a0c4f54f49674114f33aa05c9a50cf3c92e26c" +dependencies = [ + "alloy-chains", + "alloy-consensus 1.0.29", + "alloy-eips 1.0.29", + "alloy-json-rpc 1.0.29", + "alloy-network 1.0.29", + "alloy-network-primitives 1.0.29", + "alloy-primitives", + "alloy-rpc-client 1.0.29", + "alloy-rpc-types-eth 1.0.29", + "alloy-signer 1.0.29", + "alloy-sol-types", + "alloy-transport 1.0.29", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "either", + "futures", + "futures-utils-wasm", + "lru 0.13.0", + "parking_lot", + "pin-project", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tracing", + "wasmtimer", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15e30dcada47c04820b64f63de2423506c5c74f9ab59b115277ef5ad595a6fc" +dependencies = [ + "alloy-json-rpc 0.15.11", + "alloy-primitives", + "alloy-transport 0.15.11", + "alloy-transport-http 0.15.11", + "async-stream", + "futures", + "pin-project", + "reqwest 0.12.23", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", + "tracing-futures", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-client" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c353b166a2cfb39167ead4f8ec335acdb439ad2a436245bccc218022fe28ca65" +dependencies = [ + "alloy-json-rpc 1.0.29", + "alloy-primitives", + "alloy-transport 1.0.29", + "futures", + "pin-project", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aa10e26554ad7f79a539a6a8851573aedec5289f1f03244aad0bdbc324bfe5c" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth 0.15.11", + "alloy-serde 0.15.11", + "serde", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a8f1efd77116915dad61092f9ef9295accd0b0b251062390d9c4e81599344" +dependencies = [ + "alloy-consensus-any 0.15.11", + "alloy-rpc-types-eth 0.15.11", + "alloy-serde 0.15.11", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f81c39d47eac1904e378a8079e2903bc1ddb3d9e73d5461c0db6c215d9d7ec1" +dependencies = [ + "alloy-consensus-any 1.0.29", + "alloy-rpc-types-eth 1.0.29", + "alloy-serde 1.0.29", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246c225f878dbcb8ad405949a30c403b3bb43bdf974f7f0331b276f835790a5e" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-eips 0.15.11", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.15.11", + "derive_more 2.0.1", + "rand 0.8.5", + "serde", + "strum 0.27.2", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc1323310d87f9d950fb3ff58d943fdf832f5e10e6f902f405c0eaa954ffbaf1" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-consensus-any 0.15.11", + "alloy-eips 0.15.11", + "alloy-network-primitives 0.15.11", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.15.11", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a21e2b9b9da3f21351b9a34f820aa0580d5709aa821e8bfd26411649750f34" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-consensus-any 1.0.29", + "alloy-eips 1.0.29", + "alloy-network-primitives 1.0.29", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.0.29", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-serde" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05ace2ef3da874544c3ffacfd73261cdb1405d8631765deb991436a53ec6069" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "432bbb99cfa037b8a50deb4128da7bfc3d094a6b2ac6e9220bf89b1408c5e269" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67fdabad99ad3c71384867374c60bcd311fc1bb90ea87f5f9c779fd8c7ec36aa" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-signer" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b97ec9efdf375ada378d03404e8515c4e04694481fbb8c9e636313130fd734" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-signer-aws" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f8b4eb19ae08377f376dc531a9152fbacbbc4c5494b11a26448c7c1b4fdbaee" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-network 1.0.29", + "alloy-primitives", + "alloy-signer 1.0.29", + "async-trait", + "aws-sdk-kms", + "k256", + "spki", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "alloy-signer-local" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acb3f4e72378566b189624d54618c8adf07afbcf39d5f368f4486e35a66725b3" +dependencies = [ + "alloy-consensus 0.15.11", + "alloy-network 0.15.11", + "alloy-primitives", + "alloy-signer 0.15.11", + "async-trait", + "eth-keystore", + "k256", + "rand 0.8.5", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-signer-local" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e6e5b61817be1dfca20a7738eb09c9a85c333ef34ed0ae6946bdff077245fa" +dependencies = [ + "alloy-consensus 1.0.29", + "alloy-network 1.0.29", + "alloy-primitives", + "alloy-signer 1.0.29", + "async-trait", + "k256", + "rand 0.8.5", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20d867dcf42019d4779519a1ceb55eba8d7f3d0e4f0a89bcba82b8f9eb01e48" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74e91b0b553c115d14bd0ed41898309356dc85d0e3d4b9014c4e7715e48c8ad" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.11.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84194d31220803f5f62d0a00f583fd3a062b36382e2bea446f1af96727754565" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck 0.5.0", + "macro-string", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe8c27b3cf6b2bb8361904732f955bc7c05e00be5f469cec7e2280b6167f3ff0" +dependencies = [ + "serde", + "winnow 0.7.13", +] + +[[package]] +name = "alloy-sol-types" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5383d34ea00079e6dd89c652bcbdb764db160cef84e6250926961a0b2295d04" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6964d85cd986cfc015b96887b89beed9e06d0d015b75ee2b7bfbd64341aab874" +dependencies = [ + "alloy-json-rpc 0.15.11", + "alloy-primitives", + "base64 0.22.1", + "derive_more 2.0.1", + "futures", + "futures-utils-wasm", + "parking_lot", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ab8f6beec1d32754043ad3b4da077e80ba78fd762acfb16a8460336887a2" +dependencies = [ + "alloy-json-rpc 1.0.29", + "alloy-primitives", + "auto_impl", + "base64 0.22.1", + "derive_more 2.0.1", + "futures", + "futures-utils-wasm", + "parking_lot", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef7c5ea7bda4497abe4ea92dcb8c76e9f052c178f3c82aa6976bcb264675f73c" +dependencies = [ + "alloy-json-rpc 0.15.11", + "alloy-transport 0.15.11", + "reqwest 0.12.23", + "serde_json", + "tower 0.5.2", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-http" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27e6b0b1188a87bbfbb5adf5ad7dcd0744e03fe3184e8ef683ec29846d884bee" +dependencies = [ + "alloy-transport 1.0.29", + "url", +] + +[[package]] +name = "alloy-trie" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 2.0.1", + "nybbles 0.3.4", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "alloy-trie" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 2.0.1", + "nybbles 0.4.3", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "alloy-tx-macros" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81901009f4ebb0fa0d2b37328ddec6ca420ca06289dddd714bc7ee9be3c86d4b" +dependencies = [ + "alloy-primitives", + "darling 0.21.3", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +dependencies = [ + "windows-sys 0.60.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.60.2", +] + +[[package]] +name = "anyhow" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +dependencies = [ + "backtrace", +] + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-r1cs-std", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" +dependencies = [ + "ahash", + "ark-crypto-primitives-macros", + "ark-ec", + "ark-ff 0.5.0", + "ark-relations", + "ark-serialize 0.5.0", + "ark-snark", + "ark-std 0.5.0", + "blake2", + "derivative", + "digest 0.10.7", + "fnv", + "merlin", + "sha2 0.10.9", +] + +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-groth16" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" +dependencies = [ + "ark-crypto-primitives", + "ark-ec", + "ark-ff 0.5.0", + "ark-poly", + "ark-relations", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-relations", + "ark-std 0.5.0", + "educe", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-snark" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" +dependencies = [ + "ark-ff 0.5.0", + "ark-relations", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "aws-config" +version = "1.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bc1b40fb26027769f16960d2f4a6bc20c4bb755d403e552c8c1a73af433c246" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-sdk-sso", + "aws-sdk-ssooidc", + "aws-sdk-sts", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "hex", + "http 1.3.1", + "ring 0.17.14", + "time", + "tokio", + "tracing", + "url", + "zeroize", +] + +[[package]] +name = "aws-credential-types" +version = "1.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d025db5d9f52cbc413b167136afb3d8aeea708c0d8884783cf6253be5e22f6f2" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "zeroize", +] + +[[package]] +name = "aws-lc-rs" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +dependencies = [ + "bindgen 0.69.5", + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "aws-runtime" +version = "1.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c034a1bc1d70e16e7f4e4caf7e9f7693e4c9c24cd91cf17c2a0b21abaebc7c8b" +dependencies = [ + "aws-credential-types", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "http-body 0.4.6", + "percent-encoding", + "pin-project-lite", + "tracing", + "uuid 1.18.1", +] + +[[package]] +name = "aws-sdk-kms" +version = "1.86.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e7ef7189e532a6d7654befd668b535d31f261c61342397da47ccfa3fb0505a" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sso" +version = "1.83.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cd43af212d2a1c4dedff6f044d7e1961e5d9e7cfe773d70f31d9842413886" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-ssooidc" +version = "1.84.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20ec4a95bd48e0db7a424356a161f8d87bd6a4f0af37204775f0da03d9e39fc3" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sts" +version = "1.85.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "410309ad0df4606bc721aff0d89c3407682845453247213a0ccc5ff8801ee107" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-query", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sigv4" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084c34162187d39e3740cb635acd73c4e3a551a36146ad6fe8883c929c9f876c" +dependencies = [ + "aws-credential-types", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "form_urlencoded", + "hex", + "hmac", + "http 0.2.12", + "http 1.3.1", + "percent-encoding", + "sha2 0.10.9", + "time", + "tracing", +] + +[[package]] +name = "aws-smithy-async" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "aws-smithy-http" +version = "0.62.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c4dacf2d38996cf729f55e7a762b30918229917eca115de45dfa8dfb97796c9" +dependencies = [ + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tracing", +] + +[[package]] +name = "aws-smithy-http-client" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147e8eea63a40315d704b97bf9bc9b8c1402ae94f89d5ad6f7550d963309da1b" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "h2 0.3.27", + "h2 0.4.12", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper 1.7.0", + "hyper-rustls 0.24.2", + "hyper-rustls 0.27.7", + "hyper-util", + "pin-project-lite", + "rustls 0.21.12", + "rustls 0.23.31", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tower 0.5.2", + "tracing", +] + +[[package]] +name = "aws-smithy-json" +version = "0.61.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa31b350998e703e9826b2104dd6f63be0508666e1aba88137af060e8944047" +dependencies = [ + "aws-smithy-types", +] + +[[package]] +name = "aws-smithy-observability" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9364d5989ac4dd918e5cc4c4bdcc61c9be17dcd2586ea7f69e348fc7c6cab393" +dependencies = [ + "aws-smithy-runtime-api", +] + +[[package]] +name = "aws-smithy-query" +version = "0.60.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +dependencies = [ + "aws-smithy-types", + "urlencoding", +] + +[[package]] +name = "aws-smithy-runtime" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3946acbe1ead1301ba6862e712c7903ca9bb230bdf1fbd1b5ac54158ef2ab1f" +dependencies = [ + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-http-client", + "aws-smithy-observability", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "fastrand", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "http-body 1.0.1", + "pin-project-lite", + "pin-utils", + "tokio", + "tracing", +] + +[[package]] +name = "aws-smithy-runtime-api" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07f5e0fc8a6b3f2303f331b94504bbf754d85488f402d6f1dd7a6080f99afe56" +dependencies = [ + "aws-smithy-async", + "aws-smithy-types", + "bytes", + "http 0.2.12", + "http 1.3.1", + "pin-project-lite", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-types" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" +dependencies = [ + "base64-simd", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "http-body 1.0.1", + "http-body-util", + "itoa", + "num-integer", + "pin-project-lite", + "pin-utils", + "ryu", + "serde", + "time", + "tokio", + "tokio-util", +] + +[[package]] +name = "aws-smithy-xml" +version = "0.60.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db87b96cb1b16c024980f133968d52882ca0daaee3a086c6decc500f6c99728" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "aws-types" +version = "1.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b069d19bf01e46298eaedd7c6f283fe565a59263e53eebec945f3e6398f42390" +dependencies = [ + "aws-credential-types", + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "rustc_version 0.4.1", + "tracing", +] + +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.16", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "backon" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" +dependencies = [ + "fastrand", + "gloo-timers 0.3.0", + "tokio", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" +dependencies = [ + "outref", + "vsimd", +] + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.106", + "which", +] + +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.106", +] + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn 2.0.106", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq 0.3.1", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq 0.3.1", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "bls12_381" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +dependencies = [ + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "blst" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest 0.12.23", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2 0.10.9", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.11.0", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.106", + "tempfile", + "toml", +] + +[[package]] +name = "cc" +version = "1.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "circom-witnesscalc" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3fb734f91de7e7002678ea3238fddfd4ee7afd33e9ed975176f4a94794a55a" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "bindgen 0.72.1", + "byteorder", + "indicatif", + "libc", + "memmap2", + "num-bigint 0.4.6", + "num-traits", + "prost", + "prost-build", + "rand 0.8.5", + "ruint", + "serde", + "serde_json", + "tempfile", + "thiserror 2.0.16", + "winnow 0.7.13", + "wtns-file", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "clap_lex" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.16", +] + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2 0.10.9", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2 0.10.9", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", +] + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "cpp_demangle" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "ctrlc" +version = "3.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f93780a459b7d656ef7f071fe699c4d3d2cb201c4b24d085b6ddc505276e73" +dependencies = [ + "nix", + "windows-sys 0.59.0", +] + +[[package]] +name = "cust" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6cc71911e179f12483b9734120b45bd00bf64fab085cc4818428523eedd469" +dependencies = [ + "bitflags 1.3.2", + "bytemuck", + "cust_core", + "cust_derive", + "cust_raw", + "find_cuda_helper", +] + +[[package]] +name = "cust_core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039f79662cb8f890cbf335e818cd522d6e3a53fe63f61d1aaaf859cd3d975f06" +dependencies = [ + "cust_derive", + "glam", + "mint", + "vek", +] + +[[package]] +name = "cust_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3bc95fe629aed92b2423de6ccff9e40174b21d19cb6ee6281a4d04ac72f66" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "cust_raw" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf40d6ade12cb9828bbc844b9875c7b93d25e67a3c9bf61c7aa3ae09e402bf8" +dependencies = [ + "find_cuda_helper", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.106", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "dashu" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b3e5ac1e23ff1995ef05b912e2b012a8784506987a2651552db2c73fb3d7e0" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-macros", + "dashu-ratio", + "rustversion", +] + +[[package]] +name = "dashu-base" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b80bf6b85aa68c58ffea2ddb040109943049ce3fbdf4385d0380aef08ef289" + +[[package]] +name = "dashu-float" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" +dependencies = [ + "dashu-base", + "dashu-int", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-int" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" +dependencies = [ + "cfg-if", + "dashu-base", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93381c3ef6366766f6e9ed9cf09e4ef9dec69499baf04f0c60e70d653cf0ab10" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-ratio", + "paste", + "proc-macro2", + "quote", + "rustversion", +] + +[[package]] +name = "dashu-ratio" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e33b04dd7ce1ccf8a02a69d3419e354f2bbfdf4eb911a0b7465487248764c9" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "num-modular", + "num-order", + "rustversion", +] + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.106", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "unicode-xid", +] + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror 1.0.69", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.4.6", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.60.2", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users 0.4.6", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "docker-generate" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf673e0848ef09fa4aeeba78e681cf651c0c7d35f76ee38cec8e55bc32fa111" + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand 0.8.5", + "reqwest 0.12.23", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "duplicate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "proc-macro2-diagnostics", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff 0.13.1", + "generic-array 0.14.7", + "group 0.13.0", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand 0.8.5", + "rlp", + "serde", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand 0.8.5", + "scrypt", + "serde", + "serde_json", + "sha2 0.10.9", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", + "uuid 0.8.2", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest 0.11.27", + "serde", + "serde_json", + "syn 2.0.106", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata 0.18.1", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array 0.14.7", + "k256", + "num_enum 0.7.4", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum 0.26.3", + "syn 2.0.106", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +dependencies = [ + "chrono", + "ethers-core", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-tungstenite 0.20.1", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" +dependencies = [ + "cfg-if", + "const-hex", + "dirs 5.0.1", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.26", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi 0.5.1", +] + +[[package]] +name = "eventsource-stream" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" +dependencies = [ + "futures-core", + "nom", + "pin-project-lite", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" + +[[package]] +name = "find_cuda_helper" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f9e65c593dd01ac77daad909ea4ad17f0d6d1776193fc8ea766356177abdad" +dependencies = [ + "glob", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers 0.2.6", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "gdbstub" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b686b198dfaa4109ebd0443d2841bc521e4b4b2915f1d84b3bb50332a8cdc1ae" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "log", + "managed", + "num-traits", + "paste", +] + +[[package]] +name = "gdbstub_arch" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22dde0e1b68787036ccedd0b1ff6f953527a0e807e571fbe898975203027278f" +dependencies = [ + "gdbstub", + "num-traits", +] + +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "generic-array" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" +dependencies = [ + "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.3+wasi-0.2.4", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "indexmap 2.11.0", + "stable_deref_trait", +] + +[[package]] +name = "glam" +version = "0.20.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43e957e744be03f5801a55472f593d43fabdebf25a4585db250f04d86b1675f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "memuse", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.11.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap 2.11.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "halo2" +version = "0.1.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a23c779b38253fe1538102da44ad5bd5378495a61d2c4ee18d64eaa61ae5995" +dependencies = [ + "halo2_proofs", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core 0.6.4", + "rayon", +] + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version 0.4.1", + "serde", + "spin 0.9.8", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "log", + "rustls 0.21.12", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper 1.7.0", + "hyper-util", + "rustls 0.23.31", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tower-service", + "webpki-roots 1.0.2", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper 1.7.0", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.7.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.0", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.61.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "include_bytes_aligned" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" + +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +dependencies = [ + "equivalent", + "hashbrown 0.15.5", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "inventory" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381", + "ff 0.12.1", + "group 0.12.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2 0.10.9", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph 0.6.5", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "sha2 0.10.9", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom 0.2.16", + "rand 0.8.5", + "serde", + "serde_json", +] + +[[package]] +name = "lazy-regex" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +dependencies = [ + "lazy-regex-proc_macros", + "once_cell", + "regex", +] + +[[package]] +name = "lazy-regex-proc_macros" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "syn 2.0.106", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.3", +] + +[[package]] +name = "liblzma" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10bf66f4598dc77ff96677c8e763655494f00ff9c1cf79e2eb5bb07bc31f807d" +dependencies = [ + "liblzma-sys", +] + +[[package]] +name = "liblzma-sys" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01b9596486f6d60c3bbe644c0e1be1aa6ccc472ad630fe8927b456973d7cb736" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +dependencies = [ + "bitflags 2.9.4", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "lru" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "malachite" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fbdf9cb251732db30a7200ebb6ae5d22fe8e11397364416617d2c2cf0c51cb5" +dependencies = [ + "malachite-base", + "malachite-float", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-base" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea0ed76adf7defc1a92240b5c36d5368cfe9251640dcce5bd2d0b7c1fd87aeb" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.11.0", + "libm", + "ryu", +] + +[[package]] +name = "malachite-float" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9d20db1c73759c1377db7b27575df6f2eab7368809dd62c0a715dc1bcc39f7" +dependencies = [ + "itertools 0.11.0", + "malachite-base", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-nz" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34a79feebb2bc9aa7762047c8e5495269a367da6b5a90a99882a0aeeac1841f7" +dependencies = [ + "itertools 0.11.0", + "libm", + "malachite-base", +] + +[[package]] +name = "malachite-q" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f235d5747b1256b47620f5640c2a17a88c7569eebdf27cd9cb130e1a619191" +dependencies = [ + "itertools 0.11.0", + "malachite-base", + "malachite-nz", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "managed" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d" + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "maybe-async" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memmap2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +dependencies = [ + "libc", +] + +[[package]] +name = "memuse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.9.4", + "block", + "core-graphics-types", + "foreign-types 0.5.0", + "log", + "objc", + "paste", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mint" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", + "rayon", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "no_std_strings" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive 0.7.4", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "nvtx" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2e855e8019f99e4b94ac33670eb4e4f570a2e044f3749a0b2c7f83b841e52c" +dependencies = [ + "cc", +] + +[[package]] +name = "nybbles" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + +[[package]] +name = "nybbles" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" +dependencies = [ + "alloy-rlp", + "cfg-if", + "proptest", + "ruint", + "serde", + "smallvec", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "flate2", + "memchr", + "ruzstd", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "outref" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.9", +] + +[[package]] +name = "p3-air" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" +dependencies = [ + "p3-field", + "p3-matrix", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" +dependencies = [ + "ff 0.13.1", + "num-bigint 0.4.6", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-field", + "p3-matrix", + "p3-util", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-interpolation", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-interpolation" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-util", +] + +[[package]] +name = "p3-keccak-air" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" +dependencies = [ + "p3-air", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand 0.8.5", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" +dependencies = [ + "itertools 0.12.1", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.1", + "group 0.13.0", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2 0.10.9", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pest" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +dependencies = [ + "memchr", + "thiserror 2.0.16", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap 2.11.0", +] + +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset 0.5.7", + "indexmap 2.11.0", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless", + "serde", +] + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.106", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit 0.22.27", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "version_check", + "yansi 1.0.1", +] + +[[package]] +name = "proof_aggregator" +version = "0.1.0" +dependencies = [ + "aligned-sdk", + "alloy 0.15.11", + "backon", + "bincode", + "c-kzg", + "ciborium", + "lambdaworks-crypto", + "rayon", + "reqwest 0.12.23", + "risc0-build", + "risc0-ethereum-contracts", + "risc0-zkvm 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0_aggregation_program", + "serde", + "serde_json", + "serde_yaml", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sp1-build", + "sp1-sdk", + "sp1_aggregation_program", + "tokio", + "tracing", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.9.4", + "lazy_static", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +dependencies = [ + "heck 0.5.0", + "itertools 0.14.0", + "log", + "multimap", + "once_cell", + "petgraph 0.7.1", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 2.0.106", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "prost-types" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost", +] + +[[package]] +name = "puffin" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9dae7b05c02ec1a6bc9bcf20d8bc64a7dcbf57934107902a872014899b741f" +dependencies = [ + "anyhow", + "byteorder", + "cfg-if", + "itertools 0.10.5", + "once_cell", + "parking_lot", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "socket2 0.6.0", + "thiserror 2.0.16", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.2", + "ring 0.17.14", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "rustls-pki-types", + "slab", + "thiserror 2.0.16", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.0", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rayon-scan" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f87cc11a0140b4b0da0ffc889885760c61b13672d80a908920b2c0df078fa14" +dependencies = [ + "rayon", +] + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags 2.9.4", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.16", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "regex" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-rustls 0.27.7", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.31", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.2", + "tokio-util", + "tower 0.5.2", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots 1.0.2", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +dependencies = [ + "anyhow", + "async-trait", + "http 1.3.1", + "reqwest 0.12.23", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ringbuffer" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "risc0-binfmt" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more 2.0.1", + "elf", + "lazy_static", + "postcard", + "rand 0.9.2", + "risc0-zkp 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-zkvm-platform 2.2.1", + "ruint", + "semver 1.0.26", + "serde", + "tracing", +] + +[[package]] +name = "risc0-binfmt" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more 2.0.1", + "elf", + "lazy_static", + "postcard", + "rand 0.9.2", + "risc0-zkp 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkvm-platform 2.2.0", + "ruint", + "semver 1.0.26", + "serde", + "tracing", +] + +[[package]] +name = "risc0-build" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" +dependencies = [ + "anyhow", + "cargo_metadata 0.19.2", + "derive_builder", + "dirs 6.0.0", + "docker-generate", + "hex", + "risc0-binfmt 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-zkos-v1compat 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-zkp 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-zkvm-platform 2.2.1", + "rzup", + "semver 1.0.26", + "serde", + "serde_json", + "stability", + "tempfile", +] + +[[package]] +name = "risc0-build-kernel" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" +dependencies = [ + "cc", + "directories", + "hex", + "rayon", + "sha2 0.10.9", + "tempfile", +] + +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" +dependencies = [ + "anyhow", + "bytemuck", + "cfg-if", + "keccak", + "liblzma", + "paste", + "rayon", + "risc0-binfmt 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-circuit-keccak-sys", + "risc0-circuit-recursion 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-sys", + "risc0-zkp 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing", +] + +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-circuit-recursion 4.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-core 3.0.0 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkp 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "tracing", +] + +[[package]] +name = "risc0-circuit-keccak-sys" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a8f21cc053fe9892acebbe0ebe2610a5d79ad638cd17f2e5122cf0b3e7cd1a" +dependencies = [ + "cc", + "cust", + "derive_more 2.0.1", + "glob", + "risc0-build-kernel", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-sys", + "sppark", +] + +[[package]] +name = "risc0-circuit-recursion" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" +dependencies = [ + "anyhow", + "bytemuck", + "cfg-if", + "cust", + "downloader", + "hex", + "lazy-regex", + "metal", + "rand 0.9.2", + "rayon", + "risc0-circuit-recursion-sys", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-sys", + "risc0-zkp 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "sha2 0.10.9", + "tracing", + "zip 2.4.2", +] + +[[package]] +name = "risc0-circuit-recursion" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "hex", + "metal", + "risc0-core 3.0.0 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkp 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "tracing", +] + +[[package]] +name = "risc0-circuit-recursion-sys" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" +dependencies = [ + "glob", + "risc0-build-kernel", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-sys", + "sppark", +] + +[[package]] +name = "risc0-circuit-rv32im" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" +dependencies = [ + "anyhow", + "bit-vec 0.8.0", + "bytemuck", + "byteorder", + "cfg-if", + "derive_more 2.0.1", + "enum-map", + "gdbstub", + "gdbstub_arch", + "malachite", + "num-derive", + "num-traits", + "paste", + "postcard", + "rand 0.9.2", + "rayon", + "ringbuffer", + "risc0-binfmt 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-circuit-rv32im-sys", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-sys", + "risc0-zkp 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "smallvec", + "tracing", + "wide", +] + +[[package]] +name = "risc0-circuit-rv32im" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bit-vec 0.8.0", + "bytemuck", + "derive_more 2.0.1", + "paste", + "risc0-binfmt 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-core 3.0.0 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkp 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "serde", + "tracing", +] + +[[package]] +name = "risc0-circuit-rv32im-sys" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb25f3935e53e89ca020224ad0c09de96cab89a215054c0cee290405074a5166" +dependencies = [ + "cc", + "cust", + "derive_more 2.0.1", + "glob", + "risc0-build-kernel", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-sys", + "sppark", +] + +[[package]] +name = "risc0-core" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" +dependencies = [ + "bytemuck", + "nvtx", + "puffin", + "rand_core 0.9.3", +] + +[[package]] +name = "risc0-core" +version = "3.0.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "bytemuck", + "rand_core 0.9.3", +] + +[[package]] +name = "risc0-ethereum-contracts" +version = "3.0.0" +source = "git+https://github.com/risc0/risc0-ethereum/?tag=v3.0.0#32aa0b6f23ddd02dd93fc71717667606e5c7db86" +dependencies = [ + "alloy 1.0.29", + "alloy-sol-types", + "anyhow", + "cfg-if", + "risc0-zkvm 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "risc0-groth16" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bytemuck", + "cfg-if", + "circom-witnesscalc", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-groth16-sys", + "risc0-zkp 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rzup", + "serde", + "serde_json", + "tempfile", + "tracing", + "wtns-file", +] + +[[package]] +name = "risc0-groth16" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bytemuck", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkp 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "serde", +] + +[[package]] +name = "risc0-groth16-sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580750e1394c5a79b691c8197906263f17a1d3aa7bb46a934362f1ba1475b1a5" +dependencies = [ + "anyhow", + "blst", + "risc0-build-kernel", + "sppark", +] + +[[package]] +name = "risc0-sys" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" +dependencies = [ + "anyhow", + "blst", + "cust", + "risc0-build-kernel", + "sppark", +] + +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform 2.2.1", +] + +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform 2.2.0", +] + +[[package]] +name = "risc0-zkp" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" +dependencies = [ + "anyhow", + "blake2", + "borsh", + "bytemuck", + "cfg-if", + "cust", + "digest 0.10.7", + "ff 0.13.1", + "hex", + "hex-literal", + "metal", + "ndarray", + "parking_lot", + "paste", + "rand 0.9.2", + "rand_core 0.9.3", + "rayon", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-sys", + "risc0-zkvm-platform 2.2.1", + "serde", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkp" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "blake2", + "borsh", + "bytemuck", + "cfg-if", + "digest 0.10.7", + "hex", + "hex-literal", + "metal", + "paste", + "rand_core 0.9.3", + "risc0-core 3.0.0 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkvm-platform 2.2.0", + "serde", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkvm" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" +dependencies = [ + "addr2line", + "anyhow", + "bincode", + "bonsai-sdk", + "borsh", + "bytemuck", + "bytes", + "derive_more 2.0.1", + "elf", + "enum-map", + "gdbstub", + "gdbstub_arch", + "gimli", + "hex", + "keccak", + "lazy-regex", + "num-bigint 0.4.6", + "num-traits", + "object", + "prost", + "rand 0.9.2", + "rayon", + "risc0-binfmt 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-build", + "risc0-circuit-keccak 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-circuit-recursion 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-circuit-rv32im 4.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-core 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-groth16 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-zkos-v1compat 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-zkp 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "risc0-zkvm-platform 2.2.1", + "rrs-lib", + "rustc-demangle", + "rzup", + "semver 1.0.26", + "serde", + "sha2 0.10.9", + "stability", + "tempfile", + "tracing", + "typetag", +] + +[[package]] +name = "risc0-zkvm" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more 2.0.1", + "hex", + "risc0-binfmt 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-circuit-keccak 4.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-circuit-recursion 4.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-circuit-rv32im 4.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-core 3.0.0 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-groth16 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkos-v1compat 2.2.0 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkp 3.0.2 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "risc0-zkvm-platform 2.2.0", + "rrs-lib", + "semver 1.0.26", + "serde", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkvm-platform" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "bytemuck", + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", + "libm", + "num_enum 0.7.4", + "paste", + "stability", +] + +[[package]] +name = "risc0-zkvm-platform" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" +dependencies = [ + "bytemuck", + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", + "libm", + "num_enum 0.7.4", + "paste", + "stability", +] + +[[package]] +name = "risc0_aggregation_program" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "risc0-zkvm 3.0.3 (git+https://github.com/risc0/risc0?tag=v3.0.3)", + "serde", + "serde_json", + "tiny-keccak", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rrs-lib" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4382d3af3a4ebdae7f64ba6edd9114fff92c89808004c4943b393377a25d001" +dependencies = [ + "downcast-rs", + "paste", +] + +[[package]] +name = "rrs-succinct" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" +dependencies = [ + "downcast-rs", + "num_enum 0.5.11", + "paste", +] + +[[package]] +name = "rsa" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "ruint" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "borsh", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.26", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.60.2", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.14", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +dependencies = [ + "aws-lc-rs", + "log", + "once_cell", + "ring 0.17.14", + "rustls-pki-types", + "rustls-webpki 0.103.4", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.3.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +dependencies = [ + "aws-lc-rs", + "ring 0.17.14", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ruzstd" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad02996bfc73da3e301efe90b1837be9ed8f4a462b6ed410aa35d00381de89f" +dependencies = [ + "twox-hash", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "rzup" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" +dependencies = [ + "hex", + "rsa", + "semver 1.0.26", + "serde", + "serde_with", + "sha2 0.10.9", + "strum 0.27.2", + "tempfile", + "thiserror 2.0.16", + "toml", + "yaml-rust2", +] + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "scc" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2 0.10.9", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "sdd" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys", + "serde", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_json" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.11.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.11.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "serial_test" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha2-v0.10.8-patch-v1#1f224388fdede7cef649bce0d63876d1a9e3f515" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1#8f6d303c0861ba7e5adcc36207c0f41fe5edaabc" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.16", + "time", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "sp1-build" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb5e809974422e96b9033f1db60405e72a776faa49f39c8d4dfc6da3943a385" +dependencies = [ + "anyhow", + "cargo_metadata 0.18.1", + "chrono", + "clap", + "dirs 5.0.1", + "sp1-prover", +] + +[[package]] +name = "sp1-core-executor" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc79ba7a23ee664870ac6dd9ca8125d9fd0bb1c6acb13cb34cb1c0b81458e89" +dependencies = [ + "bincode", + "bytemuck", + "clap", + "elf", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "nohash-hasher", + "num", + "p3-baby-bear", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "range-set-blaze", + "rrs-succinct", + "serde", + "serde_json", + "sp1-curves", + "sp1-primitives", + "sp1-stark", + "strum 0.26.3", + "strum_macros 0.26.4", + "subenum", + "thiserror 1.0.69", + "tiny-keccak", + "tracing", + "typenum", + "vec_map", +] + +[[package]] +name = "sp1-core-machine" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1cbc279cf9dcf1faabc8d9b592027cf5ce5bfea6d44d2da58351379f92dba1" +dependencies = [ + "bincode", + "cbindgen", + "cc", + "cfg-if", + "elliptic-curve", + "generic-array 1.1.0", + "glob", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "k256", + "num", + "num_cpus", + "p256", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-field", + "p3-keccak-air", + "p3-matrix", + "p3-maybe-rayon", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "pathdiff", + "rand 0.8.5", + "rayon", + "rayon-scan", + "serde", + "serde_json", + "size", + "snowbridge-amcl", + "sp1-core-executor", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "strum 0.26.3", + "strum_macros 0.26.4", + "tempfile", + "thiserror 1.0.69", + "tracing", + "tracing-forest", + "tracing-subscriber 0.3.20", + "typenum", + "web-time", +] + +[[package]] +name = "sp1-cuda" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a04cfd497bcb85d52eccd3718ddc8d88f17bfc4aefa288b41d1b0b21a065f3fc" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-curves" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69234f4667ae1a00f7bfb90b42d6aa141744114b128ac262b9a28e9c869cf514" +dependencies = [ + "cfg-if", + "dashu", + "elliptic-curve", + "generic-array 1.1.0", + "itertools 0.13.0", + "k256", + "num", + "p256", + "p3-field", + "serde", + "snowbridge-amcl", + "sp1-primitives", + "sp1-stark", + "typenum", +] + +[[package]] +name = "sp1-derive" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a736bce661752b1d6ecf33eca197443fb535124b3caabd332862d6f8258e3c8d" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-lib" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1fe81b6f87134f9170cb642f948ae41e0ee1cd3785e0cb665add5b67106d1a" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dddd8d022840c1c500e0d7f82e9b9cf080b7dabd469f06b394010e6a594f692b" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2 0.10.9", +] + +[[package]] +name = "sp1-prover" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b14da2fa5bea1b2fffccda3f5c0c9a153a766f412c5259ea75302e58629e7c" +dependencies = [ + "anyhow", + "bincode", + "clap", + "dirs 5.0.1", + "downloader", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "lru 0.12.5", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rayon", + "serde", + "serde_json", + "serial_test", + "sha2 0.10.9", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "thiserror 1.0.69", + "tracing", + "tracing-appender", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c956633f64e93396eecc712d6516cfda94f32c0855d149b71dc43911e7b7f26f" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-traits", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rand 0.8.5", + "rayon", + "serde", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "tracing", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61aa201b49cbdd52be19faec75f648e7e5e2c4930bcea7f4d1f1dbb3882cc518" +dependencies = [ + "backtrace", + "itertools 0.13.0", + "p3-baby-bear", + "p3-bn254-fr", + "p3-field", + "p3-symmetric", + "serde", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-stark", + "tracing", + "vec_map", +] + +[[package]] +name = "sp1-recursion-core" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e919d8031abe3b01ed001d5877801c2edcea0d98de56786a3e631a10fea3400d" +dependencies = [ + "backtrace", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "pathdiff", + "rand 0.8.5", + "serde", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "thiserror 1.0.69", + "tracing", + "vec_map", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c8467ade873bf1e43d8e6386a7feaac6e9603c12771fb33c5b0c0a6f3c63bc" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b651c433d85aaa869fb581f5209626c80c2a345191fac7419a2e97aaad017bbc" +dependencies = [ + "anyhow", + "bincode", + "bindgen 0.70.1", + "cc", + "cfg-if", + "hex", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-symmetric", + "serde", + "serde_json", + "sha2 0.10.9", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-stark", + "tempfile", + "tracing", +] + +[[package]] +name = "sp1-sdk" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ed77ad8133ef4d915ad55ce700b53cd32a72fc3829ae4ad0fdf4db1982c983a" +dependencies = [ + "alloy-primitives", + "alloy-signer 1.0.29", + "alloy-signer-aws", + "alloy-signer-local 1.0.29", + "alloy-sol-types", + "anyhow", + "async-trait", + "aws-config", + "aws-sdk-kms", + "backoff", + "bincode", + "cfg-if", + "dirs 5.0.1", + "eventsource-stream", + "futures", + "hashbrown 0.14.5", + "hex", + "indicatif", + "itertools 0.13.0", + "k256", + "p3-baby-bear", + "p3-field", + "p3-fri", + "prost", + "reqwest 0.12.23", + "reqwest-middleware", + "rustls 0.23.31", + "serde", + "serde_json", + "sp1-build", + "sp1-core-executor", + "sp1-core-machine", + "sp1-cuda", + "sp1-primitives", + "sp1-prover", + "sp1-stark", + "strum 0.26.3", + "strum_macros 0.26.4", + "sysinfo", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tonic", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-stark" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48b9b57606ab0eb9560f0456dc978166ab0a3bd9d8b3f2ab24ea5e1377c56f07" +dependencies = [ + "arrayref", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rayon-scan", + "serde", + "sp1-derive", + "sp1-primitives", + "strum 0.26.3", + "strum_macros 0.26.4", + "sysinfo", + "tracing", +] + +[[package]] +name = "sp1-zkvm" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18636018d03fcee05736c3a214eeb7c831c5ba2ef08b1bcffbfdb108998e7663" +dependencies = [ + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", + "lazy_static", + "libm", + "p3-baby-bear", + "p3-field", + "rand 0.8.5", + "sha2 0.10.9", + "sp1-lib", + "sp1-primitives", +] + +[[package]] +name = "sp1_aggregation_program" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8 (git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1)", + "sp1-zkvm", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sppark" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdc4f02f557e3037bbe2a379cac8be6e014a67beb7bf0996b536979392f6361" +dependencies = [ + "cc", + "which", +] + +[[package]] +name = "stability" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" +dependencies = [ + "quote", + "syn 2.0.106", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.106", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "subenum" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f5d5dfb8556dd04017db5e318bbeac8ab2b0c67b76bf197bfb79e9b29f18ecf" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs 5.0.1", + "fs2", + "hex", + "once_cell", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror 1.0.69", + "url", + "zip 0.6.6", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0b198d366dbec045acfcd97295eb653a7a2b40e4dc764ef1e79aafcad439d3c" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.9.4", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.8", + "windows-sys 0.60.2", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +dependencies = [ + "thiserror-impl 2.0.16", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "slab", + "socket2 0.6.0", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls 0.23.31", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite 0.20.1", + "webpki-roots 0.25.4", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite 0.23.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.11.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.11.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow 0.7.13", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs 0.8.1", + "rustls-pemfile 2.2.0", + "socket2 0.5.10", + "tokio", + "tokio-rustls 0.26.2", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.4", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-forest" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror 1.0.69", + "tracing", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "futures", + "futures-task", + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "rand 0.8.5", + "rustls 0.21.12", + "sha1", + "thiserror 1.0.69", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "native-tls", + "rand 0.8.5", + "sha1", + "thiserror 1.0.69", + "utf-8", +] + +[[package]] +name = "twirp-rs" +version = "0.13.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27dfcc06b8d9262bc2d4b8d1847c56af9971a52dd8a0076876de9db763227d0d" +dependencies = [ + "async-trait", + "axum", + "futures", + "http 1.3.1", + "http-body-util", + "hyper 1.7.0", + "prost", + "reqwest 0.12.23", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tower 0.5.2", + "url", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "typetag" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f22b40dd7bfe8c14230cf9702081366421890435b2d625fa92b4acc4c3de6f" +dependencies = [ + "erased-serde", + "inventory", + "once_cell", + "serde", + "typetag-impl", +] + +[[package]] +name = "typetag-impl" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.16", + "serde", +] + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +dependencies = [ + "serde", +] + +[[package]] +name = "vek" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8085882662f9bc47fc8b0cdafa5e19df8f592f650c02b9083da8d45ac9eebd17" +dependencies = [ + "approx", + "num-integer", + "num-traits", + "rustc_version 0.4.1", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.3+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.44", +] + +[[package]] +name = "wide" +version = "0.7.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +dependencies = [ + "windows-sys 0.60.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "ws_stream_wasm" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper 0.6.0", + "thiserror 2.0.16", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wtns-file" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3b856452298f68a5879e3901918bac5d753ca9fa4be8a983a37a3d25dabf0a" +dependencies = [ + "byteorder", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xmlparser" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" + +[[package]] +name = "yaml-rust2" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.11.0", + "memchr", + "thiserror 2.0.16", + "zopfli", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2", + "bls12_381", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand 0.8.5", + "serde", + "sha2 0.10.9", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle", +] + +[[package]] +name = "zopfli" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/aggregation_mode/Cargo.toml b/aggregation_mode/Cargo.toml new file mode 100644 index 0000000000..74234083ee --- /dev/null +++ b/aggregation_mode/Cargo.toml @@ -0,0 +1,63 @@ +[package] +name = "proof_aggregator" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = { version = "1.0.203", features = ["derive"] } +serde_json = "1.0.117" +serde_yaml = "0.9" +tracing = { version = "0.1", features = ["log"] } +tracing-subscriber = { version = "0.3.0", features = ["env-filter"] } +alloy = { version = "0.15", features = ["default", "signer-keystore", "kzg"] } +c-kzg = "2.1.1" +bincode = "1.3.3" +tokio = { version = "1", features = ["time"]} +sha3 = "0.10.8" +reqwest = { version = "0.12" } +ciborium = "=0.2.2" +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"]} +rayon = "1.10.0" +backon = "1.2.0" +# Necessary for the VerificationData type +aligned-sdk = { path = "../crates/sdk/" } +# zkvms +sp1-sdk = "5.0.0" +sp1_aggregation_program = { path = "./aggregation_programs/sp1" } +risc0-zkvm = { version = "3.0.3" } +risc0_aggregation_program = { path = "./aggregation_programs/risc0" } +risc0-ethereum-contracts = { git = "https://github.com/risc0/risc0-ethereum/", tag = "v3.0.0" } + +[build-dependencies] +sp1-build = { version = "5.0.0" } +risc0-build = { version = "3.0.3" } + +[package.metadata.risc0] +# Tell risc0 build to find method in ./aggregation_programs/risc0 package +methods = ["./aggregation_programs/risc0"] + +[profile.release] +opt-level = 3 + +[features] +default = [] +prove = [] +gpu = ["risc0-zkvm/cuda"] + +[[bin]] +name = "proof_aggregator_cpu" +path = "./src/main.rs" +required-features = ["prove"] + +[[bin]] +name = "proof_aggregator_gpu" +path = "./src/main.rs" +required-features = ["prove", "gpu"] + +[[bin]] +name = "proof_aggregator_dev" +path = "./src/main.rs" + +[[bin]] +name = "write_program_image_id_vk_hash" +path = "./bin/write_program_image_id_vk_hash.rs" diff --git a/aggregation_mode/README.md b/aggregation_mode/README.md new file mode 100644 index 0000000000..66c134a1a9 --- /dev/null +++ b/aggregation_mode/README.md @@ -0,0 +1,82 @@ +# Aligned aggregation mode + +## How to run it locally + +1. Deploy aligned contracts on anvil: + +```shell +make anvil_deploy_risc0_contracts +make anvil_deploy_sp1_contracts +make anvil_deploy_aligned_contracts +``` + +2. Start anvil: + +```shell +make anvil_start +``` + +3. Start batcher + +```shell +make batcher_start_local +``` + +4. Send SP1/Risc0 proofs: + +```shell +make batcher_send_sp1_burst +make batcher_send_risc0_burst +``` + +Notes: + +- For SP1 only `compressed` proofs are supported +- For Risc0 both `succinct` and `composite` proofs are supported. + +5. Start proof aggregator: + +```shell +# This will not run a real prover but a mocked one see below to run a real prover +make proof_aggregator_start_dev AGGREGATOR="sp1|risc0" +``` + +or + +```shell +make proof_aggregator_start AGGREGATOR="sp1|risc0" +``` + +Notes: + +- Stark2Snark is only supported for x86 architecture in Risc0, so you won't be able to run the risc0 aggregator on Apple Silicon. +- Proving can be quite slow without GPUs, to activate gpu run: + +```shell +make proof_aggregator_start_gpu AGGREGATOR="sp1|risc0" +``` + +### Check the logs + +1. Get latest aggregated proof: + +```shell +cast logs 0xc351628EB244ec633d5f21fBD6621e1a683B1181 'AggregatedProofVerified(bytes32,bytes32)' --from-block 0 --to-block latest --rpc-url http://localhost:8545 +``` + +## Compiling programs + +Whenever any of the programs change, you must recompile them and update their corresponding program ids in `aggregation_mode/program_ids.json`. To do this, run the following command: + +```shell +make proof_aggregator_write_program_ids +``` + +We are using docker to produce deterministic builds so that the program ids are the same for all systems. + +### Updating the program id in `AlignedProofAggregationService` contract + +If the program ids have changed, you will also need to update them in the `AlignedProofAggregationService` contract. + +- Risc0: call `setRisc0AggregatorProgramImageId` method with the value of `risc0_root_aggregator_image_id` from `aggregation_mode/program_ids.json`. +- SP1: call: `setSP1AggregatorProgramVKHash` method with the value of `sp1_root_aggregator_vk_hash` from `aggregation_mode/program_ids.json`. diff --git a/aggregation_mode/abi/AlignedLayerServiceManager.json b/aggregation_mode/abi/AlignedLayerServiceManager.json new file mode 100644 index 0000000000..2777f10c35 --- /dev/null +++ b/aggregation_mode/abi/AlignedLayerServiceManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"__avsDirectory","type":"address","internalType":"contract IAVSDirectory"},{"name":"__rewardsCoordinator","type":"address","internalType":"contract IRewardsCoordinator"},{"name":"__registryCoordinator","type":"address","internalType":"contract IRegistryCoordinator"},{"name":"__stakeRegistry","type":"address","internalType":"contract IStakeRegistry"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"alignedAggregator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"avsDirectory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchersBalances","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchesState","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"taskCreatedBlock","type":"uint32","internalType":"uint32"},{"name":"responded","type":"bool","internalType":"bool"},{"name":"respondToTaskFeeLimit","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blsApkRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IBLSApkRegistry"}],"stateMutability":"view"},{"type":"function","name":"checkPublicInput","inputs":[{"name":"publicInput","type":"bytes","internalType":"bytes"},{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"checkSignatures","inputs":[{"name":"msgHash","type":"bytes32","internalType":"bytes32"},{"name":"referenceBlockNumber","type":"uint32","internalType":"uint32"},{"name":"params","type":"tuple","internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","components":[{"name":"nonSignerQuorumBitmapIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerPubkeys","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApks","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"apkG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"sigma","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApkIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"totalStakeIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerStakeIndices","type":"uint32[][]","internalType":"uint32[][]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IBLSSignatureChecker.QuorumStakeTotals","components":[{"name":"signedStakeForQuorum","type":"uint96[]","internalType":"uint96[]"},{"name":"totalStakeForQuorum","type":"uint96[]","internalType":"uint96[]"}]},{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"createAVSRewardsSubmission","inputs":[{"name":"rewardsSubmissions","type":"tuple[]","internalType":"struct IRewardsCoordinator.RewardsSubmission[]","components":[{"name":"strategiesAndMultipliers","type":"tuple[]","internalType":"struct IRewardsCoordinator.StrategyAndMultiplier[]","components":[{"name":"strategy","type":"address","internalType":"contract IStrategy"},{"name":"multiplier","type":"uint96","internalType":"uint96"}]},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"startTimestamp","type":"uint32","internalType":"uint32"},{"name":"duration","type":"uint32","internalType":"uint32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createNewTask","inputs":[{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"batchDataPointer","type":"string","internalType":"string"},{"name":"respondToTaskFeeLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDelegationManager"}],"stateMutability":"view"},{"type":"function","name":"depositToBatcher","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deregisterOperatorFromAVS","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disableVerifier","inputs":[{"name":"verifierIdx","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabledVerifiers","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"enableVerifier","inputs":[{"name":"verifierIdx","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getOperatorRestakedStrategies","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRestakeableStrategies","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initialOwner","type":"address","internalType":"address"},{"name":"_rewardsInitiator","type":"address","internalType":"address"},{"name":"_alignedAggregator","type":"address","internalType":"address"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"_initialPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isVerifierDisabled","inputs":[{"name":"verifierIdx","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"registerOperatorToAVS","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"operatorSignature","type":"tuple","internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","components":[{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registryCoordinator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IRegistryCoordinator"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"respondToTaskV2","inputs":[{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"senderAddress","type":"address","internalType":"address"},{"name":"nonSignerStakesAndSignature","type":"tuple","internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","components":[{"name":"nonSignerQuorumBitmapIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerPubkeys","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApks","type":"tuple[]","internalType":"struct BN254.G1Point[]","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"apkG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"sigma","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"quorumApkIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"totalStakeIndices","type":"uint32[]","internalType":"uint32[]"},{"name":"nonSignerStakeIndices","type":"uint32[][]","internalType":"uint32[][]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardsInitiator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setAggregator","inputs":[{"name":"_alignedAggregator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDisabledVerifiers","inputs":[{"name":"bitmap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardsInitiator","inputs":[{"name":"newRewardsInitiator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaleStakesForbidden","inputs":[{"name":"value","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakeRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStakeRegistry"}],"stateMutability":"view"},{"type":"function","name":"staleStakesForbidden","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"trySignatureAndApkVerification","inputs":[{"name":"msgHash","type":"bytes32","internalType":"bytes32"},{"name":"apk","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]},{"name":"apkG2","type":"tuple","internalType":"struct BN254.G2Point","components":[{"name":"X","type":"uint256[2]","internalType":"uint256[2]"},{"name":"Y","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"sigma","type":"tuple","internalType":"struct BN254.G1Point","components":[{"name":"X","type":"uint256","internalType":"uint256"},{"name":"Y","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"pairingSuccessful","type":"bool","internalType":"bool"},{"name":"siganatureIsValid","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAVSMetadataURI","inputs":[{"name":"_metadataURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyBatchInclusion","inputs":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"pubInputCommitment","type":"bytes32","internalType":"bytes32"},{"name":"provingSystemAuxDataCommitment","type":"bytes32","internalType":"bytes32"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"},{"name":"senderAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BatchVerified","inputs":[{"name":"batchMerkleRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"senderAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BatcherBalanceUpdated","inputs":[{"name":"batcher","type":"address","indexed":true,"internalType":"address"},{"name":"newBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NewBatchV2","inputs":[{"name":"batchMerkleRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"senderAddress","type":"address","indexed":false,"internalType":"address"},{"name":"taskCreatedBlock","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"batchDataPointer","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"NewBatchV3","inputs":[{"name":"batchMerkleRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"senderAddress","type":"address","indexed":false,"internalType":"address"},{"name":"taskCreatedBlock","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"batchDataPointer","type":"string","indexed":false,"internalType":"string"},{"name":"respondToTaskFeeLimit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"RewardsInitiatorUpdated","inputs":[{"name":"prevRewardsInitiator","type":"address","indexed":false,"internalType":"address"},{"name":"newRewardsInitiator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StaleStakesForbiddenUpdate","inputs":[{"name":"value","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"VerifierDisabled","inputs":[{"name":"verifierIdx","type":"uint8","indexed":true,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"VerifierEnabled","inputs":[{"name":"verifierIdx","type":"uint8","indexed":true,"internalType":"uint8"}],"anonymous":false},{"type":"error","name":"BatchAlreadyResponded","inputs":[{"name":"batchIdentifierHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"BatchAlreadySubmitted","inputs":[{"name":"batchIdentifierHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"BatchDoesNotExist","inputs":[{"name":"batchIdentifierHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InsufficientFunds","inputs":[{"name":"batcher","type":"address","internalType":"address"},{"name":"required","type":"uint256","internalType":"uint256"},{"name":"available","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidAddress","inputs":[{"name":"param","type":"string","internalType":"string"}]},{"type":"error","name":"InvalidDepositAmount","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidQuorumThreshold","inputs":[{"name":"signedStake","type":"uint256","internalType":"uint256"},{"name":"requiredStake","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SenderIsNotAggregator","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"alignedAggregator","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x61018060405234801561001157600080fd5b50604051616065380380616065833981016040819052610030916103fb565b6001600160a01b0380851660805280841660a05280831660c052811660e052818484828461005c610327565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dd919061045a565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610135573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610159919061045a565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d8919061045a565b6001600160a01b03908116610160528516905061022c57604051630b0f5aa160e11b815260206004820152600c60248201526b6176734469726563746f727960a01b60448201526064015b60405180910390fd5b6001600160a01b03831661027857604051630b0f5aa160e11b81526020600482015260126024820152713932bbb0b93239a1b7b7b93234b730ba37b960711b6044820152606401610223565b6001600160a01b0382166102cf57604051630b0f5aa160e11b815260206004820152601360248201527f7265676973747279436f6f7264696e61746f72000000000000000000000000006044820152606401610223565b6001600160a01b03811661031657604051630b0f5aa160e11b815260206004820152600d60248201526c7374616b65526567697374727960981b6044820152606401610223565b61031e610327565b5050505061047e565b600054610100900460ff161561038f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610223565b60005460ff90811610156103e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146103f857600080fd5b50565b6000806000806080858703121561041157600080fd5b845161041c816103e3565b602086015190945061042d816103e3565b604086015190935061043e816103e3565b606086015190925061044f816103e3565b939692955090935050565b60006020828403121561046c57600080fd5b8151610477816103e3565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051615ada61058b600039600081816107d80152611c690152600081816105290152611e7c01526000818161055d0152818161206901526122590152600081816105c40152818161146f0152818161192f01528181611ad60152611d1d0152600081816111a7015281816112f80152818161138f01528181612e8201528181612ffb015261309a015260008181610fce0152818161105d015281816110dd01528181612619015281816126e501528181612dbd0152612f560152600081816137580152818161381401526138f701526000818161058e0152818161266d0152818161274101526127c00152615ada6000f3fe60806040526004361061026b5760003560e01c8063886f119511610144578063df5cf723116100b6578063f7013ef61161007a578063f7013ef614610872578063f9120af614610892578063fabc1cbc146108b2578063fc299dee146108d2578063fce36c7d146108f2578063fd4c3b7c1461091257600080fd5b8063df5cf723146107c6578063e481af9d146107fa578063ea5ca34b1461080f578063f2fde38b14610825578063f474b5201461084557600080fd5b8063a98fb35511610108578063a98fb355146106cf578063ab21739a146106ef578063b099627e1461070f578063b753645e14610779578063b98d090814610799578063d66eaabd146107b357600080fd5b8063886f1195146106315780638da5cb5b1461065157806395c6d6041461066f5780639926ee7d1461068f578063a364f4da146106af57600080fd5b80634a5bf632116101dd5780635df45946116101a15780635df4594614610517578063683048351461054b5780636b3aa72e1461057f5780636d14a987146105b257806370a08231146105e6578063715018a61461061c57600080fd5b80634a5bf6321461044d5780634ae07c3714610485578063595c6a67146104b35780635ac86ab7146104c85780635c975abb146104f857600080fd5b806318daeeaf1161022f57806318daeeaf1461038d5780632e1a7d4d146103ad57806333cfb7b7146103cd5780633bc28c8c146103fa578063416c7e5e1461041a5780634223d5511461043a57600080fd5b806306045a91146102b257806310d67a2f146102e7578063136439dd14610307578063137122b514610327578063171f1d5b1461035657600080fd5b366102ad5760fc546005906020908116036102a15760405162461bcd60e51b81526004016102989061495a565b60405180910390fd5b6102ab3334610932565b005b600080fd5b3480156102be57600080fd5b506102d26102cd366004614ab9565b6109c2565b60405190151581526020015b60405180910390f35b3480156102f357600080fd5b506102ab610302366004614b5a565b610ae4565b34801561031357600080fd5b506102ab610322366004614b77565b610b97565b34801561033357600080fd5b506102d2610342366004614b9f565b60cc54600160ff9092169190911b16151590565b34801561036257600080fd5b50610376610371366004614c7d565b610cd6565b6040805192151583529015156020830152016102de565b34801561039957600080fd5b506102ab6103a8366004614b9f565b610e60565b3480156103b957600080fd5b506102ab6103c8366004614b77565b610ea8565b3480156103d957600080fd5b506103ed6103e8366004614b5a565b610fa9565b6040516102de9190614cce565b34801561040657600080fd5b506102ab610415366004614b5a565b61145c565b34801561042657600080fd5b506102ab610435366004614d1d565b61146d565b6102ab610448366004614b5a565b6115a4565b34801561045957600080fd5b5060cb5461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561049157600080fd5b506104a56104a0366004615015565b6115da565b6040516102de9291906150b0565b3480156104bf57600080fd5b506102ab61250e565b3480156104d457600080fd5b506102d26104e3366004614b9f565b60fc54600160ff9092169190911b9081161490565b34801561050457600080fd5b5060fc545b6040519081526020016102de565b34801561052357600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055757600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046d565b3480156105be57600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f257600080fd5b50610509610601366004614b5a565b6001600160a01b0316600090815260ca602052604090205490565b34801561062857600080fd5b506102ab6125d5565b34801561063d57600080fd5b5060fb5461046d906001600160a01b031681565b34801561065d57600080fd5b506033546001600160a01b031661046d565b34801561067b57600080fd5b506102d261068a366004615141565b6125e9565b34801561069b57600080fd5b506102ab6106aa36600461518c565b61260e565b3480156106bb57600080fd5b506102ab6106ca366004614b5a565b6126da565b3480156106db57600080fd5b506102ab6106ea366004615243565b6127a1565b3480156106fb57600080fd5b506102ab61070a366004615293565b6127f5565b34801561071b57600080fd5b5061075761072a366004614b77565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102de565b34801561078557600080fd5b506102ab610794366004614b77565b612bc7565b3480156107a557600080fd5b506097546102d29060ff1681565b6102ab6107c13660046152ba565b612bd4565b3480156107d257600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080657600080fd5b506103ed612db7565b34801561081b57600080fd5b5061050960cc5481565b34801561083157600080fd5b506102ab610840366004614b5a565b613163565b34801561085157600080fd5b50610509610860366004614b5a565b60ca6020526000908152604090205481565b34801561087e57600080fd5b506102ab61088d36600461530c565b6131d9565b34801561089e57600080fd5b506102ab6108ad366004614b5a565b6133f9565b3480156108be57600080fd5b506102ab6108cd366004614b77565b613423565b3480156108de57600080fd5b5060655461046d906001600160a01b031681565b3480156108fe57600080fd5b506102ab61090d366004615370565b61357f565b34801561091e57600080fd5b506102ab61092d366004614b9f565b61392e565b8060000361095657604051632097692160e11b815260048101829052602401610298565b6001600160a01b038216600090815260ca60205260408120805483929061097e9084906153fb565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a25050565b60fc546000906002906004908116036109ed5760405162461bcd60e51b81526004016102989061495a565b60006001600160a01b038416610a04575085610a30565b8684604051602001610a1792919061540e565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610a55576000925050610ad7565b600081815260c96020526040902054640100000000900460ff16610a7d576000925050610ad7565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610ad1888a838a613975565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615429565b6001600160a01b0316336001600160a01b031614610b8b5760405162461bcd60e51b815260040161029890615446565b610b948161398d565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190615490565b610c1f5760405162461bcd60e51b8152600401610298906154ad565b60fc5481811614610c985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d1e57610d1e6154f5565b60200201518951600160200201518a60200151600060028110610d4357610d436154f5565b60200201518b60200151600160028110610d5f57610d5f6154f5565b602090810291909101518c518d830151604051610dbc9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610ddf919061550b565b9050610e52610df8610df18884613a84565b8690613b15565b610e00613baa565b610e48610e3985610e33604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613a84565b610e428c613c6a565b90613b15565b886201d4c0613cf9565b909890975095505050505050565b610e68613f13565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b60fc54600390600890811603610ed05760405162461bcd60e51b81526004016102989061495a565b33600090815260ca6020526040902054821115610f215733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018490526044820152606401610298565b33600090815260ca602052604081208054849290610f4090849061552d565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a2604051339083156108fc029084906000818181858888f19350505050158015610fa4573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190615540565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190615559565b90506001600160c01b038116158061116257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190615582565b60ff16155b156111825760408051600080825260208201909252905b50949350505050565b6000611196826001600160c01b0316613f6d565b90506000805b8251811015611262577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106111e6576111e66154f5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190615540565b61125890836153fb565b915060010161119c565b506000816001600160401b0381111561127d5761127d614991565b6040519080825280602002602001820160405280156112a6578160200160208202803683370190505b5090506000805b845181101561144f5760008582815181106112ca576112ca6154f5565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113639190615540565b905060005b81811015611444576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140191906155b4565b60000151868681518110611417576114176154f5565b6001600160a01b039092166020928302919091019091015284611439816155f7565b955050600101611368565b5050506001016112ad565b5090979650505050505050565b611464613f13565b610b948161402f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190615429565b6001600160a01b0316336001600160a01b03161461159b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610298565b610b9481614098565b60fc546004906010908116036115cc5760405162461bcd60e51b81526004016102989061495a565b6115d68234610932565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561163657508260a0015151604051806040016040528060018152602001600081525051145b801561165d57508260c0015151604051806040016040528060018152602001600081525051145b801561168457508260e0015151604051806040016040528060018152602001600081525051145b6116ee5760405162461bcd60e51b81526020600482015260416024820152600080516020615a8583398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610298565b825151602084015151146117665760405162461bcd60e51b815260206004820152604460248201819052600080516020615a85833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610298565b4363ffffffff168463ffffffff16106117d55760405162461bcd60e51b815260206004820152603c6024820152600080516020615a8583398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610298565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b0381111561189657611896614991565b6040519080825280602002602001820160405280156118bf578160200160208202803683370190505b5081526020860151516001600160401b038111156118df576118df614991565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50816020018190525060006119b460405180604001604052806001815260200160008152507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af9190615582565b6140df565b905060005b876020015151811015611c45576119fe886020015182815181106119df576119df6154f5565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611a1457611a146154f5565b60209081029190910101528015611ad4576020830151611a3560018361552d565b81518110611a4557611a456154f5565b602002602001015160001c83602001518281518110611a6657611a666154f5565b602002602001015160001c11611ad4576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a8583398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110611b1957611b196154f5565b60200260200101518b8b600001518581518110611b3857611b386154f5565b60200260200101516040518463ffffffff1660e01b8152600401611b759392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb69190615559565b6001600160c01b031683600001518281518110611bd557611bd56154f5565b602002602001018181525050611c3b610df1611c0f8486600001518581518110611c0157611c016154f5565b602002602001015116614172565b8a602001518481518110611c2557611c256154f5565b602002602001015161419d90919063ffffffff16565b94506001016119b9565b5050611c5083614280565b60975490935060ff16600081611c67576000611ce9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce99190615540565b905060005b6040518060400160405280600181526020016000815250518110156123df578215611e7a578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611d7257611d726154f5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dda9190615540565b611de491906153fb565b11611e7a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a8583398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ed157611ed16154f5565b602001015160f81c60f81b60f81c8c8c60a001518581518110611ef657611ef66154f5565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190615610565b6001600160401b031916611f998a6040015183815181106119df576119df6154f5565b67ffffffffffffffff1916146120355760405162461bcd60e51b81526020600482015260616024820152600080516020615a8583398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610298565b6120658960400151828151811061204e5761204e6154f5565b602002602001015187613b1590919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106120be576120be6154f5565b602001015160f81c60f81b60f81c8c8c60c0015185815181106120e3576120e36154f5565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612163919061563b565b85602001518281518110612179576121796154f5565b6001600160601b039092166020928302919091018201528501518051829081106121a5576121a56154f5565b6020026020010151856000015182815181106121c3576121c36154f5565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156123d5576122528660000151828151811061220d5761220d6154f5565b60200260200101516040518060400160405280600181526020016000815250858151811061223d5761223d6154f5565b016020015160f81c60ff161c60019081161490565b156123cd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106122ae576122ae6154f5565b602001015160f81c60f81b60f81c8e896020015185815181106122d3576122d36154f5565b60200260200101518f60e0015188815181106122f1576122f16154f5565b6020026020010151878151811061230a5761230a6154f5565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612392919061563b565b87518051859081106123a6576123a66154f5565b602002602001018181516123ba9190615658565b6001600160601b03169052506001909101905b6001016121e7565b5050600101611cee565b5050506000806123f98a868a606001518b60800151610cd6565b915091508161246a5760405162461bcd60e51b81526020600482015260436024820152600080516020615a8583398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610298565b806124cb5760405162461bcd60e51b81526020600482015260396024820152600080516020615a8583398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610298565b505060008782602001516040516020016124e6929190615677565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a9190615490565b6125965760405162461bcd60e51b8152600401610298906154ad565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6125dd613f13565b6125e7600061431b565b565b60008184846040516125fc9291906156bf565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126565760405162461bcd60e51b8152600401610298906156cf565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906126a4908590859060040161578d565b600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127225760405162461bcd60e51b8152600401610298906156cf565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050505050565b6127a9613f13565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb3559061276c9084906004016157d8565b60cb546001600160a01b031633146128355760cb54604051632cbe419560e01b81523360048201526001600160a01b039091166024820152604401610298565b60fc5460019060029081160361285d5760405162461bcd60e51b81526004016102989061495a565b60005a90506000858560405160200161287792919061540e565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff90911690036128cc576040516311cb69a760e11b815260048101839052602401610298565b8054640100000000900460ff16156128fa57604051634e78d7f960e11b815260048101839052602401610298565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca6020526040902054101561297d5760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b8152600481019290925260248201929092526044810191909152606401610298565b805460009061299490849063ffffffff16886115da565b509050604360ff1681602001516000815181106129b3576129b36154f5565b60200260200101516129c591906157eb565b6001600160601b0316606482600001516000815181106129e7576129e76154f5565b60200260200101516001600160601b0316612a029190615814565b1015612a955760648160000151600081518110612a2157612a216154f5565b60200260200101516001600160601b0316612a3c9190615814565b604360ff168260200151600081518110612a5857612a586154f5565b6020026020010151612a6a91906157eb565b60405163530f5c4560e11b815260048101929092526001600160601b03166024820152604401610298565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ae1908761552d565b612aee90620111706153fb565b612af89190615814565b9050600083600101548210612b11578360010154612b13565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612b4090849061552d565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612bba573d6000803e3d6000fd5b5050505050505050505050565b612bcf613f13565b60cc55565b60fc54600090600190811603612bfc5760405162461bcd60e51b81526004016102989061495a565b60008533604051602001612c1192919061540e565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612c6057604051630c40bc4360e21b815260048101829052602401610298565b3415612cbd5733600090815260ca602052604081208054349290612c859084906153fb565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a25b33600090815260ca6020526040902054831115612d0e5733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018590526044820152606401610298565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612da6913391908b908b908b9061582b565b60405180910390a250505050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d9190615582565b60ff16905080600003612e5e57505060408051600081526020810190915290565b6000805b82811015612f0957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef59190615540565b612eff90836153fb565b9150600101612e62565b506000816001600160401b03811115612f2457612f24614991565b604051908082528060200260200182016040528015612f4d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd69190615582565b60ff1681101561315957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e9190615540565b905060005b8181101561314f576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c91906155b4565b60000151858581518110613122576131226154f5565b6001600160a01b039092166020928302919091019091015283613144816155f7565b945050600101613073565b5050600101612f54565b5090949350505050565b61316b613f13565b6001600160a01b0381166131d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b610b948161431b565b600054610100900460ff16158080156131f95750600054600160ff909116105b806132135750303b158015613213575060005460ff166001145b6132765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff191660011790558015613299576000805461ff0019166101001790555b6001600160a01b0386166132df57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606401610298565b6001600160a01b03851661332957604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606401610298565b6001600160a01b03841661337457604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606401610298565b61337e868661436d565b60cb80546001600160a01b0319166001600160a01b0386161790556133a28661431b565b6133ac83836143ea565b80156126d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b613401613f13565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190615429565b6001600160a01b0316336001600160a01b0316146134ca5760405162461bcd60e51b815260040161029890615446565b60fc5419811960fc541916146135485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610ccb565b6065546001600160a01b031633146136145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610298565b60005b818110156138df57828282818110613631576136316154f5565b90506020028101906136439190615882565b613654906040810190602001614b5a565b6001600160a01b03166323b872dd3330868686818110613676576136766154f5565b90506020028101906136889190615882565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137039190615490565b506000838383818110613718576137186154f5565b905060200281019061372a9190615882565b61373b906040810190602001614b5a565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cd9190615540565b90508383838181106137e1576137e16154f5565b90506020028101906137f39190615882565b613804906040810190602001614b5a565b6001600160a01b031663095ea7b37f000000000000000000000000000000000000000000000000000000000000000083878787818110613846576138466154f5565b90506020028101906138589190615882565b6040013561386691906153fb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d59190615490565b5050600101613617565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d906126a49085908590600401615909565b613936613f13565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b6000836139838685856144d0565b1495945050505050565b6001600160a01b038116613a1b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610298565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613aa0614880565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613acf57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610298565b505092915050565b6040805180820190915260008082526020820152613b3161489e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613b6c57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610298565b613bb26148bc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613c9a600080516020615a458339815191528661550b565b90505b613ca6816145cd565b9093509150600080516020615a458339815191528283098303613cdf576040805180820190915290815260208101919091529392505050565b600080516020615a45833981519152600182089050613c9d565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613d2b6148e1565b60005b6002811015613ee6576000613d44826006615814565b9050848260028110613d5857613d586154f5565b60200201515183613d6a8360006153fb565b600c8110613d7a57613d7a6154f5565b6020020152848260028110613d9157613d916154f5565b60200201516020015183826001613da891906153fb565b600c8110613db857613db86154f5565b6020020152838260028110613dcf57613dcf6154f5565b6020020151515183613de28360026153fb565b600c8110613df257613df26154f5565b6020020152838260028110613e0957613e096154f5565b6020020151516001602002015183613e228360036153fb565b600c8110613e3257613e326154f5565b6020020152838260028110613e4957613e496154f5565b602002015160200151600060028110613e6457613e646154f5565b602002015183613e758360046153fb565b600c8110613e8557613e856154f5565b6020020152838260028110613e9c57613e9c6154f5565b602002015160200151600160028110613eb757613eb76154f5565b602002015183613ec88360056153fb565b600c8110613ed857613ed86154f5565b602002015250600101613d2e565b50613eef614900565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b031633146125e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610298565b6060600080613f7b84614172565b61ffff166001600160401b03811115613f9657613f96614991565b6040519080825280601f01601f191660200182016040528015613fc0576020820181803683370190505b5090506000805b825182108015613fd8575061010081105b15613159576001811b93508584161561401f578060f81b838381518110614001576140016154f5565b60200101906001600160f81b031916908160001a9053508160010191505b614028816155f7565b9050613fc7565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806140eb8461464f565b9050808360ff166001901b116141695760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610298565b90505b92915050565b6000805b821561416c5761418760018461552d565b909216918061419581615a23565b915050614176565b60408051808201909152600080825260208201526102008261ffff16106141f95760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610298565b8161ffff1660010361420c57508161416c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061427557600161ffff871660ff83161c81169003614258576142558484613b15565b93505b6142628384613b15565b92506201fffe600192831b169101614228565b509195945050505050565b604080518082019091526000808252602082015281511580156142a557506020820151155b156142c3575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a4583398151915284602001516142f6919061550b565b61430e90600080516020615a4583398151915261552d565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166143d85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610298565b6143e18261431b565b6115d68161402f565b60fb546001600160a01b031615801561440b57506001600160a01b03821615155b61448d5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26115d68261398d565b6000602084516144e0919061550b565b156145675760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610298565b8260205b855181116111795761457e60028561550b565b6000036145a2578160005280860151602052604060002091506002840493506145bb565b8086015160005281602052604060002091506002840493505b6145c66020826153fb565b905061456b565b60008080600080516020615a458339815191526003600080516020615a4583398151915286600080516020615a45833981519152888909090890506000614643827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a458339815191526147d7565b91959194509092505050565b6000610100825111156146d85760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610298565b81516000036146e957506000919050565b600080836000815181106146ff576146ff6154f5565b0160200151600160f89190911c81901b92505b84518110156147ce5784818151811061472d5761472d6154f5565b0160200151600160f89190911c1b91508282116147c25760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610298565b91811791600101614712565b50909392505050565b6000806147e2614900565b6147ea61491e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061482757fe5b50826148755760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610298565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148cf61493c565b81526020016148dc61493c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149c9576149c9614991565b60405290565b60405161010081016001600160401b03811182821017156149c9576149c9614991565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a614991565b604052919050565b6000806001600160401b03841115614a3c57614a3c614991565b50601f8301601f1916602001614a51816149f2565b915050828152838383011115614a6657600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a8e57600080fd5b614a9d83833560208501614a22565b9392505050565b6001600160a01b0381168114610b9457600080fd5b600080600080600080600080610100898b031215614ad657600080fd5b88359750602089013596506040890135955060608901356001600160601b031981168114614b0357600080fd5b94506080890135935060a08901356001600160401b03811115614b2557600080fd5b614b318b828c01614a7d565b93505060c0890135915060e0890135614b4981614aa4565b809150509295985092959890939650565b600060208284031215614b6c57600080fd5b813561416981614aa4565b600060208284031215614b8957600080fd5b5035919050565b60ff81168114610b9457600080fd5b600060208284031215614bb157600080fd5b813561416981614b90565b600060408284031215614bce57600080fd5b614bd66149a7565b823581526020928301359281019290925250919050565b600082601f830112614bfe57600080fd5b614c066149a7565b806040840185811115614c1857600080fd5b845b81811015614c32578035845260209384019301614c1a565b509095945050505050565b600060808284031215614c4f57600080fd5b614c576149a7565b9050614c638383614bed565b8152614c728360408401614bed565b602082015292915050565b6000806000806101208587031215614c9457600080fd5b84359350614ca58660208701614bbc565b9250614cb48660608701614c3d565b9150614cc38660e08701614bbc565b905092959194509250565b602080825282518282018190526000918401906040840190835b81811015614c325783516001600160a01b0316835260209384019390920191600101614ce8565b8015158114610b9457600080fd5b600060208284031215614d2f57600080fd5b813561416981614d0f565b803563ffffffff8116811461431657600080fd5b60006001600160401b03821115614d6757614d67614991565b5060051b60200190565b600082601f830112614d8257600080fd5b8135614d95614d9082614d4e565b6149f2565b8082825260208201915060208360051b860101925085831115614db757600080fd5b602085015b83811015614ddb57614dcd81614d3a565b835260209283019201614dbc565b5095945050505050565b600082601f830112614df657600080fd5b8135614e04614d9082614d4e565b8082825260208201915060208360061b860101925085831115614e2657600080fd5b602085015b83811015614ddb57614e3d8782614bbc565b8352602090920191604001614e2b565b600082601f830112614e5e57600080fd5b8135614e6c614d9082614d4e565b8082825260208201915060208360051b860101925085831115614e8e57600080fd5b602085015b83811015614ddb5780356001600160401b03811115614eb157600080fd5b614ec0886020838a0101614d71565b84525060209283019201614e93565b60006101808284031215614ee257600080fd5b614eea6149cf565b905081356001600160401b03811115614f0257600080fd5b614f0e84828501614d71565b82525060208201356001600160401b03811115614f2a57600080fd5b614f3684828501614de5565b60208301525060408201356001600160401b03811115614f5557600080fd5b614f6184828501614de5565b604083015250614f748360608401614c3d565b6060820152614f868360e08401614bbc565b60808201526101208201356001600160401b03811115614fa557600080fd5b614fb184828501614d71565b60a0830152506101408201356001600160401b03811115614fd157600080fd5b614fdd84828501614d71565b60c0830152506101608201356001600160401b03811115614ffd57600080fd5b61500984828501614e4d565b60e08301525092915050565b60008060006060848603121561502a57600080fd5b8335925061503a60208501614d3a565b915060408401356001600160401b0381111561505557600080fd5b61506186828701614ecf565b9150509250925092565b600081518084526020840193506020830160005b828110156150a65781516001600160601b031686526020958601959091019060010161507f565b5093949350505050565b60408152600083516040808401526150cb608084018261506b565b90506020850151603f198483030160608501526150e8828261506b565b925050508260208301529392505050565b60008083601f84011261510b57600080fd5b5081356001600160401b0381111561512257600080fd5b60208301915083602082850101111561513a57600080fd5b9250929050565b60008060006040848603121561515657600080fd5b83356001600160401b0381111561516c57600080fd5b615178868287016150f9565b909790965060209590950135949350505050565b6000806040838503121561519f57600080fd5b82356151aa81614aa4565b915060208301356001600160401b038111156151c557600080fd5b8301606081860312156151d757600080fd5b604051606081016001600160401b03811182821017156151f9576151f9614991565b60405281356001600160401b0381111561521257600080fd5b61521e87828501614a7d565b8252506020828101359082015260409182013591810191909152919491935090915050565b60006020828403121561525557600080fd5b81356001600160401b0381111561526b57600080fd5b8201601f8101841361527c57600080fd5b61528b84823560208401614a22565b949350505050565b6000806000606084860312156152a857600080fd5b83359250602084013561503a81614aa4565b600080600080606085870312156152d057600080fd5b8435935060208501356001600160401b038111156152ed57600080fd5b6152f9878288016150f9565b9598909750949560400135949350505050565b600080600080600060a0868803121561532457600080fd5b853561532f81614aa4565b9450602086013561533f81614aa4565b9350604086013561534f81614aa4565b9250606086013561535f81614aa4565b949793965091946080013592915050565b6000806020838503121561538357600080fd5b82356001600160401b0381111561539957600080fd5b8301601f810185136153aa57600080fd5b80356001600160401b038111156153c057600080fd5b8560208260051b84010111156153d557600080fd5b6020919091019590945092505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561416c5761416c6153e5565b91825260601b6001600160601b031916602082015260340190565b60006020828403121561543b57600080fd5b815161416981614aa4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156154a257600080fd5b815161416981614d0f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261552857634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561416c5761416c6153e5565b60006020828403121561555257600080fd5b5051919050565b60006020828403121561556b57600080fd5b81516001600160c01b038116811461416957600080fd5b60006020828403121561559457600080fd5b815161416981614b90565b6001600160601b0381168114610b9457600080fd5b600060408284031280156155c757600080fd5b506155d06149a7565b82516155db81614aa4565b815260208301516155eb8161559f565b60208201529392505050565b600060018201615609576156096153e5565b5060010190565b60006020828403121561562257600080fd5b815167ffffffffffffffff198116811461416957600080fd5b60006020828403121561564d57600080fd5b81516141698161559f565b6001600160601b03828116828216039081111561416c5761416c6153e5565b63ffffffff60e01b8360e01b16815260006004820183516020850160005b828110156156b3578151845260209384019390910190600101615695565b50919695505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b8181101561576d57602081850181015186830182015201615751565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b03831681526040602082015260008251606060408401526157b760a0840182615747565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614a9d6020830184615747565b6001600160601b03818116838216029081169081811461580d5761580d6153e5565b5092915050565b808202811582820484141761416c5761416c6153e5565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60008235609e1983360301811261589857600080fd5b9190910192915050565b803561431681614aa4565b81835260208301925060008160005b848110156150a65781356158cf81614aa4565b6001600160a01b0316865260208201356158e88161559f565b6001600160601b0316602087015260409586019591909101906001016158bc565b6020808252810182905260006040600584901b830181019083018583609e1936839003015b87821015615a1657868503603f19018452823581811261594d57600080fd5b8901803536829003601e1901811261596457600080fd5b81016020810190356001600160401b0381111561598057600080fd5b8060061b360382131561599257600080fd5b60a088526159a460a0890182846158ad565b9150506159b3602083016158a2565b6001600160a01b03166020880152604082810135908801526159d760608301614d3a565b63ffffffff1660608801526159ee60808301614d3a565b63ffffffff81166080890152915095505060209384019392909201916001919091019061592e565b5092979650505050505050565b600061ffff821661ffff8103615a3b57615a3b6153e5565b6001019291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212208755cc8934ae88fa5027fb1b5c2e8633ac3a93597ddef7c24271a5bf2132c78664736f6c634300081c0033","sourceMap":"1014:11385:115:-:0;;;1315:939;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1590:30:78;;;;;1630:42;;;;;1682:44;;;;;1736:32;;;;1541:21:115;1604:14;1632:20;1541:21;1701:15;2276:22:77::1;:20;:22::i;:::-;1894:411:::0;;;;1793:20:76;-1:-1:-1;;;;;1771:42:76;;;-1:-1:-1;;;;;1771:42:76;;;;;1839:20;-1:-1:-1;;;;;1839:34:76;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1823:52:76;;;-1:-1:-1;;;;;1823:52:76;;;;;1902:20;-1:-1:-1;;;;;1902:35:76;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1885:54:76;;;-1:-1:-1;;;;;1885:54:76;;;;;1962:13;;-1:-1:-1;;;;;1962:24:76;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1949:39:76;;;;;1745:37:115;::::2;::::0;-1:-1:-1;1741:105:115::2;;1805:30;::::0;-1:-1:-1;;;1805:30:115;;2079:2:123;1805:30:115::2;::::0;::::2;2061:21:123::0;2118:2;2098:18;;;2091:30;-1:-1:-1;;;2137:18:123;;;2130:42;2189:18;;1805:30:115::2;;;;;;;;1741:105;-1:-1:-1::0;;;;;1859:43:115;::::2;1855:117;;1925:36;::::0;-1:-1:-1;;;1925:36:115;;2420:2:123;1925:36:115::2;::::0;::::2;2402:21:123::0;2459:2;2439:18;;;2432:30;-1:-1:-1;;;2478:18:123;;;2471:48;2536:18;;1925:36:115::2;2218:342:123::0;1855:117:115::2;-1:-1:-1::0;;;;;1985:44:115;::::2;1981:119;;2052:37;::::0;-1:-1:-1;;;2052:37:115;;2767:2:123;2052:37:115::2;::::0;::::2;2749:21:123::0;2806:2;2786:18;;;2779:30;2845:21;2825:18;;;2818:49;2884:18;;2052:37:115::2;2565:343:123::0;1981:119:115::2;-1:-1:-1::0;;;;;2113:38:115;::::2;2109:107;;2174:31;::::0;-1:-1:-1;;;2174:31:115;;3115:2:123;2174:31:115::2;::::0;::::2;3097:21:123::0;3154:2;3134:18;;;3127:30;-1:-1:-1;;;3173:18:123;;;3166:43;3226:18;;2174:31:115::2;2913:337:123::0;2109:107:115::2;2225:22;:20;:22::i;:::-;1315:939:::0;;;;1014:11385;;5388:279:44;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:44;;3457:2:123;5447:66:44;;;3439:21:123;3496:2;3476:18;;;3469:30;3535:34;3515:18;;;3508:62;-1:-1:-1;;;3586:18:123;;;3579:37;3633:19;;5447:66:44;3255:403:123;5447:66:44;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:44;5588:15;5573:30;;;;;;5622:28;;3805:36:123;;;5622:28:44;;3793:2:123;3778:18;5622:28:44;;;;;;;5523:138;5388:279::o;14:146:123:-;-1:-1:-1;;;;;104:31:123;;94:42;;84:70;;150:1;147;140:12;84:70;14:146;:::o;165:818::-;366:6;374;382;390;443:3;431:9;422:7;418:23;414:33;411:53;;;460:1;457;450:12;411:53;492:9;486:16;511:46;551:5;511:46;:::i;:::-;626:2;611:18;;605:25;576:5;;-1:-1:-1;639:48:123;605:25;639:48;:::i;:::-;758:2;743:18;;737:25;706:7;;-1:-1:-1;771:48:123;737:25;771:48;:::i;:::-;890:2;875:18;;869:25;838:7;;-1:-1:-1;903:48:123;869:25;903:48;:::i;:::-;165:818;;;;-1:-1:-1;165:818:123;;-1:-1:-1;;165:818:123:o;988:290::-;1082:6;1135:2;1123:9;1114:7;1110:23;1106:32;1103:52;;;1151:1;1148;1141:12;1103:52;1183:9;1177:16;1202:46;1242:5;1202:46;:::i;:::-;1267:5;988:290;-1:-1:-1;;;988:290:123:o;3663:184::-;1014:11385:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061026b5760003560e01c8063886f119511610144578063df5cf723116100b6578063f7013ef61161007a578063f7013ef614610872578063f9120af614610892578063fabc1cbc146108b2578063fc299dee146108d2578063fce36c7d146108f2578063fd4c3b7c1461091257600080fd5b8063df5cf723146107c6578063e481af9d146107fa578063ea5ca34b1461080f578063f2fde38b14610825578063f474b5201461084557600080fd5b8063a98fb35511610108578063a98fb355146106cf578063ab21739a146106ef578063b099627e1461070f578063b753645e14610779578063b98d090814610799578063d66eaabd146107b357600080fd5b8063886f1195146106315780638da5cb5b1461065157806395c6d6041461066f5780639926ee7d1461068f578063a364f4da146106af57600080fd5b80634a5bf632116101dd5780635df45946116101a15780635df4594614610517578063683048351461054b5780636b3aa72e1461057f5780636d14a987146105b257806370a08231146105e6578063715018a61461061c57600080fd5b80634a5bf6321461044d5780634ae07c3714610485578063595c6a67146104b35780635ac86ab7146104c85780635c975abb146104f857600080fd5b806318daeeaf1161022f57806318daeeaf1461038d5780632e1a7d4d146103ad57806333cfb7b7146103cd5780633bc28c8c146103fa578063416c7e5e1461041a5780634223d5511461043a57600080fd5b806306045a91146102b257806310d67a2f146102e7578063136439dd14610307578063137122b514610327578063171f1d5b1461035657600080fd5b366102ad5760fc546005906020908116036102a15760405162461bcd60e51b81526004016102989061495a565b60405180910390fd5b6102ab3334610932565b005b600080fd5b3480156102be57600080fd5b506102d26102cd366004614ab9565b6109c2565b60405190151581526020015b60405180910390f35b3480156102f357600080fd5b506102ab610302366004614b5a565b610ae4565b34801561031357600080fd5b506102ab610322366004614b77565b610b97565b34801561033357600080fd5b506102d2610342366004614b9f565b60cc54600160ff9092169190911b16151590565b34801561036257600080fd5b50610376610371366004614c7d565b610cd6565b6040805192151583529015156020830152016102de565b34801561039957600080fd5b506102ab6103a8366004614b9f565b610e60565b3480156103b957600080fd5b506102ab6103c8366004614b77565b610ea8565b3480156103d957600080fd5b506103ed6103e8366004614b5a565b610fa9565b6040516102de9190614cce565b34801561040657600080fd5b506102ab610415366004614b5a565b61145c565b34801561042657600080fd5b506102ab610435366004614d1d565b61146d565b6102ab610448366004614b5a565b6115a4565b34801561045957600080fd5b5060cb5461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561049157600080fd5b506104a56104a0366004615015565b6115da565b6040516102de9291906150b0565b3480156104bf57600080fd5b506102ab61250e565b3480156104d457600080fd5b506102d26104e3366004614b9f565b60fc54600160ff9092169190911b9081161490565b34801561050457600080fd5b5060fc545b6040519081526020016102de565b34801561052357600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055757600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046d565b3480156105be57600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f257600080fd5b50610509610601366004614b5a565b6001600160a01b0316600090815260ca602052604090205490565b34801561062857600080fd5b506102ab6125d5565b34801561063d57600080fd5b5060fb5461046d906001600160a01b031681565b34801561065d57600080fd5b506033546001600160a01b031661046d565b34801561067b57600080fd5b506102d261068a366004615141565b6125e9565b34801561069b57600080fd5b506102ab6106aa36600461518c565b61260e565b3480156106bb57600080fd5b506102ab6106ca366004614b5a565b6126da565b3480156106db57600080fd5b506102ab6106ea366004615243565b6127a1565b3480156106fb57600080fd5b506102ab61070a366004615293565b6127f5565b34801561071b57600080fd5b5061075761072a366004614b77565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102de565b34801561078557600080fd5b506102ab610794366004614b77565b612bc7565b3480156107a557600080fd5b506097546102d29060ff1681565b6102ab6107c13660046152ba565b612bd4565b3480156107d257600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080657600080fd5b506103ed612db7565b34801561081b57600080fd5b5061050960cc5481565b34801561083157600080fd5b506102ab610840366004614b5a565b613163565b34801561085157600080fd5b50610509610860366004614b5a565b60ca6020526000908152604090205481565b34801561087e57600080fd5b506102ab61088d36600461530c565b6131d9565b34801561089e57600080fd5b506102ab6108ad366004614b5a565b6133f9565b3480156108be57600080fd5b506102ab6108cd366004614b77565b613423565b3480156108de57600080fd5b5060655461046d906001600160a01b031681565b3480156108fe57600080fd5b506102ab61090d366004615370565b61357f565b34801561091e57600080fd5b506102ab61092d366004614b9f565b61392e565b8060000361095657604051632097692160e11b815260048101829052602401610298565b6001600160a01b038216600090815260ca60205260408120805483929061097e9084906153fb565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a25050565b60fc546000906002906004908116036109ed5760405162461bcd60e51b81526004016102989061495a565b60006001600160a01b038416610a04575085610a30565b8684604051602001610a1792919061540e565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610a55576000925050610ad7565b600081815260c96020526040902054640100000000900460ff16610a7d576000925050610ad7565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610ad1888a838a613975565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615429565b6001600160a01b0316336001600160a01b031614610b8b5760405162461bcd60e51b815260040161029890615446565b610b948161398d565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c039190615490565b610c1f5760405162461bcd60e51b8152600401610298906154ad565b60fc5481811614610c985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d1e57610d1e6154f5565b60200201518951600160200201518a60200151600060028110610d4357610d436154f5565b60200201518b60200151600160028110610d5f57610d5f6154f5565b602090810291909101518c518d830151604051610dbc9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610ddf919061550b565b9050610e52610df8610df18884613a84565b8690613b15565b610e00613baa565b610e48610e3985610e33604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613a84565b610e428c613c6a565b90613b15565b886201d4c0613cf9565b909890975095505050505050565b610e68613f13565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b60fc54600390600890811603610ed05760405162461bcd60e51b81526004016102989061495a565b33600090815260ca6020526040902054821115610f215733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018490526044820152606401610298565b33600090815260ca602052604081208054849290610f4090849061552d565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a2604051339083156108fc029084906000818181858888f19350505050158015610fa4573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190615540565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190615559565b90506001600160c01b038116158061116257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190615582565b60ff16155b156111825760408051600080825260208201909252905b50949350505050565b6000611196826001600160c01b0316613f6d565b90506000805b8251811015611262577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106111e6576111e66154f5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190615540565b61125890836153fb565b915060010161119c565b506000816001600160401b0381111561127d5761127d614991565b6040519080825280602002602001820160405280156112a6578160200160208202803683370190505b5090506000805b845181101561144f5760008582815181106112ca576112ca6154f5565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113639190615540565b905060005b81811015611444576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140191906155b4565b60000151868681518110611417576114176154f5565b6001600160a01b039092166020928302919091019091015284611439816155f7565b955050600101611368565b5050506001016112ad565b5090979650505050505050565b611464613f13565b610b948161402f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190615429565b6001600160a01b0316336001600160a01b03161461159b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610298565b610b9481614098565b60fc546004906010908116036115cc5760405162461bcd60e51b81526004016102989061495a565b6115d68234610932565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561163657508260a0015151604051806040016040528060018152602001600081525051145b801561165d57508260c0015151604051806040016040528060018152602001600081525051145b801561168457508260e0015151604051806040016040528060018152602001600081525051145b6116ee5760405162461bcd60e51b81526020600482015260416024820152600080516020615a8583398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610298565b825151602084015151146117665760405162461bcd60e51b815260206004820152604460248201819052600080516020615a85833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610298565b4363ffffffff168463ffffffff16106117d55760405162461bcd60e51b815260206004820152603c6024820152600080516020615a8583398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610298565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b0381111561189657611896614991565b6040519080825280602002602001820160405280156118bf578160200160208202803683370190505b5081526020860151516001600160401b038111156118df576118df614991565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50816020018190525060006119b460405180604001604052806001815260200160008152507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af9190615582565b6140df565b905060005b876020015151811015611c45576119fe886020015182815181106119df576119df6154f5565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611a1457611a146154f5565b60209081029190910101528015611ad4576020830151611a3560018361552d565b81518110611a4557611a456154f5565b602002602001015160001c83602001518281518110611a6657611a666154f5565b602002602001015160001c11611ad4576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a8583398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110611b1957611b196154f5565b60200260200101518b8b600001518581518110611b3857611b386154f5565b60200260200101516040518463ffffffff1660e01b8152600401611b759392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb69190615559565b6001600160c01b031683600001518281518110611bd557611bd56154f5565b602002602001018181525050611c3b610df1611c0f8486600001518581518110611c0157611c016154f5565b602002602001015116614172565b8a602001518481518110611c2557611c256154f5565b602002602001015161419d90919063ffffffff16565b94506001016119b9565b5050611c5083614280565b60975490935060ff16600081611c67576000611ce9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce99190615540565b905060005b6040518060400160405280600181526020016000815250518110156123df578215611e7a578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611d7257611d726154f5565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dda9190615540565b611de491906153fb565b11611e7a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a8583398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ed157611ed16154f5565b602001015160f81c60f81b60f81c8c8c60a001518581518110611ef657611ef66154f5565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190615610565b6001600160401b031916611f998a6040015183815181106119df576119df6154f5565b67ffffffffffffffff1916146120355760405162461bcd60e51b81526020600482015260616024820152600080516020615a8583398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610298565b6120658960400151828151811061204e5761204e6154f5565b602002602001015187613b1590919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106120be576120be6154f5565b602001015160f81c60f81b60f81c8c8c60c0015185815181106120e3576120e36154f5565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612163919061563b565b85602001518281518110612179576121796154f5565b6001600160601b039092166020928302919091018201528501518051829081106121a5576121a56154f5565b6020026020010151856000015182815181106121c3576121c36154f5565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156123d5576122528660000151828151811061220d5761220d6154f5565b60200260200101516040518060400160405280600181526020016000815250858151811061223d5761223d6154f5565b016020015160f81c60ff161c60019081161490565b156123cd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106122ae576122ae6154f5565b602001015160f81c60f81b60f81c8e896020015185815181106122d3576122d36154f5565b60200260200101518f60e0015188815181106122f1576122f16154f5565b6020026020010151878151811061230a5761230a6154f5565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612392919061563b565b87518051859081106123a6576123a66154f5565b602002602001018181516123ba9190615658565b6001600160601b03169052506001909101905b6001016121e7565b5050600101611cee565b5050506000806123f98a868a606001518b60800151610cd6565b915091508161246a5760405162461bcd60e51b81526020600482015260436024820152600080516020615a8583398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610298565b806124cb5760405162461bcd60e51b81526020600482015260396024820152600080516020615a8583398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610298565b505060008782602001516040516020016124e6929190615677565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a9190615490565b6125965760405162461bcd60e51b8152600401610298906154ad565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6125dd613f13565b6125e7600061431b565b565b60008184846040516125fc9291906156bf565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126565760405162461bcd60e51b8152600401610298906156cf565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906126a4908590859060040161578d565b600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127225760405162461bcd60e51b8152600401610298906156cf565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050505050565b6127a9613f13565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb3559061276c9084906004016157d8565b60cb546001600160a01b031633146128355760cb54604051632cbe419560e01b81523360048201526001600160a01b039091166024820152604401610298565b60fc5460019060029081160361285d5760405162461bcd60e51b81526004016102989061495a565b60005a90506000858560405160200161287792919061540e565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff90911690036128cc576040516311cb69a760e11b815260048101839052602401610298565b8054640100000000900460ff16156128fa57604051634e78d7f960e11b815260048101839052602401610298565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca6020526040902054101561297d5760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b8152600481019290925260248201929092526044810191909152606401610298565b805460009061299490849063ffffffff16886115da565b509050604360ff1681602001516000815181106129b3576129b36154f5565b60200260200101516129c591906157eb565b6001600160601b0316606482600001516000815181106129e7576129e76154f5565b60200260200101516001600160601b0316612a029190615814565b1015612a955760648160000151600081518110612a2157612a216154f5565b60200260200101516001600160601b0316612a3c9190615814565b604360ff168260200151600081518110612a5857612a586154f5565b6020026020010151612a6a91906157eb565b60405163530f5c4560e11b815260048101929092526001600160601b03166024820152604401610298565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ae1908761552d565b612aee90620111706153fb565b612af89190615814565b9050600083600101548210612b11578360010154612b13565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612b4090849061552d565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612bba573d6000803e3d6000fd5b5050505050505050505050565b612bcf613f13565b60cc55565b60fc54600090600190811603612bfc5760405162461bcd60e51b81526004016102989061495a565b60008533604051602001612c1192919061540e565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612c6057604051630c40bc4360e21b815260048101829052602401610298565b3415612cbd5733600090815260ca602052604081208054349290612c859084906153fb565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a65833981519152910160405180910390a25b33600090815260ca6020526040902054831115612d0e5733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018590526044820152606401610298565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612da6913391908b908b908b9061582b565b60405180910390a250505050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d9190615582565b60ff16905080600003612e5e57505060408051600081526020810190915290565b6000805b82811015612f0957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef59190615540565b612eff90836153fb565b9150600101612e62565b506000816001600160401b03811115612f2457612f24614991565b604051908082528060200260200182016040528015612f4d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd69190615582565b60ff1681101561315957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e9190615540565b905060005b8181101561314f576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c91906155b4565b60000151858581518110613122576131226154f5565b6001600160a01b039092166020928302919091019091015283613144816155f7565b945050600101613073565b5050600101612f54565b5090949350505050565b61316b613f13565b6001600160a01b0381166131d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b610b948161431b565b600054610100900460ff16158080156131f95750600054600160ff909116105b806132135750303b158015613213575060005460ff166001145b6132765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff191660011790558015613299576000805461ff0019166101001790555b6001600160a01b0386166132df57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606401610298565b6001600160a01b03851661332957604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606401610298565b6001600160a01b03841661337457604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606401610298565b61337e868661436d565b60cb80546001600160a01b0319166001600160a01b0386161790556133a28661431b565b6133ac83836143ea565b80156126d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b613401613f13565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190615429565b6001600160a01b0316336001600160a01b0316146134ca5760405162461bcd60e51b815260040161029890615446565b60fc5419811960fc541916146135485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610ccb565b6065546001600160a01b031633146136145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610298565b60005b818110156138df57828282818110613631576136316154f5565b90506020028101906136439190615882565b613654906040810190602001614b5a565b6001600160a01b03166323b872dd3330868686818110613676576136766154f5565b90506020028101906136889190615882565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137039190615490565b506000838383818110613718576137186154f5565b905060200281019061372a9190615882565b61373b906040810190602001614b5a565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cd9190615540565b90508383838181106137e1576137e16154f5565b90506020028101906137f39190615882565b613804906040810190602001614b5a565b6001600160a01b031663095ea7b37f000000000000000000000000000000000000000000000000000000000000000083878787818110613846576138466154f5565b90506020028101906138589190615882565b6040013561386691906153fb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d59190615490565b5050600101613617565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d906126a49085908590600401615909565b613936613f13565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b6000836139838685856144d0565b1495945050505050565b6001600160a01b038116613a1b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610298565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613aa0614880565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613acf57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610298565b505092915050565b6040805180820190915260008082526020820152613b3161489e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613b6c57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610298565b613bb26148bc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613c9a600080516020615a458339815191528661550b565b90505b613ca6816145cd565b9093509150600080516020615a458339815191528283098303613cdf576040805180820190915290815260208101919091529392505050565b600080516020615a45833981519152600182089050613c9d565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613d2b6148e1565b60005b6002811015613ee6576000613d44826006615814565b9050848260028110613d5857613d586154f5565b60200201515183613d6a8360006153fb565b600c8110613d7a57613d7a6154f5565b6020020152848260028110613d9157613d916154f5565b60200201516020015183826001613da891906153fb565b600c8110613db857613db86154f5565b6020020152838260028110613dcf57613dcf6154f5565b6020020151515183613de28360026153fb565b600c8110613df257613df26154f5565b6020020152838260028110613e0957613e096154f5565b6020020151516001602002015183613e228360036153fb565b600c8110613e3257613e326154f5565b6020020152838260028110613e4957613e496154f5565b602002015160200151600060028110613e6457613e646154f5565b602002015183613e758360046153fb565b600c8110613e8557613e856154f5565b6020020152838260028110613e9c57613e9c6154f5565b602002015160200151600160028110613eb757613eb76154f5565b602002015183613ec88360056153fb565b600c8110613ed857613ed86154f5565b602002015250600101613d2e565b50613eef614900565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b031633146125e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610298565b6060600080613f7b84614172565b61ffff166001600160401b03811115613f9657613f96614991565b6040519080825280601f01601f191660200182016040528015613fc0576020820181803683370190505b5090506000805b825182108015613fd8575061010081105b15613159576001811b93508584161561401f578060f81b838381518110614001576140016154f5565b60200101906001600160f81b031916908160001a9053508160010191505b614028816155f7565b9050613fc7565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806140eb8461464f565b9050808360ff166001901b116141695760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610298565b90505b92915050565b6000805b821561416c5761418760018461552d565b909216918061419581615a23565b915050614176565b60408051808201909152600080825260208201526102008261ffff16106141f95760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610298565b8161ffff1660010361420c57508161416c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061427557600161ffff871660ff83161c81169003614258576142558484613b15565b93505b6142628384613b15565b92506201fffe600192831b169101614228565b509195945050505050565b604080518082019091526000808252602082015281511580156142a557506020820151155b156142c3575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a4583398151915284602001516142f6919061550b565b61430e90600080516020615a4583398151915261552d565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166143d85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610298565b6143e18261431b565b6115d68161402f565b60fb546001600160a01b031615801561440b57506001600160a01b03821615155b61448d5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26115d68261398d565b6000602084516144e0919061550b565b156145675760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610298565b8260205b855181116111795761457e60028561550b565b6000036145a2578160005280860151602052604060002091506002840493506145bb565b8086015160005281602052604060002091506002840493505b6145c66020826153fb565b905061456b565b60008080600080516020615a458339815191526003600080516020615a4583398151915286600080516020615a45833981519152888909090890506000614643827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a458339815191526147d7565b91959194509092505050565b6000610100825111156146d85760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610298565b81516000036146e957506000919050565b600080836000815181106146ff576146ff6154f5565b0160200151600160f89190911c81901b92505b84518110156147ce5784818151811061472d5761472d6154f5565b0160200151600160f89190911c1b91508282116147c25760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610298565b91811791600101614712565b50909392505050565b6000806147e2614900565b6147ea61491e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061482757fe5b50826148755760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610298565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148cf61493c565b81526020016148dc61493c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149c9576149c9614991565b60405290565b60405161010081016001600160401b03811182821017156149c9576149c9614991565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a614991565b604052919050565b6000806001600160401b03841115614a3c57614a3c614991565b50601f8301601f1916602001614a51816149f2565b915050828152838383011115614a6657600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a8e57600080fd5b614a9d83833560208501614a22565b9392505050565b6001600160a01b0381168114610b9457600080fd5b600080600080600080600080610100898b031215614ad657600080fd5b88359750602089013596506040890135955060608901356001600160601b031981168114614b0357600080fd5b94506080890135935060a08901356001600160401b03811115614b2557600080fd5b614b318b828c01614a7d565b93505060c0890135915060e0890135614b4981614aa4565b809150509295985092959890939650565b600060208284031215614b6c57600080fd5b813561416981614aa4565b600060208284031215614b8957600080fd5b5035919050565b60ff81168114610b9457600080fd5b600060208284031215614bb157600080fd5b813561416981614b90565b600060408284031215614bce57600080fd5b614bd66149a7565b823581526020928301359281019290925250919050565b600082601f830112614bfe57600080fd5b614c066149a7565b806040840185811115614c1857600080fd5b845b81811015614c32578035845260209384019301614c1a565b509095945050505050565b600060808284031215614c4f57600080fd5b614c576149a7565b9050614c638383614bed565b8152614c728360408401614bed565b602082015292915050565b6000806000806101208587031215614c9457600080fd5b84359350614ca58660208701614bbc565b9250614cb48660608701614c3d565b9150614cc38660e08701614bbc565b905092959194509250565b602080825282518282018190526000918401906040840190835b81811015614c325783516001600160a01b0316835260209384019390920191600101614ce8565b8015158114610b9457600080fd5b600060208284031215614d2f57600080fd5b813561416981614d0f565b803563ffffffff8116811461431657600080fd5b60006001600160401b03821115614d6757614d67614991565b5060051b60200190565b600082601f830112614d8257600080fd5b8135614d95614d9082614d4e565b6149f2565b8082825260208201915060208360051b860101925085831115614db757600080fd5b602085015b83811015614ddb57614dcd81614d3a565b835260209283019201614dbc565b5095945050505050565b600082601f830112614df657600080fd5b8135614e04614d9082614d4e565b8082825260208201915060208360061b860101925085831115614e2657600080fd5b602085015b83811015614ddb57614e3d8782614bbc565b8352602090920191604001614e2b565b600082601f830112614e5e57600080fd5b8135614e6c614d9082614d4e565b8082825260208201915060208360051b860101925085831115614e8e57600080fd5b602085015b83811015614ddb5780356001600160401b03811115614eb157600080fd5b614ec0886020838a0101614d71565b84525060209283019201614e93565b60006101808284031215614ee257600080fd5b614eea6149cf565b905081356001600160401b03811115614f0257600080fd5b614f0e84828501614d71565b82525060208201356001600160401b03811115614f2a57600080fd5b614f3684828501614de5565b60208301525060408201356001600160401b03811115614f5557600080fd5b614f6184828501614de5565b604083015250614f748360608401614c3d565b6060820152614f868360e08401614bbc565b60808201526101208201356001600160401b03811115614fa557600080fd5b614fb184828501614d71565b60a0830152506101408201356001600160401b03811115614fd157600080fd5b614fdd84828501614d71565b60c0830152506101608201356001600160401b03811115614ffd57600080fd5b61500984828501614e4d565b60e08301525092915050565b60008060006060848603121561502a57600080fd5b8335925061503a60208501614d3a565b915060408401356001600160401b0381111561505557600080fd5b61506186828701614ecf565b9150509250925092565b600081518084526020840193506020830160005b828110156150a65781516001600160601b031686526020958601959091019060010161507f565b5093949350505050565b60408152600083516040808401526150cb608084018261506b565b90506020850151603f198483030160608501526150e8828261506b565b925050508260208301529392505050565b60008083601f84011261510b57600080fd5b5081356001600160401b0381111561512257600080fd5b60208301915083602082850101111561513a57600080fd5b9250929050565b60008060006040848603121561515657600080fd5b83356001600160401b0381111561516c57600080fd5b615178868287016150f9565b909790965060209590950135949350505050565b6000806040838503121561519f57600080fd5b82356151aa81614aa4565b915060208301356001600160401b038111156151c557600080fd5b8301606081860312156151d757600080fd5b604051606081016001600160401b03811182821017156151f9576151f9614991565b60405281356001600160401b0381111561521257600080fd5b61521e87828501614a7d565b8252506020828101359082015260409182013591810191909152919491935090915050565b60006020828403121561525557600080fd5b81356001600160401b0381111561526b57600080fd5b8201601f8101841361527c57600080fd5b61528b84823560208401614a22565b949350505050565b6000806000606084860312156152a857600080fd5b83359250602084013561503a81614aa4565b600080600080606085870312156152d057600080fd5b8435935060208501356001600160401b038111156152ed57600080fd5b6152f9878288016150f9565b9598909750949560400135949350505050565b600080600080600060a0868803121561532457600080fd5b853561532f81614aa4565b9450602086013561533f81614aa4565b9350604086013561534f81614aa4565b9250606086013561535f81614aa4565b949793965091946080013592915050565b6000806020838503121561538357600080fd5b82356001600160401b0381111561539957600080fd5b8301601f810185136153aa57600080fd5b80356001600160401b038111156153c057600080fd5b8560208260051b84010111156153d557600080fd5b6020919091019590945092505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561416c5761416c6153e5565b91825260601b6001600160601b031916602082015260340190565b60006020828403121561543b57600080fd5b815161416981614aa4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156154a257600080fd5b815161416981614d0f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261552857634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561416c5761416c6153e5565b60006020828403121561555257600080fd5b5051919050565b60006020828403121561556b57600080fd5b81516001600160c01b038116811461416957600080fd5b60006020828403121561559457600080fd5b815161416981614b90565b6001600160601b0381168114610b9457600080fd5b600060408284031280156155c757600080fd5b506155d06149a7565b82516155db81614aa4565b815260208301516155eb8161559f565b60208201529392505050565b600060018201615609576156096153e5565b5060010190565b60006020828403121561562257600080fd5b815167ffffffffffffffff198116811461416957600080fd5b60006020828403121561564d57600080fd5b81516141698161559f565b6001600160601b03828116828216039081111561416c5761416c6153e5565b63ffffffff60e01b8360e01b16815260006004820183516020850160005b828110156156b3578151845260209384019390910190600101615695565b50919695505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b8181101561576d57602081850181015186830182015201615751565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b03831681526040602082015260008251606060408401526157b760a0840182615747565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614a9d6020830184615747565b6001600160601b03818116838216029081169081811461580d5761580d6153e5565b5092915050565b808202811582820484141761416c5761416c6153e5565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60008235609e1983360301811261589857600080fd5b9190910192915050565b803561431681614aa4565b81835260208301925060008160005b848110156150a65781356158cf81614aa4565b6001600160a01b0316865260208201356158e88161559f565b6001600160601b0316602087015260409586019591909101906001016158bc565b6020808252810182905260006040600584901b830181019083018583609e1936839003015b87821015615a1657868503603f19018452823581811261594d57600080fd5b8901803536829003601e1901811261596457600080fd5b81016020810190356001600160401b0381111561598057600080fd5b8060061b360382131561599257600080fd5b60a088526159a460a0890182846158ad565b9150506159b3602083016158a2565b6001600160a01b03166020880152604082810135908801526159d760608301614d3a565b63ffffffff1660608801526159ee60808301614d3a565b63ffffffff81166080890152915095505060209384019392909201916001919091019061592e565b5092979650505050505050565b600061ffff821661ffff8103615a3b57615a3b6153e5565b6001019291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212208755cc8934ae88fa5027fb1b5c2e8633ac3a93597ddef7c24271a5bf2132c78664736f6c634300081c0033","sourceMap":"1014:11385:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5724:7:29;;11978:1:115;;5695:10:29;5724:14;;;5723:24;2759:52;;;;-1:-1:-1;;;2759:52:29;;;;;;;:::i;:::-;;;;;;;;;11991:40:115::1;12009:10;12021:9;11991:17;:40::i;:::-;11933:105:::0;1014:11385;;;;9483:1303;;;;;;;;;;-1:-1:-1;9483:1303:115;;;;;:::i;:::-;;:::i;:::-;;;3541:14:123;;3534:22;3516:41;;3504:2;3489:18;9483:1303:115;;;;;;;;5826:138:29;;;;;;;;;;-1:-1:-1;5826:138:29;;;;;:::i;:::-;;:::i;3832:392::-;;;;;;;;;;-1:-1:-1;3832:392:29;;;;;:::i;:::-;;:::i;8815:183:115:-;;;;;;;;;;-1:-1:-1;8815:183:115;;;;;:::i;:::-;8929:17;;8950:1;:16;;;;;;;;8929:38;8984:7;;;8815:183;14547:1081:76;;;;;;;;;;-1:-1:-1;14547:1081:76;;;;;:::i;:::-;;:::i;:::-;;;;6473:14:123;;6466:22;6448:41;;6532:14;;6525:22;6520:2;6505:18;;6498:50;6421:18;14547:1081:76;6286:268:123;9187:176:115;;;;;;;;;;-1:-1:-1;9187:176:115;;;;;:::i;:::-;;:::i;10922:458::-;;;;;;;;;;-1:-1:-1;10922:458:115;;;;;:::i;:::-;;:::i;7697:1470:77:-;;;;;;;;;;-1:-1:-1;7697:1470:77;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5599:135::-;;;;;;;;;;-1:-1:-1;5599:135:77;;;;;:::i;:::-;;:::i;2232:123:76:-;;;;;;;;;;-1:-1:-1;2232:123:76;;;;;:::i;:::-;;:::i;11507:135:115:-;;;;;;:::i;:::-;;:::i;481:32:116:-;;;;;;;;;;-1:-1:-1;481:32:116;;;;-1:-1:-1;;;;;481:32:116;;;;;;-1:-1:-1;;;;;7986:32:123;;;7968:51;;7956:2;7941:18;481:32:116;7822:203:123;4387:9678:76;;;;;;;;;;-1:-1:-1;4387:9678:76;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4299:136:29:-;;;;;;;;;;;;;:::i;5606:149::-;;;;;;;;;;-1:-1:-1;5606:149:29;;;;;:::i;:::-;5724:7;;5695:1;:10;;;;;;;;5724:14;;;5723:24;;5606:149;5418:87;;;;;;;;;;-1:-1:-1;5491:7:29;;5418:87;;;14071:25:123;;;14059:2;14044:18;5418:87:29;13925:177:123;1183:47:76;;;;;;;;;;;;;;;1132:45;;;;;;;;;;;;;;;9235:111:77;;;;;;;;;;-1:-1:-1;9325:13:77;9235:111;;1069:57:76;;;;;;;;;;;;;;;11386:115:115;;;;;;;;;;-1:-1:-1;11386:115:115;;;;;:::i;:::-;-1:-1:-1;;;;;11469:25:115;11443:7;11469:25;;;:16;:25;;;;;;;11386:115;2071:101:40;;;;;;;;;;;;;:::i;1825:37:29:-;;;;;;;;;;-1:-1:-1;1825:37:29;;;;-1:-1:-1;;;;;1825:37:29;;;1441:85:40;;;;;;;;;;-1:-1:-1;1513:6:40;;-1:-1:-1;;;;;1513:6:40;1441:85;;12044:173:115;;;;;;;;;;-1:-1:-1;12044:173:115;;;;;:::i;:::-;;:::i;4797:260:77:-;;;;;;;;;;-1:-1:-1;4797:260:77;;;;;:::i;:::-;;:::i;5262:158::-;;;;;;;;;;-1:-1:-1;5262:158:77;;;;;:::i;:::-;;:::i;2721:148::-;;;;;;;;;;-1:-1:-1;2721:148:77;;;;;:::i;:::-;;:::i;5839:2970:115:-;;;;;;;;;;-1:-1:-1;5839:2970:115;;;;;:::i;:::-;;:::i;284:50:116:-;;;;;;;;;;-1:-1:-1;284:50:116;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18869:10:123;18857:23;;;18839:42;;18924:14;;18917:22;18912:2;18897:18;;18890:50;18956:18;;;18949:34;18827:2;18812:18;284:50:116;18645:344:123;9369:108:115;;;;;;;;;;-1:-1:-1;9369:108:115;;;;;:::i;:::-;;:::i;1421:32:76:-;;;;;;;;;;-1:-1:-1;1421:32:76;;;;;;;;4432:1401:115;;;;;;:::i;:::-;;:::i;1236:46:76:-;;;;;;;;;;;;;;;6262:951:77;;;;;;;;;;;;;:::i;752:32:116:-;;;;;;;;;;;;;;;;2321:198:40;;;;;;;;;;-1:-1:-1;2321:198:40;;;;;:::i;:::-;;:::i;423:51:116:-;;;;;;;;;;-1:-1:-1;423:51:116;;;;;:::i;:::-;;;;;;;;;;;;;;2711:934:115;;;;;;;;;;-1:-1:-1;2711:934:115;;;;;:::i;:::-;;:::i;10793:123::-;;;;;;;;;;-1:-1:-1;10793:123:115;;;;;:::i;:::-;;:::i;4911:437:29:-;;;;;;;;;;-1:-1:-1;4911:437:29;;;;;:::i;:::-;;:::i;1212:31:78:-;;;;;;;;;;-1:-1:-1;1212:31:78;;;;-1:-1:-1;;;;;1212:31:78;;;3631:872:77;;;;;;;;;;-1:-1:-1;3631:872:77;;;;;:::i;:::-;;:::i;9004:177:115:-;;;;;;;;;;-1:-1:-1;9004:177:115;;;;;:::i;:::-;;:::i;11648:279::-;11731:6;11741:1;11731:11;11727:77;;11765:28;;-1:-1:-1;;;11765:28:115;;;;;14071:25:123;;;14044:18;;11765:28:115;13925:177:123;11727:77:115;-1:-1:-1;;;;;11813:25:115;;;;;;:16;:25;;;;;:35;;11842:6;;11813:25;:35;;11842:6;;11813:35;:::i;:::-;;;;-1:-1:-1;;;;;;;11863:57:115;;11894:25;;;;:16;:25;;;;;;;;;;11863:57;;14071:25:123;;;-1:-1:-1;;;;;;;;;;;11863:57:115;14044:18:123;11863:57:115;;;;;;;11648:279;;:::o;9483:1303::-;5724:7:29;;9858:4:115;;9846:1;;5695:10:29;5724:14;;;5723:24;2759:52;;;;-1:-1:-1;;;2759:52:29;;;;;;;:::i;:::-;9874:23:115::1;-1:-1:-1::0;;;;;9911:27:115;::::1;9907:229;;-1:-1:-1::0;9972:15:115;9907:229:::1;;;10080:15;10097:13;10063:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10036:89;;;;;;10018:107;;9907:229;10150:29;::::0;;;:12:::1;:29;::::0;;;;:46;::::1;;:51:::0;;10146:94:::1;;10224:5;10217:12;;;;;10146:94;10255:29;::::0;;;:12:::1;:29;::::0;;;;:39;;;::::1;;;10250:83;;10317:5;10310:12;;;;;10250:83;10363:163;::::0;;::::1;::::0;::::1;22125:19:123::0;;;22160:12;;;22153:28;;;22197:12;;;22190:28;;;-1:-1:-1;;;;;;22248:44:123;;22234:12;;;22227:66;10343:17:115::1;::::0;22309:13:123;;10363:163:115::1;::::0;;-1:-1:-1;;10363:163:115;;::::1;::::0;;;;;;10558:15;;10363:163:::1;10558:15:::0;::::1;::::0;10363:163;;-1:-1:-1;10603:176:115::1;10649:11:::0;10678:15;10558;10739:26;10603:28:::1;:176::i;:::-;10584:195;;;;;2821:1:29;9483:1303:115::0;;;;;;;;;;;:::o;5826:138:29:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:29;-1:-1:-1;;;;;2285:23:29;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:29;:10;-1:-1:-1;;;;;2271:39:29;;2263:94;;;;-1:-1:-1;;;2263:94:29;;;;;;;:::i;:::-;5920:37:::1;5939:17;5920:18;:37::i;:::-;5826:138:::0;:::o;3832:392::-;2125:14;;:35;;-1:-1:-1;;;2125:35:29;;2149:10;2125:35;;;7968:51:123;-1:-1:-1;;;;;2125:14:29;;;;:23;;7941:18:123;;2125:35:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:29;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:29;;23861:2:123;4025:107:29::1;::::0;::::1;23843:21:123::0;23900:2;23880:18;;;23873:30;23939:34;23919:18;;;23912:62;24010:26;23990:18;;;23983:54;24054:19;;4025:107:29::1;23659:420:123::0;4025:107:29::1;4142:7;:25:::0;;;4182:35:::1;::::0;14071:25:123;;;4189:10:29::1;::::0;4182:35:::1;::::0;14059:2:123;14044:18;4182:35:29::1;;;;;;;;3832:392:::0;:::o;14547:1081:76:-;14745:22;14769;14878:13;2037:77:87;14980:7:76;15009:3;:5;;;15036:3;:5;;;15063;:7;;;15071:1;15063:10;;;;;;;:::i;:::-;;;;;15095:7;;15103:1;15095:10;;;;15127:5;:7;;;15135:1;15127:10;;;;;;;:::i;:::-;;;;;15159:5;:7;;;15167:1;15159:10;;;;;;;:::i;:::-;;;;;;;;;;15191:7;;15220;;;;14942:303;;;;;;;;;;;24569:19:123;;;24613:2;24604:12;;24597:28;;;;24650:2;24641:12;;24634:28;;;;24687:2;24678:12;;24671:28;;;;24724:3;24715:13;;24708:29;;;;24762:3;24753:13;;24746:29;24800:3;24791:13;;24784:29;24838:3;24829:13;;24822:29;24876:3;24867:13;;24860:29;24914:3;24905:13;;24216:708;14942:303:76;;;;;;;;;;;;;14915:344;;;;;;14894:375;;:394;;;;:::i;:::-;14878:410;-1:-1:-1;15371:250:76;15402:33;15413:21;:3;14878:410;15413:14;:21::i;:::-;15402:5;;:10;:33::i;:::-;15449:22;:20;:22::i;:::-;15485:67;15514:37;15545:5;15514:19;-1:-1:-1;;;;;;;;;;;;;;;;;2392:13:87;;;;;;;;2400:1;2392:13;;2403:1;2392:13;;;;;2313:99;15514:19:76;:30;;:37::i;:::-;15485:23;15500:7;15485:14;:23::i;:::-;:28;;:67::i;:::-;15566:5;1055:7;15371:17;:250::i;:::-;15330:291;;;;-1:-1:-1;14547:1081:76;-1:-1:-1;;;;;;14547:1081:76:o;9187:176:115:-;1334:13:40;:11;:13::i;:::-;9273:17:115::1;:40:::0;;9296:1:::1;:16;::::0;::::1;::::0;;::::1;9294:19;9273:40:::0;;::::1;::::0;;;9328:28:::1;::::0;::::1;::::0;-1:-1:-1;;9328:28:115::1;9187:176:::0;:::o;10922:458::-;5724:7:29;;10983:1:115;;5695:10:29;5724:14;;;5723:24;2759:52;;;;-1:-1:-1;;;2759:52:29;;;;;;;:::i;:::-;11017:10:115::1;11000:28;::::0;;;:16:::1;:28;::::0;;;;;:37;-1:-1:-1;10996:204:115::1;;;11095:10;11147:28;::::0;;;:16:::1;:28;::::0;;;;;;;11060:129;;-1:-1:-1;;;11060:129:115;;::::1;::::0;::::1;25477:51:123::0;;;;25544:18;;;25537:34;;;25587:18;;;25580:34;25450:18;;11060:129:115::1;25275:345:123::0;10996:204:115::1;11227:10;11210:28;::::0;;;:16:::1;:28;::::0;;;;:38;;11242:6;;11210:28;:38:::1;::::0;11242:6;;11210:38:::1;:::i;:::-;::::0;;;-1:-1:-1;;11285:10:115::1;11297:28;::::0;;;:16:::1;:28;::::0;;;;;;;;;11263:63;;14071:25:123;;;-1:-1:-1;;;;;;;;;;;11263:63:115;14044:18:123;11263:63:115::1;;;;;;;11337:36;::::0;11345:10:::1;::::0;11337:36;::::1;;;::::0;11366:6;;11337:36:::1;::::0;;;11366:6;11345:10;11337:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10922:458:::0;;:::o;7697:1470:77:-;7854:44;;-1:-1:-1;;;7854:44:77;;-1:-1:-1;;;;;7986:32:123;;;7854:44:77;;;7968:51:123;7801:16:77;;7833:18;;7854:20;:34;;;;7941:18:123;;7854:44:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7933:55;;-1:-1:-1;;;7933:55:77;;;;;14071:25:123;;;7833:65:77;;-1:-1:-1;7908:22:77;;-1:-1:-1;;;;;7933:20:77;:43;;;;14044:18:123;;7933:55:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7908:80;-1:-1:-1;;;;;;8003:19:77;;;;:62;;;8026:20;-1:-1:-1;;;;;8026:32:77;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;;8003:62;7999:116;;;8088:16;;;8102:1;8088:16;;;;;;;;;;;-1:-1:-1;8081:23:77;7697:1470;-1:-1:-1;;;;7697:1470:77:o;7999:116::-;8196:36;8235:46;8266:14;-1:-1:-1;;;;;8235:46:77;:30;:46::i;:::-;8196:85;-1:-1:-1;8291:21:77;;8322:173;8346:23;:30;8342:1;:34;8322:173;;;8414:14;-1:-1:-1;;;;;8414:35:77;;8456:23;8480:1;8456:26;;;;;;;;:::i;:::-;;;;;8414:70;;-1:-1:-1;;;;;;8414:70:77;;;;;;;8456:26;;;;;8414:70;;;26818:36:123;26791:18;;8414:70:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8397:87;;;;:::i;:::-;;-1:-1:-1;8378:3:77;;8322:173;;;;8566:35;8618:13;-1:-1:-1;;;;;8604:28:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8604:28:77;;8566:66;;8642:13;8674:9;8669:457;8693:23;:30;8689:1;:34;8669:457;;;8744:12;8765:23;8789:1;8765:26;;;;;;;;:::i;:::-;;;;;8837:43;;-1:-1:-1;;;8837:43:77;;8765:26;;;;;8837:43;;;26818:36:123;;;8765:26:77;-1:-1:-1;;;;;;;;8837:14:77;:35;;;;26791:18:123;;8837:43:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8806:74;;8899:9;8894:222;8918:20;8914:1;:24;8894:222;;;9019:47;;-1:-1:-1;;;9019:47:77;;27254:4:123;27242:17;;9019:47:77;;;27224:36:123;27276:18;;;27269:34;;;9019:14:77;-1:-1:-1;;;;;9019:36:77;;;;27197:18:123;;9019:47:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;8963:18;8982:5;8963:25;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8963:113:77;;;:25;;;;;;;;;;;:113;9094:7;;;;:::i;:::-;;-1:-1:-1;;8940:3:77;;8894:222;;;-1:-1:-1;;;8725:3:77;;8669:457;;;-1:-1:-1;9142:18:77;;7697:1470;-1:-1:-1;;;;;;;7697:1470:77:o;5599:135::-;1334:13:40;:11;:13::i;:::-;5686:41:77::1;5707:19;5686:20;:41::i;2232:123:76:-:0;1537:19;-1:-1:-1;;;;;1537:25:76;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1523:41:76;:10;-1:-1:-1;;;;;1523:41:76;;1502:180;;;;-1:-1:-1;;;1502:180:76;;28333:2:123;1502:180:76;;;28315:21:123;28372:2;28352:18;;;28345:30;28411:34;28391:18;;;28384:62;28482:34;28462:18;;;28455:62;28554:30;28533:19;;;28526:59;28602:19;;1502:180:76;28131:496:123;1502:180:76;2317:31:::1;2342:5;2317:24;:31::i;11507:135:115:-:0;5724:7:29;;11585:1:115;;5695:10:29;5724:14;;;5723:24;2759:52;;;;-1:-1:-1;;;2759:52:29;;;;;;;:::i;:::-;11598:37:115::1;11616:7;11625:9;11598:17;:37::i;:::-;11507:135:::0;;:::o;4387:9678:76:-;-1:-1:-1;;;;;;;;;;;;;;;;;4578:7:76;4651:6;:17;;;:24;4619:21;;;;;;;;;;;;;;;;;:28;:56;4618:142;;;;;4729:6;:23;;;:30;4697:21;;;;;;;;;;;;;;;;;:28;:62;4618:142;:227;;;;;4813:6;:24;;;:31;4781:21;;;;;;;;;;;;;;;;;:28;:63;4618:227;:316;;;;;4898:6;:28;;;:35;4866:21;;;;;;;;;;;;;;;;;:28;:67;4618:316;4597:428;;;;-1:-1:-1;;;4597:428:76;;28834:2:123;4597:428:76;;;28816:21:123;28873:2;28853:18;;;28846:30;-1:-1:-1;;;;;;;;;;;28892:18:123;;;28885:62;28983:34;28963:18;;;28956:62;-1:-1:-1;;;29034:19:123;;;29027:32;29076:19;;4597:428:76;28632:469:123;4597:428:76;5107:35;;:42;5057:23;;;;:30;:92;5036:207;;;;-1:-1:-1;;;5036:207:76;;29308:2:123;5036:207:76;;;29290:21:123;29347:2;29327:18;;;29320:30;;;-1:-1:-1;;;;;;;;;;;29366:18:123;;;29359:62;29457:34;29437:18;;;29430:62;-1:-1:-1;;;29508:19:123;;;29501:35;29553:19;;5036:207:76;29106:472:123;5036:207:76;5305:12;5275:43;;:20;:43;;;5254:150;;;;-1:-1:-1;;;5254:150:76;;29785:2:123;5254:150:76;;;29767:21:123;29824:2;29804:18;;;29797:30;-1:-1:-1;;;;;;;;;;;29843:18:123;;;29836:62;29934:30;29914:18;;;29907:58;29982:19;;5254:150:76;29583:424:123;5254:150:76;5921:19;;;;;;;;-1:-1:-1;5921:19:76;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;6277:21:76;;;;;;;;;;;;;;;;;;6264:42;;;;;;;;;;;5921:19;;6264:42;6277:21;6264:42;;;;5921:19;6264:42;;;;;-1:-1:-1;;6230:31:76;;;;:76;;;;6364:21;;;;;;;;;;;;-1:-1:-1;6364:21:76;;;;;6351:42;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6316:77:76;;-1:-1:-1;;;;;;;;;;;;;;;;;6499:6:76;:23;;;:30;-1:-1:-1;;;;;6472:67:76;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6472:67:76;-1:-1:-1;6445:94:76;;6589:23;;;;:30;-1:-1:-1;;;;;6575:45:76;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6575:45:76;;6549:10;:23;;:71;;;;6799:27;6829:141;6884:21;;;;;;;;;;;;;;;;;6923:19;-1:-1:-1;;;;;6923:31:76;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6829:37;:141::i;:::-;6799:171;;6990:9;6985:1728;7009:6;:23;;;:30;7005:1;:34;6985:1728;;;7301:82;:6;:44;;;7346:1;7301:47;;;;;;;;:::i;:::-;;;;;;;10534:9:87;;10473:16;10524:20;;;10580:4;10576:13;;;10570:20;10557:34;;;10629:4;10616:18;;;10404:246;7301:82:76;7272:10;:23;;;7296:1;7272:26;;;;;;;;:::i;:::-;;;;;;;;;;:111;7405:6;;7401:305;;7542:23;;;;7566:5;7570:1;7566;:5;:::i;:::-;7542:30;;;;;;;;:::i;:::-;;;;;;;7534:39;;7476:10;:23;;;7500:1;7476:26;;;;;;;;:::i;:::-;;;;;;;7468:35;;:105;7435:252;;;;;-1:-1:-1;;;7435:252:76;;30214:2:123;7435:252:76;;;30196:21:123;30233:18;;;30226:30;;;;-1:-1:-1;;;;;;;;;;;30272:18:123;;;30265:62;30363:34;30343:18;;;30336:62;30415:19;;7435:252:76;30012:428:123;7435:252:76;7846:19;-1:-1:-1;;;;;7846:76:76;;7961:10;:23;;;7985:1;7961:26;;;;;;;;:::i;:::-;;;;;;;8026:20;8079:6;:35;;;8115:1;8079:38;;;;;;;;:::i;:::-;;;;;;;7846:294;;;;;;;;;;;;;;;;30644:25:123;;;30717:10;30705:23;;;30700:2;30685:18;;30678:51;30765:23;30760:2;30745:18;;30738:51;30632:2;30617:18;;30445:350;7846:294:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7816:324:76;:10;:24;;;7841:1;7816:27;;;;;;;;:::i;:::-;;;;;;:324;;;;;8431:267;8461:219;8529:129;8613:19;8583:10;:24;;;8608:1;8583:27;;;;;;;;:::i;:::-;;;;;;;:49;8529:24;:129::i;:::-;8461:6;:23;;;8485:1;8461:26;;;;;;;;:::i;:::-;;;;;;;:42;;:219;;;;:::i;8431:267::-;8425:273;-1:-1:-1;7041:3:76;;6985:1728;;;;6631:2092;8996:12;:3;:10;:12::i;:::-;9340:20;;8990:18;;-1:-1:-1;9340:20:76;;9311:26;9340:20;9406:97;;9502:1;9406:97;;;9446:10;-1:-1:-1;;;;;9446:35:76;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9374:129;;9523:9;9518:3499;9542:21;;;;;;;;;;;;;;;;;:28;9538:1;:32;9518:3499;;;9754:21;9750:486;;;10045:20;9832:233;;9993:21;9832:19;-1:-1:-1;;;;;9832:43:76;;9911:21;;;;;;;;;;;;;;;;;9933:1;9911:24;;;;;;;;:::i;:::-;;;;;9832:130;;-1:-1:-1;;;;;;9832:130:76;;;;;;;9911:24;;;;;9832:130;;;26818:36:123;26791:18;;9832:130:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:182;;;;:::i;:::-;:233;9799:418;;;;-1:-1:-1;;;9799:418:76;;31002:2:123;9799:418:76;;;30984:21:123;31041:3;31021:18;;;31014:31;-1:-1:-1;;;;;;;;;;;31061:18:123;;;31054:62;31152:34;31132:18;;;31125:62;31224:34;31203:19;;;31196:63;-1:-1:-1;;;31275:19:123;;;31268:37;31322:19;;9799:418:76;30800:547:123;9799:418:76;10504:14;-1:-1:-1;;;;;10504:46:76;;10601:21;;;;;;;;;;;;;;;;;10623:1;10601:24;;;;;;;;:::i;:::-;;;;;;;;;10595:31;;10669:20;10726:6;:23;;;10750:1;10726:26;;;;;;;;:::i;:::-;;;;;;;;;;;10504:275;;-1:-1:-1;;;;;;10504:275:76;;;;;;;31577:4:123;31565:17;;;10504:275:76;;;31547:36:123;10504:275:76;31619:23:123;;;31599:18;;;31592:51;31679:23;31659:18;;;31652:51;31520:18;;10504:275:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10433:346:76;;10441:34;:6;:17;;;10459:1;10441:20;;;;;;;;:::i;:34::-;-1:-1:-1;;10433:346:76;;10404:514;;;;-1:-1:-1;;;10404:514:76;;32215:2:123;10404:514:76;;;32197:21:123;32254:2;32234:18;;;32227:30;-1:-1:-1;;;;;;;;;;;32273:18:123;;;32266:62;32364:34;32344:18;;;32337:62;32436:34;32415:19;;;32408:63;-1:-1:-1;;;32487:19:123;;;32480:32;32529:19;;10404:514:76;32013:541:123;10404:514:76;10942:30;10951:6;:17;;;10969:1;10951:20;;;;;;;;:::i;:::-;;;;;;;10942:3;:8;;:30;;;;:::i;:::-;10936:36;;11126:13;-1:-1:-1;;;;;11126:70:76;;11243:21;;;;;;;;;;;;;;;;;11265:1;11243:24;;;;;;;;:::i;:::-;;;;;;;;;11237:31;;11307:20;11360:6;:24;;;11385:1;11360:27;;;;;;;;:::i;:::-;;;;;;;;;;;11126:284;;-1:-1:-1;;;;;;11126:284:76;;;;;;;31577:4:123;31565:17;;;11126:284:76;;;31547:36:123;11126:284:76;31619:23:123;;;31599:18;;;31592:51;31679:23;31659:18;;;31652:51;31520:18;;11126:284:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11089:11;:31;;;11121:1;11089:34;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11089:321:76;;;:34;;;;;;;;;;:321;11466:52;;;:55;;11519:1;;11466:55;;;;;;:::i;:::-;;;;;;;11428:11;:32;;;11461:1;11428:35;;;;;;;;:::i;:::-;;;;;;:93;-1:-1:-1;;;;;11428:93:76;;;-1:-1:-1;;;;;11428:93:76;;;;;11608:31;11891:9;11886:1117;11910:6;:23;;;:30;11906:1;:34;11886:1117;;;12107:161;12154:10;:24;;;12179:1;12154:27;;;;;;;;:::i;:::-;;;;;;;12217:21;;;;;;;;;;;;;;;;;12239:1;12217:24;;;;;;;;:::i;:::-;;;;;;;7387:13:88;;;7404:1;7386:19;;;7380:26;;7292:121;12107:161:76;12078:907;;;12356:13;-1:-1:-1;;;;;12356:72:76;;12483:21;;;;;;;;;;;;;;;;;12505:1;12483:24;;;;;;;;:::i;:::-;;;;;;;;;12477:31;;12555:20;12621:10;:23;;;12645:1;12621:26;;;;;;;;:::i;:::-;;;;;;;12688:6;:28;;;12717:1;12688:31;;;;;;;;:::i;:::-;;;;;;;12757:23;12688:126;;;;;;;;:::i;:::-;;;;;;;;;;;12356:489;;-1:-1:-1;;;;;;12356:489:76;;;;;;;33067:4:123;33055:17;;;12356:489:76;;;33037:36:123;12356:489:76;33109:23:123;;;33089:18;;;33082:51;33149:18;;;33142:34;;;;33212:23;33192:18;;;33185:51;33009:19;;12356:489:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12317:32;;:35;;12350:1;;12317:35;;;;;;:::i;:::-;;;;;;:528;;;;;;;:::i;:::-;-1:-1:-1;;;;;12317:528:76;;;-1:-1:-1;12911:25:76;;;;;12078:907;11942:3;;11886:1117;;;-1:-1:-1;;9572:3:76;;9518:3499;;;;9297:3730;;13104:22;13144:21;13182:170;13234:7;13263:3;13288:6;:12;;;13322:6;:12;;;13182:30;:170::i;:::-;13086:266;;;;13391:17;13366:143;;;;-1:-1:-1;;;13366:143:76;;33672:2:123;13366:143:76;;;33654:21:123;33711:2;33691:18;;;33684:30;-1:-1:-1;;;;;;;;;;;33730:18:123;;;33723:62;33821:34;33801:18;;;33794:62;-1:-1:-1;;;33872:19:123;;;33865:34;33916:19;;13366:143:76;33470:471:123;13366:143:76;13548:16;13523:132;;;;-1:-1:-1;;;13523:132:76;;34148:2:123;13523:132:76;;;34130:21:123;34187:2;34167:18;;;34160:30;-1:-1:-1;;;;;;;;;;;34206:18:123;;;34199:62;34297:27;34277:18;;;34270:55;34342:19;;13523:132:76;33946:421:123;13523:132:76;13036:630;;13740:27;13810:20;13832:10;:23;;;13793:63;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;13793:63:76;;;;;;13770:96;;13793:63;13770:96;;;;14025:11;;13770:96;;-1:-1:-1;4387:9678:76;;-1:-1:-1;;;;;;;4387:9678:76:o;4299:136:29:-;2125:14;;:35;;-1:-1:-1;;;2125:35:29;;2149:10;2125:35;;;7968:51:123;-1:-1:-1;;;;;2125:14:29;;;;:23;;7941:18:123;;2125:35:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:29;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:29::1;:27:::0;;;4391:37:::1;::::0;14071:25:123;;;4398:10:29::1;::::0;4391:37:::1;::::0;14059:2:123;14044:18;4391:37:29::1;;;;;;;4299:136::o:0;2071:101:40:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;12044:173:115:-;12157:4;12206;12190:11;;12180:22;;;;;;;:::i;:::-;;;;;;;;:30;12173:37;;12044:173;;;;;:::o;4797:260:77:-;1358:10;-1:-1:-1;;;;;1380:20:77;1358:43;;1337:172;;;;-1:-1:-1;;;1337:172:77;;;;;;;:::i;:::-;4986:64:::1;::::0;-1:-1:-1;;;4986:64:77;;-1:-1:-1;;;;;4986:13:77::1;:35;::::0;::::1;::::0;:64:::1;::::0;5022:8;;5032:17;;4986:64:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4797:260:::0;;:::o;5262:158::-;1358:10;-1:-1:-1;;;;;1380:20:77;1358:43;;1337:172;;;;-1:-1:-1;;;1337:172:77;;;;;;;:::i;:::-;5364:49:::1;::::0;-1:-1:-1;;;5364:49:77;;-1:-1:-1;;;;;7986:32:123;;;5364:49:77::1;::::0;::::1;7968:51:123::0;5364:13:77::1;:39;::::0;::::1;::::0;7941:18:123;;5364:49:77::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5262:158:::0;:::o;2721:148::-;1334:13:40;:11;:13::i;:::-;2814:48:77::1;::::0;-1:-1:-1;;;2814:48:77;;-1:-1:-1;;;;;2814:13:77::1;:34;::::0;::::1;::::0;:48:::1;::::0;2849:12;;2814:48:::1;;;:::i;5839:2970:115:-:0;12277:17;;-1:-1:-1;;;;;12277:17:115;12263:10;:31;12259:121;;12351:17;;12317:52;;-1:-1:-1;;;12317:52:115;;12339:10;12317:52;;;37202:51:123;-1:-1:-1;;;;;12351:17:115;;;37269:18:123;;;37262:60;37175:18;;12317:52:115;37028:300:123;12259:121:115;5724:7:29;;6140:1:115::1;::::0;5695:10:29;5724:14;;;5723:24;2759:52:::1;;;;-1:-1:-1::0;;;2759:52:29::1;;;;;;;:::i;:::-;6153:22:115::2;6178:9;6153:34;;6198:27;6268:15;6285:13;6251:48;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;6251:48:115;;::::2;::::0;;;;;;6228:81;;6251:48:::2;6228:81:::0;;::::2;::::0;6320:31:::2;6354:33:::0;;;:12:::2;:33:::0;;;;;;6559:29;;6228:81;;-1:-1:-1;6354:33:115;6559:29:::2;::::0;;::::2;:34:::0;;6555:110:::2;;6616:38;::::0;-1:-1:-1;;;6616:38:115;;::::2;::::0;::::2;14071:25:123::0;;;14044:18;;6616:38:115::2;13925:177:123::0;6555:110:115::2;6727:22:::0;;;;::::2;;;6723:102;;;6772:42;::::0;-1:-1:-1;;;6772:42:115;;::::2;::::0;::::2;14071:25:123::0;;;14044:18;;6772:42:115::2;13925:177:123::0;6723:102:115::2;6834:29:::0;;-1:-1:-1;;6834:29:115::2;::::0;::::2;::::0;;6859:4:::2;6989:34:::0;::::2;::::0;-1:-1:-1;;;;;6955:31:115;::::2;6834:22;6955:31:::0;;;:16:::2;:31;::::0;;;;;:68:::2;6938:291;;;7121:34;::::0;::::2;::::0;-1:-1:-1;;;;;7173:31:115;::::2;;::::0;;;:16:::2;:31;::::0;;;;;;;7055:163;;-1:-1:-1;;;7055:163:115;;::::2;::::0;::::2;25477:51:123::0;;;;25544:18;;;25537:34;;;;25587:18;;;25580:34;;;;25450:18;;7055:163:115::2;25275:345:123::0;6938:291:115::2;7475:29:::0;;7365:42:::2;::::0;7413:142:::2;::::0;7442:19;;7475:29:::2;;7518:27:::0;7413:15:::2;:142::i;:::-;7364:191;;;1306:2;7748:86;;:17;:37;;;7786:1;7748:40;;;;;;;;:::i;:::-;;;;;;;:86;;;;:::i;:::-;-1:-1:-1::0;;;;;7668:166:115::2;1243:3;7668:17;:38;;;7707:1;7668:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;7668:65:115::2;;;;;:::i;:::-;:166;7651:473;;;1243:3;7906:17;:38;;;7945:1;7906:41;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;7906:85:115::2;;;;;:::i;:::-;1306:2;8009:90;;:17;:37;;;8047:1;8009:40;;;;;;;;:::i;:::-;;;;;;;:90;;;;:::i;:::-;7866:247;::::0;-1:-1:-1;;;7866:247:115;;::::2;::::0;::::2;37976:25:123::0;;;;-1:-1:-1;;;;;38037:39:123;38017:18;;;38010:67;37949:18;;7866:247:115::2;37803:280:123::0;7651:473:115::2;8139:45;::::0;-1:-1:-1;;;;;7986:32:123;;7968:51;;8153:15:115;;8139:45:::2;::::0;7956:2:123;7941:18;8139:45:115::2;;;;;;;8298:14;8355:11;8333:9;8316:26;::::0;:14;:26:::2;:::i;:::-;:35;::::0;8345:6:::2;8316:35;:::i;:::-;8315:51;;;;:::i;:::-;8298:68;;8435:22;8469:12;:34;;;8460:6;:43;:101;;8527:12;:34;;;8460:101;;;8518:6;8460:101;-1:-1:-1::0;;;;;8572:31:115;::::2;;::::0;;;:16:::2;:31;::::0;;;;:49;;8435:126;;-1:-1:-1;8435:126:115;;8572:31;;;:49:::2;::::0;8435:126;;8572:49:::2;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;8637:103:115;::::2;8699:31;::::0;;;:16:::2;:31;::::0;;;;;;;;;8637:103;;14071:25:123;;;-1:-1:-1;;;;;;;;;;;8637:103:115;14044:18:123;8637:103:115::2;;;;;;;8759:17;::::0;8751:51:::2;::::0;-1:-1:-1;;;;;8759:17:115;;::::2;::::0;8751:51;::::2;;;::::0;8787:14;;8759:17:::2;8751:51:::0;8759:17;8751:51;8787:14;8759:17;8751:51;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;6143:2666;;;;;;12389:1:::1;5839:2970:::0;;;:::o;9369:108::-;1334:13:40;:11;:13::i;:::-;9444:17:115::1;:26:::0;9369:108::o;4432:1401::-;5724:7:29;;4610:1:115;;5695::29;5724:14;;;5723:24;2759:52;;;;-1:-1:-1;;;2759:52:29;;;;;;;:::i;:::-;4623:23:115::1;4689:15;4706:10;4672:45;;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;4672:45:115;;::::1;::::0;;;;;;4649:78;;4672:45:::1;4649:78:::0;;::::1;::::0;4742:29:::1;::::0;;;:12:::1;:29:::0;;;;;:46;4649:78;;-1:-1:-1;4742:46:115::1;;:51:::0;4738:127:::1;;4816:38;::::0;-1:-1:-1;;;4816:38:115;;::::1;::::0;::::1;14071:25:123::0;;;14044:18;;4816:38:115::1;13925:177:123::0;4738:127:115::1;4879:9;:13:::0;4875:213:::1;;4925:10;4908:28;::::0;;;:16:::1;:28;::::0;;;;:41;;4940:9:::1;::::0;4908:28;:41:::1;::::0;4940:9;;4908:41:::1;:::i;:::-;::::0;;;-1:-1:-1;;5007:10:115::1;5035:28;::::0;;;:16:::1;:28;::::0;;;;;;;;;4968:109;;14071:25:123;;;-1:-1:-1;;;;;;;;;;;4968:109:115;14044:18:123;4968:109:115::1;;;;;;;4875:213;5119:10;5102:28;::::0;;;:16:::1;:28;::::0;;;;;:52;-1:-1:-1;5098:234:115::1;;;5212:10;5279:28;::::0;;;:16:::1;:28;::::0;;;;;;;5177:144;;-1:-1:-1;;;5177:144:115;;::::1;::::0;::::1;25477:51:123::0;;;;25544:18;;;25537:34;;;25587:18;;;25580:34;25450:18;;5177:144:115::1;25275:345:123::0;5098:234:115::1;-1:-1:-1::0;;;;;;;;;;;;;;;;5381:50:115::1;5418:12;5381:50:::0;;::::1;::::0;;-1:-1:-1;;;5479:56:115;;;5546:29;;;:12:::1;:29:::0;;;;;;;:42;;;;;;::::1;;::::0;::::1;-1:-1:-1::0;;5546:42:115;;;;::::1;::::0;;;;;;;::::1;::::0;;;;-1:-1:-1;5546:42:115;;::::1;::::0;5654:172;;-1:-1:-1;;5678:15:115;;5654:172:::1;::::0;::::1;::::0;5707:10:::1;::::0;5418:12;5765:16;;;;5479:56;;5654:172:::1;:::i;:::-;;;;;;;;4613:1220;;4432:1401:::0;;;;;:::o;6262:951:77:-;6321:16;6349:19;6371:20;-1:-1:-1;;;;;6371:32:77;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6349:56;;;;6420:11;6435:1;6420:16;6416:70;;-1:-1:-1;;6459:16:77;;;6473:1;6459:16;;;;;;;;;6262:951::o;6416:70::-;6496:21;;6527:129;6551:11;6547:1;:15;6527:129;;;6600:45;;-1:-1:-1;;;6600:45:77;;26848:4:123;26836:17;;6600:45:77;;;26818:36:123;6600:14:77;-1:-1:-1;;;;;6600:35:77;;;;26791:18:123;;6600:45:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6583:62;;;;:::i;:::-;;-1:-1:-1;6564:3:77;;6527:129;;;;6666:35;6718:13;-1:-1:-1;;;;;6704:28:77;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6704:28:77;;6666:66;;6742:13;6774:9;6769:403;6793:20;-1:-1:-1;;;;;6793:32:77;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6789:38;;:1;:38;6769:403;;;6879:45;;-1:-1:-1;;;6879:45:77;;26848:4:123;26836:17;;6879:45:77;;;26818:36:123;6848:28:77;;6879:14;-1:-1:-1;;;;;6879:35:77;;;;26791:18:123;;6879:45:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6848:76;;6943:9;6938:224;6962:20;6958:1;:24;6938:224;;;7063:49;;-1:-1:-1;;;7063:49:77;;27254:4:123;27242:17;;7063:49:77;;;27224:36:123;27276:18;;;27269:34;;;7063:14:77;-1:-1:-1;;;;;7063:36:77;;;;27197:18:123;;7063:49:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;;7007:18;7026:5;7007:25;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7007:115:77;;;:25;;;;;;;;;;;:115;7140:7;;;;:::i;:::-;;-1:-1:-1;;6984:3:77;;6938:224;;;-1:-1:-1;;6829:3:77;;6769:403;;;-1:-1:-1;7188:18:77;;6262:951;-1:-1:-1;;;;6262:951:77:o;2321:198:40:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:40;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:40;;38944:2:123;2401:73:40::1;::::0;::::1;38926:21:123::0;38983:2;38963:18;;;38956:30;39022:34;39002:18;;;38995:62;-1:-1:-1;;;39073:18:123;;;39066:36;39119:19;;2401:73:40::1;38742:402:123::0;2401:73:40::1;2484:28;2503:8;2484:18;:28::i;2711:934:115:-:0;3111:19:44;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:44;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:44;1476:19:48;:23;;;3219:66:44;;-1:-1:-1;3268:12:44;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:44;;39351:2:123;3157:201:44;;;39333:21:123;39390:2;39370:18;;;39363:30;39429:34;39409:18;;;39402:62;-1:-1:-1;;;39480:18:123;;;39473:44;39534:19;;3157:201:44;39149:410:123;3157:201:44;3368:12;:16;;-1:-1:-1;;3368:16:44;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:44;;;;;3394:65;-1:-1:-1;;;;;2951:27:115;::::1;2947:95;;3001:30;::::0;-1:-1:-1;;;3001:30:115;;39766:2:123;3001:30:115::1;::::0;::::1;39748:21:123::0;39805:2;39785:18;;;39778:30;-1:-1:-1;;;39824:18:123;;;39817:42;39876:18;;3001:30:115::1;39564:336:123::0;2947:95:115::1;-1:-1:-1::0;;;;;3055:31:115;::::1;3051:103;;3109:34;::::0;-1:-1:-1;;;3109:34:115;;40107:2:123;3109:34:115::1;::::0;::::1;40089:21:123::0;40146:2;40126:18;;;40119:30;-1:-1:-1;;;40165:18:123;;;40158:46;40221:18;;3109:34:115::1;39905:340:123::0;3051:103:115::1;-1:-1:-1::0;;;;;3167:32:115;::::1;3163:105;;3222:35;::::0;-1:-1:-1;;;3222:35:115;;40452:2:123;3222:35:115::1;::::0;::::1;40434:21:123::0;40491:2;40471:18;;;40464:30;-1:-1:-1;;;40510:18:123;;;40503:47;40567:18;;3222:35:115::1;40250:341:123::0;3163:105:115::1;3277:59;3303:13;3318:17;3277:25;:59::i;:::-;3346:17;:38:::0;;-1:-1:-1;;;;;;3346:38:115::1;-1:-1:-1::0;;;;;3346:38:115;::::1;;::::0;;3461:33:::1;3480:13:::0;3461:18:::1;:33::i;:::-;3582:56;3600:15;3617:20;3582:17;:56::i;:::-;3483:14:44::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:44;;;3553:14;;-1:-1:-1;26818:36:123;;3553:14:44;;26806:2:123;26791:18;3553:14:44;;;;;;;3101:483;2711:934:115;;;;;:::o;10793:123::-;1334:13:40;:11;:13::i;:::-;10871:17:115::1;:38:::0;;-1:-1:-1;;;;;;10871:38:115::1;-1:-1:-1::0;;;;;10871:38:115;;;::::1;::::0;;;::::1;::::0;;10793:123::o;4911:437:29:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:29;-1:-1:-1;;;;;2285:23:29;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:29;:10;-1:-1:-1;;;;;2271:39:29;;2263:94;;;;-1:-1:-1;;;2263:94:29;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:150;;;::::0;-1:-1:-1;;;5104:150:29;;40997:2:123;5104:150:29::1;::::0;::::1;40979:21:123::0;41036:2;41016:18;;;41009:30;41075:34;41055:18;;;41048:62;41146:26;41126:18;;;41119:54;41190:19;;5104:150:29::1;40795:420:123::0;5104:150:29::1;5264:7;:25:::0;;;5304:37:::1;::::0;14071:25:123;;;5313:10:29::1;::::0;5304:37:::1;::::0;14059:2:123;14044:18;5304:37:29::1;13925:177:123::0;3631:872:77;1684:16;;-1:-1:-1;;;;;1684:16:77;1670:10;:30;1649:153;;;;-1:-1:-1;;;1649:153:77;;41422:2:123;1649:153:77;;;41404:21:123;41461:2;41441:18;;;41434:30;41500:34;41480:18;;;41473:62;41571:34;41551:18;;;41544:62;-1:-1:-1;;;41622:19:123;;;41615:43;41675:19;;1649:153:77;41220:480:123;1649:153:77;3815:9:::1;3810:610;3830:29:::0;;::::1;3810:610;;;4029:18;;4048:1;4029:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;::::0;;;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;4029:40:77::1;;4070:10;4090:4;4097:18;;4116:1;4097:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:28;4029:97:::0;;-1:-1:-1;;;;;;4029:97:77::1;::::0;;;;;;-1:-1:-1;;;;;42680:32:123;;;4029:97:77::1;::::0;::::1;42662:51:123::0;42749:32;;;;42729:18;;;42722:60;4097:28:77::1;;42798:18:123::0;;;42791:34;42635:18;;4029:97:77::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4140:17;4176:18;;4195:1;4176:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;::::0;;;;;::::1;;;:::i;:::-;:82;::::0;-1:-1:-1;;;4176:82:77;;4222:4:::1;4176:82;::::0;::::1;37202:51:123::0;-1:-1:-1;;;;;4237:19:77::1;37289:32:123::0;;37269:18;;;37262:60;4176:37:77;;;::::1;::::0;::::1;::::0;37175:18:123;;4176:82:77::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4140:118;;4272:18;;4291:1;4272:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:27;::::0;;;;;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;4272:35:77::1;;4333:19;4386:9;4355:18;;4374:1;4355:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:28;;;:40;;;;:::i;:::-;4272:137;::::0;-1:-1:-1;;;;;;4272:137:77::1;::::0;;;;;;-1:-1:-1;;;;;43028:32:123;;;4272:137:77::1;::::0;::::1;43010:51:123::0;43077:18;;;43070:34;42983:18;;4272:137:77::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;3861:3:77::1;;3810:610;;;-1:-1:-1::0;4430:66:77::1;::::0;-1:-1:-1;;;4430:66:77;;-1:-1:-1;;;;;4430:19:77::1;:46;::::0;::::1;::::0;:66:::1;::::0;4477:18;;;;4430:66:::1;;;:::i;9004:177:115:-:0;1334:13:40;:11;:13::i;:::-;9091:17:115::1;:39:::0;;9113:1:::1;:16;::::0;::::1;::::0;;::::1;9091:39:::0;;::::1;::::0;;;9145:29:::1;::::0;::::1;::::0;-1:-1:-1;;9145:29:115::1;9004:177:::0;:::o;1240:240:27:-;1395:4;1469;1418:47;1446:5;1453:4;1459:5;1418:27;:47::i;:::-;:55;;1240:240;-1:-1:-1;;;;;1240:240:27:o;6024:360:29:-;-1:-1:-1;;;;;6127:40:29;;6106:160;;;;-1:-1:-1;;;6106:160:29;;46231:2:123;6106:160:29;;;46213:21:123;46270:2;46250:18;;;46243:30;46309:34;46289:18;;;46282:62;46380:34;46360:18;;;46353:62;-1:-1:-1;;;46431:19:123;;;46424:40;46481:19;;6106:160:29;46029:477:123;6106:160:29;6299:14;;6281:52;;;-1:-1:-1;;;;;6299:14:29;;;37202:51:123;;37289:32;;;37284:2;37269:18;;37262:60;6281:52:29;;37175:18:123;6281:52:29;;;;;;;6343:14;:34;;-1:-1:-1;;;;;;6343:34:29;-1:-1:-1;;;;;6343:34:29;;;;;;;;;;6024:360::o;7084:580:87:-;-1:-1:-1;;;;;;;;;;;;;;;;;7184:23:87;;:::i;:::-;7228:3;;7217:14;;:8;7252:3;;;;7241:8;;;:14;7265:8;;;;:12;;;-1:-1:-1;;7452:1:87;7446:4;7217:14;7436:1;7429:4;7422:5;7418:16;7407:53;7396:64;-1:-1:-1;7396:64:87;;7530:75;7557:48;7582:9;7530:75;;7632:7;7624:33;;;;-1:-1:-1;;;7624:33:87;;47066:2:123;7624:33:87;;;47048:21:123;47105:2;47085:18;;;47078:30;-1:-1:-1;;;47124:18:123;;;47117:43;47177:18;;7624:33:87;46864:337:123;7624:33:87;7174:490;;7084:580;;;;:::o;4823:615::-;-1:-1:-1;;;;;;;;;;;;;;;;;4926:23:87;;:::i;:::-;4970:4;;4959:15;;:8;4995:4;;;;4984:8;;;:15;5020:4;;5009:8;;;;:15;;;;5045:4;;;;5034:8;;;:15;-1:-1:-1;;5225:1:87;5219:4;4959:15;5209:1;5202:4;5195:5;5191:16;5180:53;5169:64;-1:-1:-1;5169:64:87;;5303:75;5330:48;5355:9;5303:75;;5406:7;5398:33;;;;-1:-1:-1;;;5398:33:87;;47408:2:123;5398:33:87;;;47390:21:123;47447:2;47427:18;;;47420:30;-1:-1:-1;;;47466:18:123;;;47459:43;47519:18;;5398:33:87;47206:337:123;4070:128:87;4119:14;;:::i;:::-;-1:-1:-1;4152:39:87;;;;;;;;3635:77;4152:39;;;;;;3752:77;4152:39;;;;;;;;;;;;;;3869:77;4152:39;;3986:77;4152:39;;;;;;;;;;;;;;;4070:128::o;11044:451::-;-1:-1:-1;;;;;;;;;;;;;;;;;11123:12:87;;;11185:24;-1:-1:-1;;;;;;;;;;;11193:2:87;11185:24;:::i;:::-;11173:36;;11220:239;11259:13;11270:1;11259:10;:13::i;:::-;11247:25;;-1:-1:-1;11247:25:87;-1:-1:-1;;;;;;;;;;;;11336:1:87;11333;11326:24;11318:4;:32;11314:92;;11378:13;;;;;;;;;;;;;;;;;;;;11044:451;-1:-1:-1;;;11044:451:87:o;11314:92::-;-1:-1:-1;;;;;;;;;;;11434:1:87;11431;11424:24;11420:28;;11220:239;;9189:1112;9397:31;;;;;;;;;;;;;;;;;;9438;;;;;;;;;;;;;;;;9375:4;;;;9397:31;9480:24;;:::i;:::-;9520:9;9515:302;9539:1;9535;:5;9515:302;;;9561:9;9573:5;:1;9577;9573:5;:::i;:::-;9561:17;;9607:2;9610:1;9607:5;;;;;;;:::i;:::-;;;;;:7;9592:5;9598;:1;9607:7;9598:5;:::i;:::-;9592:12;;;;;;;:::i;:::-;;;;:22;9643:2;9646:1;9643:5;;;;;;;:::i;:::-;;;;;:7;;;9628:5;9634:1;9638;9634:5;;;;:::i;:::-;9628:12;;;;;;;:::i;:::-;;;;:22;9679:2;9682:1;9679:5;;;;;;;:::i;:::-;;;;;:7;:10;9664:5;9670;:1;9674;9670:5;:::i;:::-;9664:12;;;;;;;:::i;:::-;;;;:25;9718:2;9721:1;9718:5;;;;;;;:::i;:::-;;;;;:7;9726:1;9718:10;;;;9703:5;9709;:1;9713;9709:5;:::i;:::-;9703:12;;;;;;;:::i;:::-;;;;:25;9757:2;9760:1;9757:5;;;;;;;:::i;:::-;;;;;:7;;;9765:1;9757:10;;;;;;;:::i;:::-;;;;;9742:5;9748;:1;9752;9748:5;:::i;:::-;9742:12;;;;;;;:::i;:::-;;;;:25;9796:2;9799:1;9796:5;;;;;;;:::i;:::-;;;;;:7;;;9804:1;9796:10;;;;;;;:::i;:::-;;;;;9781:5;9787;:1;9791;9787:5;:::i;:::-;9781:12;;;;;;;:::i;:::-;;;;:25;-1:-1:-1;9542:3:87;;9515:302;;;;9827:21;;:::i;:::-;9858:12;10032:4;10027:3;10012:13;10005:5;10002:1;9990:10;9979:58;10282:6;;9968:69;;10282:11;;;;-1:-1:-1;10265:29:87;;-1:-1:-1;;;;;;;;;;9189:1112:87:o;1599:130:40:-;1513:6;;-1:-1:-1;;;;;1513:6:40;929:10:49;1662:23:40;1654:68;;;;-1:-1:-1;;;1654:68:40;;47750:2:123;1654:68:40;;;47732:21:123;;;47769:18;;;47762:30;47828:34;47808:18;;;47801:62;47880:18;;1654:68:40;47548:356:123;5465:1257:88;5532:12;5650:15;5728:23;5764:20;5777:6;5764:12;:20::i;:::-;5754:31;;-1:-1:-1;;;;;5754:31:88;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5754:31:88;;5728:57;;5841:18;6093:9;6088:601;6122:10;:17;6109:10;:30;6108:45;;;;;6149:3;6145:1;:7;6108:45;6088:601;;;6252:1;:6;;;-1:-1:-1;6339:16:88;;;:21;6335:344;;6524:1;6511:16;;6486:10;6497;6486:22;;;;;;;;:::i;:::-;;;;:41;-1:-1:-1;;;;;6486:41:88;;;;;;;;;6650:12;;;;;6335:344;6155:3;;;:::i;:::-;;;6088:601;;5740:200:77;5847:16;;5823:62;;;-1:-1:-1;;;;;5847:16:77;;;37202:51:123;;37289:32;;;37284:2;37269:18;;37262:60;5823:62:77;;37175:18:123;5823:62:77;;;;;;;5895:16;:38;;-1:-1:-1;;;;;;5895:38:77;-1:-1:-1;;;;;5895:38:77;;;;;;;;;;5740:200::o;15634:148:76:-;15699:20;:28;;-1:-1:-1;;15699:28:76;;;;;;;;;;15742:33;;3516:41:123;;;15742:33:76;;3504:2:123;3489:18;15742:33:76;;;;;;;15634:148;:::o;3308:360:88:-;3419:7;3438:14;3455:44;3481:17;3455:25;:44::i;:::-;3438:61;;3541:6;3524:13;3519:18;;:1;:18;;3518:29;3510:127;;;;-1:-1:-1;;;3510:127:88;;48111:2:123;3510:127:88;;;48093:21:123;48150:2;48130:18;;;48123:30;48189:34;48169:18;;;48162:62;48260:33;48240:18;;;48233:61;48311:19;;3510:127:88;47909:427:123;3510:127:88;3655:6;-1:-1:-1;3308:360:88;;;;;:::o;6797:406::-;6853:6;;6897:209;6904:5;;6897:209;;6931:5;6935:1;6931;:5;:::i;:::-;6925:12;;;;7020:7;;;;:::i;:::-;;;;6897:209;;5698:1197:87;-1:-1:-1;;;;;;;;;;;;;;;;;5824:4:87;5820:1;:8;;;5812:37;;;;-1:-1:-1;;;5812:37:87;;48728:2:123;5812:37:87;;;48710:21:123;48767:2;48747:18;;;48740:30;-1:-1:-1;;;48786:18:123;;;48779:46;48842:18;;5812:37:87;48526:340:123;5812:37:87;5893:1;:6;;5898:1;5893:6;5890:44;;-1:-1:-1;5922:1:87;5915:8;;5890:44;6016:19;;;;;;;;;5989:24;6016:19;;;;;;;;;6145:1;;6208;;6337:481;6348:1;6343:6;;:1;:6;;;6337:481;;6493:1;6483:6;;;;;;;6482:12;;:17;;6478:84;;6529:14;6534:3;6539;6529:4;:14::i;:::-;6523:20;;6478:84;6644:14;6649:3;6654;6644:4;:14::i;:::-;6638:20;-1:-1:-1;6765:7:87;6771:1;6765:7;;;;;6790:3;6337:481;;;-1:-1:-1;6885:3:87;;5698:1197;-1:-1:-1;;;;;5698:1197:87:o;4461:295::-;-1:-1:-1;;;;;;;;;;;;;;;;;4600:3:87;;:8;:20;;;;-1:-1:-1;4612:3:87;;;;:8;4600:20;4596:154;;;-1:-1:-1;;4643:13:87;;;;;;;;;-1:-1:-1;4643:13:87;;;;;;;;4461:295::o;4596:154::-;4694:45;;;;;;;;4702:1;:3;;;4694:45;;;;-1:-1:-1;;;;;;;;;;;4721:1:87;:3;;;:16;;;;:::i;:::-;4707:31;;-1:-1:-1;;;;;;;;;;;4707:31:87;:::i;:::-;4694:45;;4687:52;4461:295;-1:-1:-1;;4461:295:87:o;4596:154::-;4461:295;;;:::o;2673:187:40:-;2765:6;;;-1:-1:-1;;;;;2781:17:40;;;-1:-1:-1;;;;;;2781:17:40;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;2311:238:77:-;4910:13:44;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:44;;49073:2:123;4902:69:44;;;49055:21:123;49112:2;49092:18;;;49085:30;49151:34;49131:18;;;49124:62;-1:-1:-1;;;49202:18:123;;;49195:41;49253:19;;4902:69:44;48871:407:123;4902:69:44;2461:32:77::1;2480:12;2461:18;:32::i;:::-;2503:39;2524:17;2503:20;:39::i;2943:441:29:-:0;3077:14;;-1:-1:-1;;;;;3077:14:29;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:29;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:29;;49485:2:123;3048:197:29;;;49467:21:123;49524:2;49504:18;;;49497:30;49563:34;49543:18;;;49536:62;49634:34;49614:18;;;49607:62;-1:-1:-1;;;49685:19:123;;;49678:38;49733:19;;3048:197:29;49283:475:123;3048:197:29;3255:7;:26;;;3296:36;;14071:25:123;;;3303:10:29;;3296:36;;14059:2:123;14044:18;3296:36:29;;;;;;;3342:35;3361:15;3342:18;:35::i;1997:1172:27:-;2136:7;2191:2;2176:5;:12;:17;;;;:::i;:::-;:22;2155:144;;;;-1:-1:-1;;;2155:144:27;;49965:2:123;2155:144:27;;;49947:21:123;50004:2;49984:18;;;49977:30;50043:34;50023:18;;;50016:62;50114:34;50094:18;;;50087:62;-1:-1:-1;;;50165:19:123;;;50158:42;50217:19;;2155:144:27;49763:479:123;2155:144:27;2332:4;2363:2;2346:788;2372:5;:12;2367:1;:17;2346:788;;2413:9;2421:1;2413:5;:9;:::i;:::-;2426:1;2413:14;2409:715;;2572:12;2566:4;2559:26;2636:1;2629:5;2625:13;2619:20;2613:4;2606:34;2693:4;2687;2677:21;2661:37;;2739:1;2732:5;2728:13;2719:22;;2409:715;;;2940:1;2933:5;2929:13;2923:20;2917:4;2910:34;2978:12;2972:4;2965:26;3044:4;3038;3028:21;3012:37;;3090:1;3083:5;3079:13;3070:22;;2409:715;2386:7;2391:2;2386:7;;:::i;:::-;;;2346:788;;11616:433:87;11670:7;;;-1:-1:-1;;;;;;;;;;;11801:1:87;-1:-1:-1;;;;;;;;;;;11785:1:87;-1:-1:-1;;;;;;;;;;;11769:1:87;11766;11759:24;11752:47;11745:70;11730:85;;11912:9;11924:91;11931:4;11937:65;-1:-1:-1;;;;;;;;;;;11924:6:87;:91::i;:::-;12034:4;;11912:103;;-1:-1:-1;11616:433:87;;-1:-1:-1;;;11616:433:87:o;1188:1693:88:-;1278:7;571:3;1409:17;:24;:49;;1401:142;;;;-1:-1:-1;;;1401:142:88;;50449:2:123;1401:142:88;;;50431:21:123;50488:2;50468:18;;;50461:30;;;50527:34;50507:18;;;50500:62;50598:34;50578:18;;;50571:62;-1:-1:-1;;;50649:19:123;;;50642:35;50694:19;;1401:142:88;50247:472:123;1401:142:88;1619:17;:24;1647:1;1619:29;1615:77;;-1:-1:-1;1679:1:88;;1188:1693;-1:-1:-1;1188:1693:88:o;1615:77::-;1770:14;1873:15;2180:17;2198:1;2180:20;;;;;;;;:::i;:::-;;;;;2169:1;2180:20;;;;;2169:32;;;;-1:-1:-1;2284:568:88;2308:17;:24;2304:1;:28;2284:568;;;2480:17;2498:1;2480:20;;;;;;;;:::i;:::-;;;;;2469:1;2480:20;;;;;2469:32;;-1:-1:-1;2665:16:88;;;2657:100;;;;-1:-1:-1;;;2657:100:88;;50926:2:123;2657:100:88;;;50908:21:123;50965:2;50945:18;;;50938:30;51004:34;50984:18;;;50977:62;51075:34;51055:18;;;51048:62;-1:-1:-1;;;51126:19:123;;;51119:38;51174:19;;2657:100:88;50724:475:123;2657:100:88;2824:16;;;;2334:3;;2284:568;;;-1:-1:-1;2868:6:88;;1188:1693;-1:-1:-1;;;1188:1693:88:o;12055:874:87:-;12146:14;12172:12;12194:24;;:::i;:::-;12228:20;;:::i;:::-;12269:4;12258:15;;;12341:8;;;:15;;;12425:8;;;:15;;;12509:8;;;:16;;;12535:8;;;:20;;;12565:8;;;:19;;;12673:6;12667:4;12258:15;12571:1;12650:4;12643:5;12639:16;12628:58;12617:69;-1:-1:-1;12617:69:87;;12756:75;12783:48;12808:9;12756:75;;12858:7;12850:46;;;;-1:-1:-1;;;12850:46:87;;51406:2:123;12850:46:87;;;51388:21:123;51445:2;51425:18;;;51418:30;51484:28;51464:18;;;51457:56;51530:18;;12850:46:87;51204:350:123;12850:46:87;-1:-1:-1;12913:9:87;;;-1:-1:-1;;;;;12055:874:87:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:349:123:-;216:2;198:21;;;255:2;235:18;;;228:30;294:27;289:2;274:18;;267:55;354:2;339:18;;14:349::o;368:127::-;429:10;424:3;420:20;417:1;410:31;460:4;457:1;450:15;484:4;481:1;474:15;500:257;572:4;566:11;;;604:17;;-1:-1:-1;;;;;636:34:123;;672:22;;;633:62;630:88;;;698:18;;:::i;:::-;734:4;727:24;500:257;:::o;762:255::-;834:2;828:9;876:6;864:19;;-1:-1:-1;;;;;898:34:123;;934:22;;;895:62;892:88;;;960:18;;:::i;1022:275::-;1093:2;1087:9;1158:2;1139:13;;-1:-1:-1;;1135:27:123;1123:40;;-1:-1:-1;;;;;1178:34:123;;1214:22;;;1175:62;1172:88;;;1240:18;;:::i;:::-;1276:2;1269:22;1022:275;;-1:-1:-1;1022:275:123:o;1302:449::-;1366:5;1398:1;-1:-1:-1;;;;;1414:6:123;1411:30;1408:56;;;1444:18;;:::i;:::-;-1:-1:-1;1510:2:123;1489:15;;-1:-1:-1;;1485:29:123;1516:4;1481:40;1539:21;1481:40;1539:21;:::i;:::-;1530:30;;;1583:6;1576:5;1569:21;1623:3;1614:6;1609:3;1605:16;1602:25;1599:45;;;1640:1;1637;1630:12;1599:45;1689:6;1684:3;1677:4;1670:5;1666:16;1653:43;1743:1;1736:4;1727:6;1720:5;1716:18;1712:29;1705:40;1302:449;;;;;:::o;1756:220::-;1798:5;1851:3;1844:4;1836:6;1832:17;1828:27;1818:55;;1869:1;1866;1859:12;1818:55;1891:79;1966:3;1957:6;1944:20;1937:4;1929:6;1925:17;1891:79;:::i;:::-;1882:88;1756:220;-1:-1:-1;;;1756:220:123:o;1981:131::-;-1:-1:-1;;;;;2056:31:123;;2046:42;;2036:70;;2102:1;2099;2092:12;2117:1254;2248:6;2256;2264;2272;2280;2288;2296;2304;2357:3;2345:9;2336:7;2332:23;2328:33;2325:53;;;2374:1;2371;2364:12;2325:53;2419:23;;;-1:-1:-1;2539:2:123;2524:18;;2511:32;;-1:-1:-1;2642:2:123;2627:18;;2614:32;;-1:-1:-1;2724:2:123;2709:18;;2696:32;-1:-1:-1;;;;;;2759:45:123;;2747:58;;2737:86;;2819:1;2816;2809:12;2737:86;2842:7;-1:-1:-1;2922:3:123;2907:19;;2894:33;;-1:-1:-1;3004:3:123;2989:19;;2976:33;-1:-1:-1;;;;;3021:30:123;;3018:50;;;3064:1;3061;3054:12;3018:50;3087:49;3128:7;3119:6;3108:9;3104:22;3087:49;:::i;:::-;3077:59;-1:-1:-1;;3209:3:123;3194:19;;3181:33;;-1:-1:-1;3292:3:123;3277:19;;3264:33;3306;3264;3306;:::i;:::-;3358:7;3348:17;;;2117:1254;;;;;;;;;;;:::o;3568:271::-;3651:6;3704:2;3692:9;3683:7;3679:23;3675:32;3672:52;;;3720:1;3717;3710:12;3672:52;3759:9;3746:23;3778:31;3803:5;3778:31;:::i;3844:226::-;3903:6;3956:2;3944:9;3935:7;3931:23;3927:32;3924:52;;;3972:1;3969;3962:12;3924:52;-1:-1:-1;4017:23:123;;3844:226;-1:-1:-1;3844:226:123:o;4075:114::-;4159:4;4152:5;4148:16;4141:5;4138:27;4128:55;;4179:1;4176;4169:12;4194:243;4251:6;4304:2;4292:9;4283:7;4279:23;4275:32;4272:52;;;4320:1;4317;4310:12;4272:52;4359:9;4346:23;4378:29;4401:5;4378:29;:::i;4442:386::-;4496:5;4544:4;4532:9;4527:3;4523:19;4519:30;4516:50;;;4562:1;4559;4552:12;4516:50;4584:22;;:::i;:::-;4651:23;;4683:22;;4778:2;4763:18;;;4750:32;4798:14;;;4791:31;;;;-1:-1:-1;4575:31:123;4442:386;-1:-1:-1;4442:386:123:o;4833:542::-;4883:5;4936:3;4929:4;4921:6;4917:17;4913:27;4903:55;;4954:1;4951;4944:12;4903:55;4978:22;;:::i;:::-;5024:3;5062:2;5054:6;5050:15;5088:3;5080:6;5077:15;5074:35;;;5105:1;5102;5095:12;5074:35;5129:6;5144:200;5160:6;5155:3;5152:15;5144:200;;;5252:17;;5282:18;;5329:4;5320:14;;;;5177;5144:200;;;-1:-1:-1;5362:7:123;;4833:542;-1:-1:-1;;;;;4833:542:123:o;5380:320::-;5434:5;5482:4;5470:9;5465:3;5461:19;5457:30;5454:50;;;5500:1;5497;5490:12;5454:50;5522:22;;:::i;:::-;5513:31;;5567:40;5603:3;5592:9;5567:40;:::i;:::-;5560:5;5553:55;5642:51;5689:3;5682:4;5671:9;5667:20;5642:51;:::i;:::-;5635:4;5628:5;5624:16;5617:77;5380:320;;;;:::o;5705:576::-;5869:6;5877;5885;5893;5946:3;5934:9;5925:7;5921:23;5917:33;5914:53;;;5963:1;5960;5953:12;5914:53;6008:23;;;-1:-1:-1;6074:54:123;6120:7;6115:2;6100:18;;6074:54;:::i;:::-;6064:64;;6147:54;6193:7;6188:2;6177:9;6173:18;6147:54;:::i;:::-;6137:64;;6220:55;6267:7;6261:3;6250:9;6246:19;6220:55;:::i;:::-;6210:65;;5705:576;;;;;;;:::o;6811:637::-;7001:2;7013:21;;;7083:13;;6986:18;;;7105:22;;;6953:4;;7184:15;;;7158:2;7143:18;;;6953:4;7227:195;7241:6;7238:1;7235:13;7227:195;;;7306:13;;-1:-1:-1;;;;;7302:39:123;7290:52;;7371:2;7397:15;;;;7362:12;;;;7338:1;7256:9;7227:195;;7453:118;7539:5;7532:13;7525:21;7518:5;7515:32;7505:60;;7561:1;7558;7551:12;7576:241;7632:6;7685:2;7673:9;7664:7;7660:23;7656:32;7653:52;;;7701:1;7698;7691:12;7653:52;7740:9;7727:23;7759:28;7781:5;7759:28;:::i;8030:163::-;8097:20;;8157:10;8146:22;;8136:33;;8126:61;;8183:1;8180;8173:12;8198:182;8257:4;-1:-1:-1;;;;;8282:6:123;8279:30;8276:56;;;8312:18;;:::i;:::-;-1:-1:-1;8357:1:123;8353:14;8369:4;8349:25;;8198:182::o;8385:672::-;8438:5;8491:3;8484:4;8476:6;8472:17;8468:27;8458:55;;8509:1;8506;8499:12;8458:55;8549:6;8536:20;8576:63;8592:46;8631:6;8592:46;:::i;:::-;8576:63;:::i;:::-;8663:3;8687:6;8682:3;8675:19;8719:4;8714:3;8710:14;8703:21;;8780:4;8770:6;8767:1;8763:14;8755:6;8751:27;8747:38;8733:52;;8808:3;8800:6;8797:15;8794:35;;;8825:1;8822;8815:12;8794:35;8861:4;8853:6;8849:17;8875:151;8891:6;8886:3;8883:15;8875:151;;;8959:22;8977:3;8959:22;:::i;:::-;8947:35;;9011:4;9002:14;;;;8908;8875:151;;;-1:-1:-1;9044:7:123;8385:672;-1:-1:-1;;;;;8385:672:123:o;9062:693::-;9123:5;9176:3;9169:4;9161:6;9157:17;9153:27;9143:55;;9194:1;9191;9184:12;9143:55;9234:6;9221:20;9261:63;9277:46;9316:6;9277:46;:::i;9261:63::-;9348:3;9372:6;9367:3;9360:19;9404:4;9399:3;9395:14;9388:21;;9465:4;9455:6;9452:1;9448:14;9440:6;9436:27;9432:38;9418:52;;9493:3;9485:6;9482:15;9479:35;;;9510:1;9507;9500:12;9479:35;9546:4;9538:6;9534:17;9560:164;9576:6;9571:3;9568:15;9560:164;;;9644:35;9675:3;9670;9644:35;:::i;:::-;9632:48;;9709:4;9700:14;;;;9602:4;9593:14;9560:164;;9760:846;9823:5;9876:3;9869:4;9861:6;9857:17;9853:27;9843:55;;9894:1;9891;9884:12;9843:55;9934:6;9921:20;9961:63;9977:46;10016:6;9977:46;:::i;9961:63::-;10048:3;10072:6;10067:3;10060:19;10104:4;10099:3;10095:14;10088:21;;10165:4;10155:6;10152:1;10148:14;10140:6;10136:27;10132:38;10118:52;;10193:3;10185:6;10182:15;10179:35;;;10210:1;10207;10200:12;10179:35;10246:4;10238:6;10234:17;10260:315;10276:6;10271:3;10268:15;10260:315;;;10364:3;10351:17;-1:-1:-1;;;;;10387:11:123;10384:35;10381:55;;;10432:1;10429;10422:12;10381:55;10461:69;10526:3;10519:4;10505:11;10497:6;10493:24;10489:35;10461:69;:::i;:::-;10449:82;;-1:-1:-1;10560:4:123;10551:14;;;;10293;10260:315;;10611:1625;10685:5;10733:6;10721:9;10716:3;10712:19;10708:32;10705:52;;;10753:1;10750;10743:12;10705:52;10775:22;;:::i;:::-;10766:31;;10833:9;10820:23;-1:-1:-1;;;;;10858:6:123;10855:30;10852:50;;;10898:1;10895;10888:12;10852:50;10925:56;10977:3;10968:6;10957:9;10953:22;10925:56;:::i;:::-;10918:5;10911:71;;11035:2;11024:9;11020:18;11007:32;-1:-1:-1;;;;;11054:8:123;11051:32;11048:52;;;11096:1;11093;11086:12;11048:52;11132:66;11194:3;11183:8;11172:9;11168:24;11132:66;:::i;:::-;11127:2;11120:5;11116:14;11109:90;;11252:2;11241:9;11237:18;11224:32;-1:-1:-1;;;;;11271:8:123;11268:32;11265:52;;;11313:1;11310;11303:12;11265:52;11349:66;11411:3;11400:8;11389:9;11385:24;11349:66;:::i;:::-;11344:2;11337:5;11333:14;11326:90;;11448:50;11494:3;11489:2;11478:9;11474:18;11448:50;:::i;:::-;11443:2;11436:5;11432:14;11425:74;11533:51;11580:3;11574;11563:9;11559:19;11533:51;:::i;:::-;11526:4;11519:5;11515:16;11508:77;11638:3;11627:9;11623:19;11610:33;-1:-1:-1;;;;;11658:8:123;11655:32;11652:52;;;11700:1;11697;11690:12;11652:52;11738:58;11792:3;11781:8;11770:9;11766:24;11738:58;:::i;:::-;11731:4;11724:5;11720:16;11713:84;;11850:3;11839:9;11835:19;11822:33;-1:-1:-1;;;;;11870:8:123;11867:32;11864:52;;;11912:1;11909;11902:12;11864:52;11950:58;12004:3;11993:8;11982:9;11978:24;11950:58;:::i;:::-;11943:4;11936:5;11932:16;11925:84;;12062:3;12051:9;12047:19;12034:33;-1:-1:-1;;;;;12082:8:123;12079:32;12076:52;;;12124:1;12121;12114:12;12076:52;12161:68;12225:3;12214:8;12203:9;12199:24;12161:68;:::i;:::-;12155:3;12148:5;12144:15;12137:93;;10611:1625;;;;:::o;12241:572::-;12363:6;12371;12379;12432:2;12420:9;12411:7;12407:23;12403:32;12400:52;;;12448:1;12445;12438:12;12400:52;12493:23;;;-1:-1:-1;12559:37:123;12592:2;12577:18;;12559:37;:::i;:::-;12549:47;;12647:2;12636:9;12632:18;12619:32;-1:-1:-1;;;;;12666:6:123;12663:30;12660:50;;;12706:1;12703;12696:12;12660:50;12729:78;12799:7;12790:6;12779:9;12775:22;12729:78;:::i;:::-;12719:88;;;12241:572;;;;;:::o;12818:452::-;12870:3;12908:5;12902:12;12935:6;12930:3;12923:19;12967:4;12962:3;12958:14;12951:21;;13006:4;12999:5;12995:16;13029:1;13039:206;13053:6;13050:1;13047:13;13039:206;;;13118:13;;-1:-1:-1;;;;;13114:46:123;13102:59;;13190:4;13181:14;;;;13218:17;;;;13075:1;13068:9;13039:206;;;-1:-1:-1;13261:3:123;;12818:452;-1:-1:-1;;;;12818:452:123:o;13275:645::-;13504:2;13493:9;13486:21;13467:4;13542:6;13536:13;13585:2;13580;13569:9;13565:18;13558:30;13611:62;13668:3;13657:9;13653:19;13639:12;13611:62;:::i;:::-;13597:76;;13722:4;13714:6;13710:17;13704:24;13796:2;13792:7;13780:9;13772:6;13768:22;13764:36;13759:2;13748:9;13744:18;13737:64;13818:51;13862:6;13846:14;13818:51;:::i;:::-;13810:59;;;;13907:6;13900:4;13889:9;13885:20;13878:36;13275:645;;;;;:::o;15168:347::-;15219:8;15229:6;15283:3;15276:4;15268:6;15264:17;15260:27;15250:55;;15301:1;15298;15291:12;15250:55;-1:-1:-1;15324:20:123;;-1:-1:-1;;;;;15356:30:123;;15353:50;;;15399:1;15396;15389:12;15353:50;15436:4;15428:6;15424:17;15412:29;;15488:3;15481:4;15472:6;15464;15460:19;15456:30;15453:39;15450:59;;;15505:1;15502;15495:12;15450:59;15168:347;;;;;:::o;15520:523::-;15599:6;15607;15615;15668:2;15656:9;15647:7;15643:23;15639:32;15636:52;;;15684:1;15681;15674:12;15636:52;15724:9;15711:23;-1:-1:-1;;;;;15749:6:123;15746:30;15743:50;;;15789:1;15786;15779:12;15743:50;15828:58;15878:7;15869:6;15858:9;15854:22;15828:58;:::i;:::-;15905:8;;15802:84;;-1:-1:-1;16009:2:123;15994:18;;;;15981:32;;15520:523;-1:-1:-1;;;;15520:523:123:o;16048:1161::-;16160:6;16168;16221:2;16209:9;16200:7;16196:23;16192:32;16189:52;;;16237:1;16234;16227:12;16189:52;16276:9;16263:23;16295:31;16320:5;16295:31;:::i;:::-;16345:5;-1:-1:-1;16401:2:123;16386:18;;16373:32;-1:-1:-1;;;;;16417:30:123;;16414:50;;;16460:1;16457;16450:12;16414:50;16483:22;;16539:4;16521:16;;;16517:27;16514:47;;;16557:1;16554;16547:12;16514:47;16610:2;16604:9;16652:4;16640:17;;-1:-1:-1;;;;;16672:34:123;;16708:22;;;16669:62;16666:88;;;16734:18;;:::i;:::-;16770:2;16763:22;16810:16;;-1:-1:-1;;;;;16838:32:123;;16835:52;;;16883:1;16880;16873:12;16835:52;16911:44;16947:7;16936:8;16932:2;16928:17;16911:44;:::i;:::-;16896:60;;-1:-1:-1;17022:2:123;17014:11;;;17001:25;17042:15;;;17035:32;17133:2;17125:11;;;17112:25;17153:15;;;17146:32;;;;16048:1161;;16903:6;;-1:-1:-1;16048:1161:123;;-1:-1:-1;;16048:1161:123:o;17214:450::-;17283:6;17336:2;17324:9;17315:7;17311:23;17307:32;17304:52;;;17352:1;17349;17342:12;17304:52;17392:9;17379:23;-1:-1:-1;;;;;17417:6:123;17414:30;17411:50;;;17457:1;17454;17447:12;17411:50;17480:22;;17533:4;17525:13;;17521:27;-1:-1:-1;17511:55:123;;17562:1;17559;17552:12;17511:55;17585:73;17650:7;17645:2;17632:16;17627:2;17623;17619:11;17585:73;:::i;:::-;17575:83;17214:450;-1:-1:-1;;;;17214:450:123:o;17669:641::-;17792:6;17800;17808;17861:2;17849:9;17840:7;17836:23;17832:32;17829:52;;;17877:1;17874;17867:12;17829:52;17922:23;;;-1:-1:-1;18021:2:123;18006:18;;17993:32;18034:33;17993:32;18034:33;:::i;18994:644::-;19083:6;19091;19099;19107;19160:2;19148:9;19139:7;19135:23;19131:32;19128:52;;;19176:1;19173;19166:12;19128:52;19221:23;;;-1:-1:-1;19319:2:123;19304:18;;19291:32;-1:-1:-1;;;;;19335:30:123;;19332:50;;;19378:1;19375;19368:12;19332:50;19417:58;19467:7;19458:6;19447:9;19443:22;19417:58;:::i;:::-;18994:644;;19494:8;;-1:-1:-1;19391:84:123;;19602:2;19587:18;19574:32;;18994:644;-1:-1:-1;;;;18994:644:123:o;19878:816::-;19997:6;20005;20013;20021;20029;20082:3;20070:9;20061:7;20057:23;20053:33;20050:53;;;20099:1;20096;20089:12;20050:53;20138:9;20125:23;20157:31;20182:5;20157:31;:::i;:::-;20207:5;-1:-1:-1;20264:2:123;20249:18;;20236:32;20277:33;20236:32;20277:33;:::i;:::-;20329:7;-1:-1:-1;20388:2:123;20373:18;;20360:32;20401:33;20360:32;20401:33;:::i;:::-;20453:7;-1:-1:-1;20512:2:123;20497:18;;20484:32;20525:33;20484:32;20525:33;:::i;:::-;19878:816;;;;-1:-1:-1;19878:816:123;;20657:3;20642:19;20629:33;;19878:816;-1:-1:-1;;19878:816:123:o;20699:647::-;20822:6;20830;20883:2;20871:9;20862:7;20858:23;20854:32;20851:52;;;20899:1;20896;20889:12;20851:52;20939:9;20926:23;-1:-1:-1;;;;;20964:6:123;20961:30;20958:50;;;21004:1;21001;20994:12;20958:50;21027:22;;21080:4;21072:13;;21068:27;-1:-1:-1;21058:55:123;;21109:1;21106;21099:12;21058:55;21149:2;21136:16;-1:-1:-1;;;;;21167:6:123;21164:30;21161:50;;;21207:1;21204;21197:12;21161:50;21260:7;21255:2;21245:6;21242:1;21238:14;21234:2;21230:23;21226:32;21223:45;21220:65;;;21281:1;21278;21271:12;21220:65;21312:2;21304:11;;;;;21334:6;;-1:-1:-1;20699:647:123;-1:-1:-1;;;20699:647:123:o;21351:127::-;21412:10;21407:3;21403:20;21400:1;21393:31;21443:4;21440:1;21433:15;21467:4;21464:1;21457:15;21483:125;21548:9;;;21569:10;;;21566:36;;;21582:18;;:::i;21613:294::-;21770:19;;;21827:2;21823:15;-1:-1:-1;;;;;;21819:53:123;21814:2;21805:12;;21798:75;21898:2;21889:12;;21613:294::o;22333:251::-;22403:6;22456:2;22444:9;22435:7;22431:23;22427:32;22424:52;;;22472:1;22469;22462:12;22424:52;22504:9;22498:16;22523:31;22548:5;22523:31;:::i;22589:406::-;22791:2;22773:21;;;22830:2;22810:18;;;22803:30;22869:34;22864:2;22849:18;;22842:62;-1:-1:-1;;;22935:2:123;22920:18;;22913:40;22985:3;22970:19;;22589:406::o;23000:245::-;23067:6;23120:2;23108:9;23099:7;23095:23;23091:32;23088:52;;;23136:1;23133;23126:12;23088:52;23168:9;23162:16;23187:28;23209:5;23187:28;:::i;23250:404::-;23452:2;23434:21;;;23491:2;23471:18;;;23464:30;23530:34;23525:2;23510:18;;23503:62;-1:-1:-1;;;23596:2:123;23581:18;;23574:38;23644:3;23629:19;;23250:404::o;24084:127::-;24145:10;24140:3;24136:20;24133:1;24126:31;24176:4;24173:1;24166:15;24200:4;24197:1;24190:15;25061:209;25093:1;25119;25109:132;;25163:10;25158:3;25154:20;25151:1;25144:31;25198:4;25195:1;25188:15;25226:4;25223:1;25216:15;25109:132;-1:-1:-1;25255:9:123;;25061:209::o;25625:128::-;25692:9;;;25713:11;;;25710:37;;;25727:18;;:::i;25758:184::-;25828:6;25881:2;25869:9;25860:7;25856:23;25852:32;25849:52;;;25897:1;25894;25887:12;25849:52;-1:-1:-1;25920:16:123;;25758:184;-1:-1:-1;25758:184:123:o;26129:290::-;26199:6;26252:2;26240:9;26231:7;26227:23;26223:32;26220:52;;;26268:1;26265;26258:12;26220:52;26294:16;;-1:-1:-1;;;;;26339:31:123;;26329:42;;26319:70;;26385:1;26382;26375:12;26424:247;26492:6;26545:2;26533:9;26524:7;26520:23;26516:32;26513:52;;;26561:1;26558;26551:12;26513:52;26593:9;26587:16;26612:29;26635:5;26612:29;:::i;27314:137::-;-1:-1:-1;;;;;27392:5:123;27388:38;27381:5;27378:49;27368:77;;27441:1;27438;27431:12;27456:530;27559:6;27619:2;27607:9;27598:7;27594:23;27590:32;27634:2;27631:22;;;27649:1;27646;27639:12;27631:22;-1:-1:-1;27691:22:123;;:::i;:::-;27743:9;27737:16;27762:33;27787:7;27762:33;:::i;:::-;27804:22;;27871:2;27856:18;;27850:25;27884:32;27850:25;27884:32;:::i;:::-;27943:2;27932:14;;27925:31;27936:5;27456:530;-1:-1:-1;;;27456:530:123:o;27991:135::-;28030:3;28051:17;;;28048:43;;28071:18;;:::i;:::-;-1:-1:-1;28118:1:123;28107:13;;27991:135::o;31714:294::-;31784:6;31837:2;31825:9;31816:7;31812:23;31808:32;31805:52;;;31853:1;31850;31843:12;31805:52;31879:16;;-1:-1:-1;;31924:35:123;;31914:46;;31904:74;;31974:1;31971;31964:12;32559:249;32628:6;32681:2;32669:9;32660:7;32656:23;32652:32;32649:52;;;32697:1;32694;32687:12;32649:52;32729:9;32723:16;32748:30;32772:5;32748:30;:::i;33247:218::-;-1:-1:-1;;;;;33353:34:123;;;33317;;;33313:75;;33400:36;;33397:62;;;33439:18;;:::i;34372:627::-;34620:10;34615:3;34611:20;34602:6;34597:3;34593:16;34589:43;34584:3;34577:56;34559:3;34664:1;34659:3;34655:11;34695:6;34689:13;34760:4;34752:6;34748:17;34783:1;34793:179;34807:6;34804:1;34801:13;34793:179;;;34870:13;;34856:28;;34917:4;34906:16;;;;34945:17;;;;34829:1;34822:9;34793:179;;;-1:-1:-1;34988:5:123;;34372:627;-1:-1:-1;;;;;;34372:627:123:o;35004:271::-;35187:6;35179;35174:3;35161:33;35143:3;35213:16;;35238:13;;;35213:16;35004:271;-1:-1:-1;35004:271:123:o;35280:486::-;35482:2;35464:21;;;35521:2;35501:18;;;35494:30;35560:34;35555:2;35540:18;;35533:62;35631:34;35626:2;35611:18;;35604:62;-1:-1:-1;;;35697:3:123;35682:19;;35675:49;35756:3;35741:19;;35280:486::o;35771:399::-;35812:3;35850:5;35844:12;35877:6;35872:3;35865:19;35902:1;35912:139;35926:6;35923:1;35920:13;35912:139;;;36034:4;36019:13;;;36015:24;;36009:31;35989:11;;;35985:22;;35978:63;35941:12;35912:139;;;35916:3;36096:1;36089:4;36080:6;36075:3;36071:16;36067:27;36060:38;36159:4;36152:2;36148:7;36143:2;36135:6;36131:15;36127:29;36122:3;36118:39;36114:50;36107:57;;;35771:399;;;;:::o;36175:624::-;36449:1;36445;36440:3;36436:11;36432:19;36424:6;36420:32;36409:9;36402:51;36489:2;36484;36473:9;36469:18;36462:30;36383:4;36527:6;36521:13;36570:4;36565:2;36554:9;36550:18;36543:32;36598:51;36644:3;36633:9;36629:19;36615:12;36598:51;:::i;:::-;36584:65;;36705:2;36697:6;36693:15;36687:22;36680:4;36669:9;36665:20;36658:52;36765:2;36757:6;36753:15;36747:22;36741:3;36730:9;36726:19;36719:51;36787:6;36779:14;;;36175:624;;;;;:::o;36804:219::-;36953:2;36942:9;36935:21;36916:4;36973:44;37013:2;37002:9;36998:18;36990:6;36973:44;:::i;37333:292::-;-1:-1:-1;;;;;37417:34:123;;;37453;;;37413:75;37508:44;;;;37571:24;;;37561:58;;37599:18;;:::i;:::-;37561:58;37333:292;;;;:::o;37630:168::-;37703:9;;;37734;;37751:15;;;37745:22;;37731:37;37721:71;;37772:18;;:::i;38088:649::-;-1:-1:-1;;;;;38329:32:123;;38311:51;;38410:10;38398:23;;38393:2;38378:18;;38371:51;38458:3;38453:2;38438:18;;38431:31;;;38478:19;;38471:35;;;38499:6;38549;38349:3;38528:19;;38515:49;38614:1;38608:3;38599:6;38588:9;38584:22;38580:32;38573:43;38292:4;38684:3;38677:2;38673:7;38668:2;38660:6;38656:15;38652:29;38641:9;38637:45;38633:55;38625:63;;38724:6;38719:2;38708:9;38704:18;38697:34;38088:649;;;;;;;;:::o;41705:335::-;41808:4;41866:11;41853:25;41960:3;41956:8;41945;41929:14;41925:29;41921:44;41901:18;41897:69;41887:97;;41980:1;41977;41970:12;41887:97;42001:33;;;;;41705:335;-1:-1:-1;;41705:335:123:o;42045:142::-;42121:20;;42150:31;42121:20;42150:31;:::i;43115:716::-;43245:6;43240:3;43233:19;43277:4;43272:3;43268:14;43261:21;;43215:3;43305:5;43328:1;43338:468;43352:6;43349:1;43346:13;43338:468;;;43429:6;43416:20;43449:33;43474:7;43449:33;:::i;:::-;-1:-1:-1;;;;;43507:33:123;43495:46;;43594:4;43582:17;;43569:31;43613:32;43569:31;43613:32;:::i;:::-;-1:-1:-1;;;;;43681:40:123;43674:4;43665:14;;43658:64;43751:4;43742:14;;;;43779:17;;;;;43374:1;43367:9;43338:468;;43836:2188;44108:2;44120:21;;;44093:18;;44176:22;;;-1:-1:-1;44229:2:123;44278:1;44274:14;;;44259:30;;44255:39;;;44214:18;;44317:6;-1:-1:-1;;;44369:14:123;44365:27;;;44361:42;44412:1583;44426:6;44423:1;44420:13;44412:1583;;;44491:22;;;-1:-1:-1;;44487:36:123;44475:49;;44563:20;;44606:27;;;44596:55;;44647:1;44644;44637:12;44596:55;44677:31;;44749:19;;44825:14;44821:26;;;-1:-1:-1;;44817:40:123;44791:67;;44781:95;;44872:1;44869;44862:12;44781:95;44904:32;;45025:2;45012:16;;;44963:21;-1:-1:-1;;;;;45044:30:123;;45041:50;;;45087:1;45084;45077:12;45041:50;45147:6;45144:1;45140:14;45124;45120:35;45111:7;45107:49;45104:69;;;45169:1;45166;45159:12;45104:69;45201:4;45193:6;45186:20;45233:103;45330:4;45322:6;45318:17;45310:6;45301:7;45233:103;:::i;:::-;45219:117;;;45369:42;45407:2;45400:5;45396:14;45369:42;:::i;:::-;-1:-1:-1;;;;;14190:31:123;45486:2;45474:15;;14178:44;45567:2;45556:14;;;45543:28;45591:15;;;45584:32;45651:35;45680:4;45669:16;;45651:35;:::i;:::-;18622:10;18611:22;45745:4;45733:17;;18599:35;45786;45815:4;45804:16;;45786:35;:::i;:::-;18622:10;18611:22;;45880:4;45868:17;;18599:35;45764:57;-1:-1:-1;45909:6:123;-1:-1:-1;;45950:2:123;45973:12;;;;45938:15;;;;;44448:1;44441:9;;;;;44412:1583;;;-1:-1:-1;46012:6:123;;43836:2188;-1:-1:-1;;;;;;;43836:2188:123:o;48341:180::-;48379:3;48423:6;48416:5;48412:18;48454:6;48445:7;48442:19;48439:45;;48464:18;;:::i;:::-;48513:1;48500:15;;48341:180;-1:-1:-1;;48341:180:123:o","linkReferences":{},"immutableReferences":{"19039":[{"start":1476,"length":32},{"start":5231,"length":32},{"start":6447,"length":32},{"start":6870,"length":32},{"start":7453,"length":32}],"19042":[{"start":1373,"length":32},{"start":8297,"length":32},{"start":8793,"length":32}],"19045":[{"start":1321,"length":32},{"start":7804,"length":32}],"19048":[{"start":2008,"length":32},{"start":7273,"length":32}],"20260":[{"start":1422,"length":32},{"start":9837,"length":32},{"start":10049,"length":32},{"start":10176,"length":32}],"20263":[{"start":14168,"length":32},{"start":14356,"length":32},{"start":14583,"length":32}],"20266":[{"start":4046,"length":32},{"start":4189,"length":32},{"start":4317,"length":32},{"start":9753,"length":32},{"start":9957,"length":32},{"start":11709,"length":32},{"start":12118,"length":32}],"20269":[{"start":4519,"length":32},{"start":4856,"length":32},{"start":5007,"length":32},{"start":11906,"length":32},{"start":12283,"length":32},{"start":12442,"length":32}]}},"methodIdentifiers":{"alignedAggregator()":"4a5bf632","avsDirectory()":"6b3aa72e","balanceOf(address)":"70a08231","batchersBalances(address)":"f474b520","batchesState(bytes32)":"b099627e","blsApkRegistry()":"5df45946","checkPublicInput(bytes,bytes32)":"95c6d604","checkSignatures(bytes32,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":"4ae07c37","createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":"fce36c7d","createNewTask(bytes32,string,uint256)":"d66eaabd","delegation()":"df5cf723","depositToBatcher(address)":"4223d551","deregisterOperatorFromAVS(address)":"a364f4da","disableVerifier(uint8)":"fd4c3b7c","disabledVerifiers()":"ea5ca34b","enableVerifier(uint8)":"18daeeaf","getOperatorRestakedStrategies(address)":"33cfb7b7","getRestakeableStrategies()":"e481af9d","initialize(address,address,address,address,uint256)":"f7013ef6","isVerifierDisabled(uint8)":"137122b5","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","registerOperatorToAVS(address,(bytes,bytes32,uint256))":"9926ee7d","registryCoordinator()":"6d14a987","renounceOwnership()":"715018a6","respondToTaskV2(bytes32,address,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":"ab21739a","rewardsInitiator()":"fc299dee","setAggregator(address)":"f9120af6","setDisabledVerifiers(uint256)":"b753645e","setPauserRegistry(address)":"10d67a2f","setRewardsInitiator(address)":"3bc28c8c","setStaleStakesForbidden(bool)":"416c7e5e","stakeRegistry()":"68304835","staleStakesForbidden()":"b98d0908","transferOwnership(address)":"f2fde38b","trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))":"171f1d5b","unpause(uint256)":"fabc1cbc","updateAVSMetadataURI(string)":"a98fb355","verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256,address)":"06045a91","withdraw(uint256)":"2e1a7d4d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAVSDirectory\",\"name\":\"__avsDirectory\",\"type\":\"address\"},{\"internalType\":\"contract IRewardsCoordinator\",\"name\":\"__rewardsCoordinator\",\"type\":\"address\"},{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"__registryCoordinator\",\"type\":\"address\"},{\"internalType\":\"contract IStakeRegistry\",\"name\":\"__stakeRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"batchIdentifierHash\",\"type\":\"bytes32\"}],\"name\":\"BatchAlreadyResponded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"batchIdentifierHash\",\"type\":\"bytes32\"}],\"name\":\"BatchAlreadySubmitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"batchIdentifierHash\",\"type\":\"bytes32\"}],\"name\":\"BatchDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"batcher\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"param\",\"type\":\"string\"}],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InvalidDepositAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"signedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredStake\",\"type\":\"uint256\"}],\"name\":\"InvalidQuorumThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"alignedAggregator\",\"type\":\"address\"}],\"name\":\"SenderIsNotAggregator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"BatchVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"batcher\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"BatcherBalanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"taskCreatedBlock\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"batchDataPointer\",\"type\":\"string\"}],\"name\":\"NewBatchV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"taskCreatedBlock\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"batchDataPointer\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"respondToTaskFeeLimit\",\"type\":\"uint256\"}],\"name\":\"NewBatchV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevRewardsInitiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRewardsInitiator\",\"type\":\"address\"}],\"name\":\"RewardsInitiatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"StaleStakesForbiddenUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"verifierIdx\",\"type\":\"uint8\"}],\"name\":\"VerifierDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"verifierIdx\",\"type\":\"uint8\"}],\"name\":\"VerifierEnabled\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"alignedAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"avsDirectory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"batchersBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"batchesState\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"taskCreatedBlock\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"responded\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"respondToTaskFeeLimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blsApkRegistry\",\"outputs\":[{\"internalType\":\"contract IBLSApkRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicInput\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"checkPublicInput\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"referenceBlockNumber\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"struct IBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"checkSignatures\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96[]\",\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\"}],\"internalType\":\"struct IBLSSignatureChecker.QuorumStakeTotals\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IStrategy\",\"name\":\"strategy\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"multiplier\",\"type\":\"uint96\"}],\"internalType\":\"struct IRewardsCoordinator.StrategyAndMultiplier[]\",\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"startTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"}],\"internalType\":\"struct IRewardsCoordinator.RewardsSubmission[]\",\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\"}],\"name\":\"createAVSRewardsSubmission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"batchDataPointer\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"respondToTaskFeeLimit\",\"type\":\"uint256\"}],\"name\":\"createNewTask\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"contract IDelegationManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"depositToBatcher\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperatorFromAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"verifierIdx\",\"type\":\"uint8\"}],\"name\":\"disableVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabledVerifiers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"verifierIdx\",\"type\":\"uint8\"}],\"name\":\"enableVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRestakedStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRestakeableStrategies\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rewardsInitiator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_alignedAggregator\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_initialPausedStatus\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"verifierIdx\",\"type\":\"uint8\"}],\"name\":\"isVerifierDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureUtils.SignatureWithSaltAndExpiry\",\"name\":\"operatorSignature\",\"type\":\"tuple\"}],\"name\":\"registerOperatorToAVS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registryCoordinator\",\"outputs\":[{\"internalType\":\"contract IRegistryCoordinator\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32[]\",\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point[]\",\"name\":\"quorumApks\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[]\",\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\"},{\"internalType\":\"uint32[][]\",\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\"}],\"internalType\":\"struct IBLSSignatureChecker.NonSignerStakesAndSignature\",\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\"}],\"name\":\"respondToTaskV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsInitiator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_alignedAggregator\",\"type\":\"address\"}],\"name\":\"setAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"}],\"name\":\"setDisabledVerifiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRewardsInitiator\",\"type\":\"address\"}],\"name\":\"setRewardsInitiator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setStaleStakesForbidden\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeRegistry\",\"outputs\":[{\"internalType\":\"contract IStakeRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staleStakesForbidden\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"apk\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"X\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"Y\",\"type\":\"uint256[2]\"}],\"internalType\":\"struct BN254.G2Point\",\"name\":\"apkG2\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"X\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Y\",\"type\":\"uint256\"}],\"internalType\":\"struct BN254.G1Point\",\"name\":\"sigma\",\"type\":\"tuple\"}],\"name\":\"trySignatureAndApkVerification\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"pairingSuccessful\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"siganatureIsValid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_metadataURI\",\"type\":\"string\"}],\"name\":\"updateAVSMetadataURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"pubInputCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provingSystemAuxDataCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"verifyBatchInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"checkSignatures(bytes32,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))\":{\"details\":\"Before signature verification, the function verifies operator stake information. This includes ensuring that the provided `referenceBlockNumber` is correct, i.e., ensure that the stake returned from the specified block number is recent enough and that the stake is either the most recent update for the total stake (of the operator) or latest before the referenceBlockNumber.NOTE: Be careful to ensure `msgHash` is collision-resistant! This method does not hash `msgHash` in any way, so if an attacker is able to pass in an arbitrary value, they may be able to tamper with signature verification.\",\"params\":{\"msgHash\":\"is the hash being signed\",\"params\":\"is the struct containing information on nonsigners, stakes, quorum apks, and the aggregate signature\",\"referenceBlockNumber\":\"is the block number at which the stake information is being verified\"},\"returns\":{\"_0\":\"quorumStakeTotals is the struct containing the total and signed stake for each quorum\",\"_1\":\"signatoryRecordHash is the hash of the signatory record, which is used for fraud proofs\"}},\"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])\":{\"details\":\"Only callabe by the permissioned rewardsInitiator addressThe duration of the `rewardsSubmission` cannot exceed `MAX_REWARDS_DURATION`The tokens are sent to the `RewardsCoordinator` contractStrategies must be in ascending order of addresses to check for duplicatesThis function will revert if the `rewardsSubmission` is malformed, e.g. if the `strategies` and `weights` arrays are of non-equal lengths\",\"params\":{\"rewardsSubmissions\":\"The rewards submissions being created\"}},\"deregisterOperatorFromAVS(address)\":{\"params\":{\"operator\":\"The address of the operator to deregister.\"}},\"getOperatorRestakedStrategies(address)\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately\",\"params\":{\"operator\":\"The address of the operator to get restaked strategies for\"}},\"getRestakeableStrategies()\":{\"details\":\"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately\"},\"initialize(address,address,address,address,uint256)\":{\"params\":{\"_alignedAggregator\":\"The address of the aggregator.\",\"_initialOwner\":\"The initial owner of the contract.\",\"_initialPausedStatus\":\"pause status after calling initialize\",\"_pauserRegistry\":\"a registry of addresses that can pause the contract\",\"_rewardsInitiator\":\"The address which is allowed to create AVS rewards submissions.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"params\":{\"operator\":\"The address of the operator to register.\",\"operatorSignature\":\"The signature, salt, and expiry of the operator's signature.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setRewardsInitiator(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"newRewardsInitiator\":\"The new rewards initiator address\"}},\"setStaleStakesForbidden(bool)\":{\"params\":{\"value\":\"to toggle staleStakesForbidden\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))\":{\"params\":{\"apk\":\"is the claimed G1 public key\",\"apkG2\":\"is provided G2 public key\",\"msgHash\":\"is the hash being signed\",\"sigma\":\"is the G1 point signature\"},\"returns\":{\"pairingSuccessful\":\"is true if the pairing precompile call was successful\",\"siganatureIsValid\":\"is true if the signature is valid\"}},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"updateAVSMetadataURI(string)\":{\"details\":\"only callable by the owner\",\"params\":{\"_metadataURI\":\"is the metadata URI for the AVS\"}}},\"title\":\"Primary entrypoint for procuring services from Aligned.\",\"version\":1},\"userdoc\":{\"events\":{\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"StaleStakesForbiddenUpdate(bool)\":{\"notice\":\"Emitted when `staleStakesForbiddenUpdate` is set\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"avsDirectory()\":{\"notice\":\"Returns the EigenLayer AVSDirectory contract.\"},\"checkSignatures(bytes32,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))\":{\"notice\":\"This function is called by disperser when it has aggregated all the signatures of the operators that are part of the quorum for a particular taskNumber and is asserting them into onchain. The function checks that the claim for aggregated signatures are valid. The thesis of this procedure entails: - getting the aggregated pubkey of all registered nodes at the time of pre-commit by the disperser (represented by apk in the parameters), - subtracting the pubkeys of all the signers not in the quorum (nonSignerPubkeys) and storing the output in apk to get aggregated pubkey of all operators that are part of quorum. - use this aggregated pubkey to verify the aggregated signature under BLS scheme.\"},\"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])\":{\"notice\":\"Creates a new rewards submission to the EigenLayer RewardsCoordinator contract, to be split amongst the set of stakers delegated to operators who are registered to this `avs`\"},\"deregisterOperatorFromAVS(address)\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS\"},\"getOperatorRestakedStrategies(address)\":{\"notice\":\"Returns the list of strategies that the operator has potentially restaked on the AVS\"},\"getRestakeableStrategies()\":{\"notice\":\"Returns the list of strategies that the AVS supports for restaking\"},\"initialize(address,address,address,address,uint256)\":{\"notice\":\"Initializes the contract with the initial owner.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"registerOperatorToAVS(address,(bytes,bytes32,uint256))\":{\"notice\":\"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS\"},\"rewardsInitiator()\":{\"notice\":\"The address of the entity that can initiate rewards\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"setRewardsInitiator(address)\":{\"notice\":\"Sets the rewards initiator address\"},\"setStaleStakesForbidden(bool)\":{\"notice\":\"/** RegistryCoordinator owner can either enforce or not that operator stakes are staler than the delegation.minWithdrawalDelayBlocks() window.\"},\"staleStakesForbidden()\":{\"notice\":\"If true, check the staleness of the operator stakes and that its within the delegation withdrawalDelayBlocks window.\"},\"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))\":{\"notice\":\"trySignatureAndApkVerification verifies a BLS aggregate signature and the veracity of a calculated G1 Public key\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"updateAVSMetadataURI(string)\":{\"notice\":\"Updates the metadata URI for the AVS\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/AlignedLayerServiceManager.sol\":\"AlignedLayerServiceManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/\",\":@sp1-contracts/=lib/sp1-contracts/contracts/src/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\",\":sp1-contracts/=lib/sp1-contracts/contracts/\"]},\"sources\":{\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol\":{\"keccak256\":\"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa\",\"dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914\",\"dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc\",\"dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8\",\"dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol\":{\"keccak256\":\"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71\",\"dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c\",\"dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232\",\"dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef\",\"dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7\",\"dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f\",\"dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f\",\"dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a\",\"dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-middleware/src/BLSSignatureChecker.sol\":{\"keccak256\":\"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241\",\"dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2\"]},\"lib/eigenlayer-middleware/src/ServiceManagerBase.sol\":{\"keccak256\":\"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221\",\"dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg\"]},\"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol\":{\"keccak256\":\"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e\",\"dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR\"]},\"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol\":{\"keccak256\":\"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354\",\"dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp\"]},\"lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol\":{\"keccak256\":\"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51\",\"dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj\"]},\"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol\":{\"keccak256\":\"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d\",\"dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol\":{\"keccak256\":\"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25\",\"dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY\"]},\"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol\":{\"keccak256\":\"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d\",\"dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol\":{\"keccak256\":\"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f\",\"dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY\"]},\"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol\":{\"keccak256\":\"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8\",\"dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX\"]},\"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol\":{\"keccak256\":\"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97\",\"dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B\"]},\"lib/eigenlayer-middleware/src/libraries/BN254.sol\":{\"keccak256\":\"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae\",\"dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki\"]},\"lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol\":{\"keccak256\":\"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04\",\"dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g\"]},\"src/core/AlignedLayerServiceManager.sol\":{\"keccak256\":\"0x5232f4f3b98f4c17b0172080890c310829155d929be477b184cd3b20cfcacede\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://acd39817a907dfd467a2375a1ca1f25af1b60dd465a62a92e0b6dbbc99339837\",\"dweb:/ipfs/QmVBAjmRsrEsCkxSpApyBQQ1qJUWVVDizhY6kk3pbpvXcK\"]},\"src/core/AlignedLayerServiceManagerStorage.sol\":{\"keccak256\":\"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce\",\"urls\":[\"bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569\",\"dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR\"]},\"src/core/IAlignedLayerServiceManager.sol\":{\"keccak256\":\"0xcba5fa6ebd839dc0992a21e6de1415fdce22bfdfd3c06633a5f74d1405b545f1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://39ce84bf46b1ed2504673badf4d9553b852104c6cfe5d822831fa5551007ee99\",\"dweb:/ipfs/QmVZhpKG2azSnb9npqm1Rd2DrJKEyFgW4z85kxNQBmvaXJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IAVSDirectory","name":"__avsDirectory","type":"address"},{"internalType":"contract IRewardsCoordinator","name":"__rewardsCoordinator","type":"address"},{"internalType":"contract IRegistryCoordinator","name":"__registryCoordinator","type":"address"},{"internalType":"contract IStakeRegistry","name":"__stakeRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"batchIdentifierHash","type":"bytes32"}],"type":"error","name":"BatchAlreadyResponded"},{"inputs":[{"internalType":"bytes32","name":"batchIdentifierHash","type":"bytes32"}],"type":"error","name":"BatchAlreadySubmitted"},{"inputs":[{"internalType":"bytes32","name":"batchIdentifierHash","type":"bytes32"}],"type":"error","name":"BatchDoesNotExist"},{"inputs":[{"internalType":"address","name":"batcher","type":"address"},{"internalType":"uint256","name":"required","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"}],"type":"error","name":"InsufficientFunds"},{"inputs":[{"internalType":"string","name":"param","type":"string"}],"type":"error","name":"InvalidAddress"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"InvalidDepositAmount"},{"inputs":[{"internalType":"uint256","name":"signedStake","type":"uint256"},{"internalType":"uint256","name":"requiredStake","type":"uint256"}],"type":"error","name":"InvalidQuorumThreshold"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"alignedAggregator","type":"address"}],"type":"error","name":"SenderIsNotAggregator"},{"inputs":[{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32","indexed":true},{"internalType":"address","name":"senderAddress","type":"address","indexed":false}],"type":"event","name":"BatchVerified","anonymous":false},{"inputs":[{"internalType":"address","name":"batcher","type":"address","indexed":true},{"internalType":"uint256","name":"newBalance","type":"uint256","indexed":false}],"type":"event","name":"BatcherBalanceUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32","indexed":true},{"internalType":"address","name":"senderAddress","type":"address","indexed":false},{"internalType":"uint32","name":"taskCreatedBlock","type":"uint32","indexed":false},{"internalType":"string","name":"batchDataPointer","type":"string","indexed":false}],"type":"event","name":"NewBatchV2","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32","indexed":true},{"internalType":"address","name":"senderAddress","type":"address","indexed":false},{"internalType":"uint32","name":"taskCreatedBlock","type":"uint32","indexed":false},{"internalType":"string","name":"batchDataPointer","type":"string","indexed":false},{"internalType":"uint256","name":"respondToTaskFeeLimit","type":"uint256","indexed":false}],"type":"event","name":"NewBatchV3","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"prevRewardsInitiator","type":"address","indexed":false},{"internalType":"address","name":"newRewardsInitiator","type":"address","indexed":false}],"type":"event","name":"RewardsInitiatorUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"value","type":"bool","indexed":false}],"type":"event","name":"StaleStakesForbiddenUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"uint8","name":"verifierIdx","type":"uint8","indexed":true}],"type":"event","name":"VerifierDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"verifierIdx","type":"uint8","indexed":true}],"type":"event","name":"VerifierEnabled","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"alignedAggregator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"avsDirectory","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"batchersBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"batchesState","outputs":[{"internalType":"uint32","name":"taskCreatedBlock","type":"uint32"},{"internalType":"bool","name":"responded","type":"bool"},{"internalType":"uint256","name":"respondToTaskFeeLimit","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blsApkRegistry","outputs":[{"internalType":"contract IBLSApkRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"publicInput","type":"bytes"},{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"checkPublicInput","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32"},{"internalType":"uint32","name":"referenceBlockNumber","type":"uint32"},{"internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","name":"params","type":"tuple","components":[{"internalType":"uint32[]","name":"nonSignerQuorumBitmapIndices","type":"uint32[]"},{"internalType":"struct BN254.G1Point[]","name":"nonSignerPubkeys","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G1Point[]","name":"quorumApks","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"apkG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]},{"internalType":"struct BN254.G1Point","name":"sigma","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"uint32[]","name":"quorumApkIndices","type":"uint32[]"},{"internalType":"uint32[]","name":"totalStakeIndices","type":"uint32[]"},{"internalType":"uint32[][]","name":"nonSignerStakeIndices","type":"uint32[][]"}]}],"stateMutability":"view","type":"function","name":"checkSignatures","outputs":[{"internalType":"struct IBLSSignatureChecker.QuorumStakeTotals","name":"","type":"tuple","components":[{"internalType":"uint96[]","name":"signedStakeForQuorum","type":"uint96[]"},{"internalType":"uint96[]","name":"totalStakeForQuorum","type":"uint96[]"}]},{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct IRewardsCoordinator.RewardsSubmission[]","name":"rewardsSubmissions","type":"tuple[]","components":[{"internalType":"struct IRewardsCoordinator.StrategyAndMultiplier[]","name":"strategiesAndMultipliers","type":"tuple[]","components":[{"internalType":"contract IStrategy","name":"strategy","type":"address"},{"internalType":"uint96","name":"multiplier","type":"uint96"}]},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint32","name":"startTimestamp","type":"uint32"},{"internalType":"uint32","name":"duration","type":"uint32"}]}],"stateMutability":"nonpayable","type":"function","name":"createAVSRewardsSubmission"},{"inputs":[{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"string","name":"batchDataPointer","type":"string"},{"internalType":"uint256","name":"respondToTaskFeeLimit","type":"uint256"}],"stateMutability":"payable","type":"function","name":"createNewTask"},{"inputs":[],"stateMutability":"view","type":"function","name":"delegation","outputs":[{"internalType":"contract IDelegationManager","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"payable","type":"function","name":"depositToBatcher"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperatorFromAVS"},{"inputs":[{"internalType":"uint8","name":"verifierIdx","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"disableVerifier"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabledVerifiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint8","name":"verifierIdx","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"enableVerifier"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRestakedStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getRestakeableStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"address","name":"_rewardsInitiator","type":"address"},{"internalType":"address","name":"_alignedAggregator","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"uint256","name":"_initialPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint8","name":"verifierIdx","type":"uint8"}],"stateMutability":"view","type":"function","name":"isVerifierDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct ISignatureUtils.SignatureWithSaltAndExpiry","name":"operatorSignature","type":"tuple","components":[{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"expiry","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"registerOperatorToAVS"},{"inputs":[],"stateMutability":"view","type":"function","name":"registryCoordinator","outputs":[{"internalType":"contract IRegistryCoordinator","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"struct IBLSSignatureChecker.NonSignerStakesAndSignature","name":"nonSignerStakesAndSignature","type":"tuple","components":[{"internalType":"uint32[]","name":"nonSignerQuorumBitmapIndices","type":"uint32[]"},{"internalType":"struct BN254.G1Point[]","name":"nonSignerPubkeys","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G1Point[]","name":"quorumApks","type":"tuple[]","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"apkG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]},{"internalType":"struct BN254.G1Point","name":"sigma","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"uint32[]","name":"quorumApkIndices","type":"uint32[]"},{"internalType":"uint32[]","name":"totalStakeIndices","type":"uint32[]"},{"internalType":"uint32[][]","name":"nonSignerStakeIndices","type":"uint32[][]"}]}],"stateMutability":"nonpayable","type":"function","name":"respondToTaskV2"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardsInitiator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_alignedAggregator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAggregator"},{"inputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDisabledVerifiers"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"address","name":"newRewardsInitiator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardsInitiator"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setStaleStakesForbidden"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakeRegistry","outputs":[{"internalType":"contract IStakeRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"staleStakesForbidden","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32"},{"internalType":"struct BN254.G1Point","name":"apk","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]},{"internalType":"struct BN254.G2Point","name":"apkG2","type":"tuple","components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}]},{"internalType":"struct BN254.G1Point","name":"sigma","type":"tuple","components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}]}],"stateMutability":"view","type":"function","name":"trySignatureAndApkVerification","outputs":[{"internalType":"bool","name":"pairingSuccessful","type":"bool"},{"internalType":"bool","name":"siganatureIsValid","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"string","name":"_metadataURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateAVSMetadataURI"},{"inputs":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes32","name":"pubInputCommitment","type":"bytes32"},{"internalType":"bytes32","name":"provingSystemAuxDataCommitment","type":"bytes32"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"},{"internalType":"address","name":"senderAddress","type":"address"}],"stateMutability":"view","type":"function","name":"verifyBatchInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"checkSignatures(bytes32,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":{"details":"Before signature verification, the function verifies operator stake information. This includes ensuring that the provided `referenceBlockNumber` is correct, i.e., ensure that the stake returned from the specified block number is recent enough and that the stake is either the most recent update for the total stake (of the operator) or latest before the referenceBlockNumber.NOTE: Be careful to ensure `msgHash` is collision-resistant! This method does not hash `msgHash` in any way, so if an attacker is able to pass in an arbitrary value, they may be able to tamper with signature verification.","params":{"msgHash":"is the hash being signed","params":"is the struct containing information on nonsigners, stakes, quorum apks, and the aggregate signature","referenceBlockNumber":"is the block number at which the stake information is being verified"},"returns":{"_0":"quorumStakeTotals is the struct containing the total and signed stake for each quorum","_1":"signatoryRecordHash is the hash of the signatory record, which is used for fraud proofs"}},"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":{"details":"Only callabe by the permissioned rewardsInitiator addressThe duration of the `rewardsSubmission` cannot exceed `MAX_REWARDS_DURATION`The tokens are sent to the `RewardsCoordinator` contractStrategies must be in ascending order of addresses to check for duplicatesThis function will revert if the `rewardsSubmission` is malformed, e.g. if the `strategies` and `weights` arrays are of non-equal lengths","params":{"rewardsSubmissions":"The rewards submissions being created"}},"deregisterOperatorFromAVS(address)":{"params":{"operator":"The address of the operator to deregister."}},"getOperatorRestakedStrategies(address)":{"details":"This function is intended to be called off-chainNo guarantee is made on whether the operator has shares for a strategy in a quorum or uniqueness of each element in the returned array. The off-chain service should do that validation separately","params":{"operator":"The address of the operator to get restaked strategies for"}},"getRestakeableStrategies()":{"details":"This function is intended to be called off-chainNo guarantee is made on uniqueness of each element in the returned array. The off-chain service should do that validation separately"},"initialize(address,address,address,address,uint256)":{"params":{"_alignedAggregator":"The address of the aggregator.","_initialOwner":"The initial owner of the contract.","_initialPausedStatus":"pause status after calling initialize","_pauserRegistry":"a registry of addresses that can pause the contract","_rewardsInitiator":"The address which is allowed to create AVS rewards submissions."}},"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"params":{"operator":"The address of the operator to register.","operatorSignature":"The signature, salt, and expiry of the operator's signature."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setRewardsInitiator(address)":{"details":"only callable by the owner","params":{"newRewardsInitiator":"The new rewards initiator address"}},"setStaleStakesForbidden(bool)":{"params":{"value":"to toggle staleStakesForbidden"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))":{"params":{"apk":"is the claimed G1 public key","apkG2":"is provided G2 public key","msgHash":"is the hash being signed","sigma":"is the G1 point signature"},"returns":{"pairingSuccessful":"is true if the pairing precompile call was successful","siganatureIsValid":"is true if the signature is valid"}},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"updateAVSMetadataURI(string)":{"details":"only callable by the owner","params":{"_metadataURI":"is the metadata URI for the AVS"}}},"version":1},"userdoc":{"kind":"user","methods":{"avsDirectory()":{"notice":"Returns the EigenLayer AVSDirectory contract."},"checkSignatures(bytes32,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))":{"notice":"This function is called by disperser when it has aggregated all the signatures of the operators that are part of the quorum for a particular taskNumber and is asserting them into onchain. The function checks that the claim for aggregated signatures are valid. The thesis of this procedure entails: - getting the aggregated pubkey of all registered nodes at the time of pre-commit by the disperser (represented by apk in the parameters), - subtracting the pubkeys of all the signers not in the quorum (nonSignerPubkeys) and storing the output in apk to get aggregated pubkey of all operators that are part of quorum. - use this aggregated pubkey to verify the aggregated signature under BLS scheme."},"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])":{"notice":"Creates a new rewards submission to the EigenLayer RewardsCoordinator contract, to be split amongst the set of stakers delegated to operators who are registered to this `avs`"},"deregisterOperatorFromAVS(address)":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator deregistration from the AVS"},"getOperatorRestakedStrategies(address)":{"notice":"Returns the list of strategies that the operator has potentially restaked on the AVS"},"getRestakeableStrategies()":{"notice":"Returns the list of strategies that the AVS supports for restaking"},"initialize(address,address,address,address,uint256)":{"notice":"Initializes the contract with the initial owner."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"registerOperatorToAVS(address,(bytes,bytes32,uint256))":{"notice":"Forwards a call to EigenLayer's AVSDirectory contract to confirm operator registration with the AVS"},"rewardsInitiator()":{"notice":"The address of the entity that can initiate rewards"},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"setRewardsInitiator(address)":{"notice":"Sets the rewards initiator address"},"setStaleStakesForbidden(bool)":{"notice":"/** RegistryCoordinator owner can either enforce or not that operator stakes are staler than the delegation.minWithdrawalDelayBlocks() window."},"staleStakesForbidden()":{"notice":"If true, check the staleness of the operator stakes and that its within the delegation withdrawalDelayBlocks window."},"trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))":{"notice":"trySignatureAndApkVerification verifies a BLS aggregate signature and the veracity of a calculated G1 Public key"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"updateAVSMetadataURI(string)":{"notice":"Updates the metadata URI for the AVS"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/","@sp1-contracts/=lib/sp1-contracts/contracts/src/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/","sp1-contracts/=lib/sp1-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/core/AlignedLayerServiceManager.sol":"AlignedLayerServiceManager"},"evmVersion":"paris","libraries":{}},"sources":{"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IAVSDirectory.sol":{"keccak256":"0x3f67ab9b510b02dc3c07014b49785f1e167401bdb39cc10f737bbf545632d938","urls":["bzz-raw://48d1267e2df6c8ac9b8f419269ff3d23be9b62606ee6b6d2278c27ffebfd73aa","dweb:/ipfs/QmaFyywKCm1eotKjF1evryW8BMQJzPDstZm1wMRW79phXG"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0xab76a9f4eff865cbb689f627cf98263488765519d7a4ec5ffbcb0ca4972842f9","urls":["bzz-raw://ff57ce18e8350bf39f190645db0988bc0f1279f1872150a114a1b520c38a2914","dweb:/ipfs/QmSsUXkNUqYuJgGRumHTSs9rAaboGjecotcM4xHrdBYWaZ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0xb50c36ad96b6679bb80fd8331f949cbfbcba0f529026e1421a4d2bae64396eba","urls":["bzz-raw://5719181d780120f1e688c0da276992a8caf185815917f453b3550537c31ed4cc","dweb:/ipfs/QmYprRC5ZEXhz3zAUND5E8Xjn6s5TL8ZF8QbnndVq7aVPR"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0xd8a64dbed03d3a5cdbefe1af75968f2dde07f973749c2ef5197bf7187c3e448c","urls":["bzz-raw://27ccc7c1fd9352e9f9b357c9063d255dc0ed9583f43db09f786ac7497d7846b8","dweb:/ipfs/QmeJzuJkE9m2NUNwZSp4tGZEZmih1LeucePup8hzMVDRbG"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IRewardsCoordinator.sol":{"keccak256":"0xeab6f1140a90eb7f107d95bae1e8b2ecfbfe36282d62c9df69e6a564c2c59771","urls":["bzz-raw://785cd2777cdcab3b827b5eef2a4dae02c56db07252fdcefd8dd1016be034dc71","dweb:/ipfs/QmNyDFchTuMeiVoxNEfQw96JVq7DfkohGz1txKXe7HyNbq"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x5e52482a31d94401a8502f3014c4aada1142b4450fc0596dff8e1866a85fe092","urls":["bzz-raw://17dc326c9361bc1453379f26545963557b2883b0c88bc07d4477e04dbcc0cc8c","dweb:/ipfs/QmZXT7A816W5JH2ymirE2ETaJttqztFCsEL22AV8oEfCK9"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x45dfaa2cfdde87f48a6ee38bb6fb739847aef7cf3f6137bdcd8c8a330559ec79","urls":["bzz-raw://1b7f6bd75b42fcaa91ceb7140cb2c41926a1fe6ee2d3161e4fe6186b181ba232","dweb:/ipfs/QmZjbdKiSs33C9i3GDc3sdD39Pz4YPkDoKftowoUF4kHmY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x68bf02a443fc8b2f612eba3d39bfefa5f61f78b549f111cdecec5f2c58236a52","urls":["bzz-raw://76bc6875ce74128b861fdac5fd1c0c72f3cc9bacf67fa4a73721b95fb23959ef","dweb:/ipfs/QmPix4WJmf9fXyMZxfgwXEHBcg7V4NAbRqs4HUf5YrSJcM"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x70d89b05c1c5f47b74a07fbb5a2c05e606fed494e749ea98a9915b7be73df377","urls":["bzz-raw://db1d3bfaee69aef53c8b12b492a17584e6d1ac94610cb8b38aad33e1cdd81af7","dweb:/ipfs/QmfVsMTj1hcf9fMEm5RzvtcBN4dMcAKFBgUUDsNDr5XFpq"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0xf3b72653ba2567a978d4612703fa5f71c5fcd015d8dac7818468f22772d90a9d","urls":["bzz-raw://cee9d09370d968138d775c39525db4cd0768d60d17be7685519de12444e7dd2f","dweb:/ipfs/QmUdGh8wpMei3edKiEWA6S96s9dRt4ekZKJ4nau356X8xQ"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x9095fc29b96d102b10c02d44b3a6fbfa25593ef6ae4a810363ab885b9e6b0f71","urls":["bzz-raw://0945132d482d56278edddb1d32209903c4d3839c87ba4317aadd97dc23610d0f","dweb:/ipfs/QmVuM2aLRHxitx4rPx3GTYTBCVNcjYn6sHBRr1biUjLBP5"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xce8ee0ab28f2bce9e94aa19fffe55bebef080327632ac98ff3ab14994b369bc0","urls":["bzz-raw://5c7e2be97a8840fa2a0434077a36136553a84efd9bff4b46712ce9fddb813a6a","dweb:/ipfs/QmZKvgPxLAbGo1CqTA4AX6MCDPFLSSNt43ZKWRjvvzFp7S"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-middleware/src/BLSSignatureChecker.sol":{"keccak256":"0x3a5c205c596d3d73c7afa63ffbbfac8204f6d6a26c151ef26b47278981c3c0fe","urls":["bzz-raw://4beb88bf5b7c7e614f0d87b157d7a4b67afbf1cc93f3127622bd66f696799241","dweb:/ipfs/QmWJKb6qsd69bWgpAHX6deCkJqmJdo9oBLQAXJk97gWEE2"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/ServiceManagerBase.sol":{"keccak256":"0x7e32ef76daf32e5eb5a93cecf204223e64243f42afe70c7ca71ad3db3925b9c4","urls":["bzz-raw://19c10aa22f2e86e27e946b65c434e541caa6af06fcdde46c3b5e9b42890bd221","dweb:/ipfs/QmPb5qDRdbJTniKSqsbjVhbtwdb72G9hWPYcHtVvj1zBxg"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/ServiceManagerBaseStorage.sol":{"keccak256":"0xa544114dbf6d973a815f997a2ac9237c531c40b08c91d3a65a23b152ed621e1e","urls":["bzz-raw://4cf69f9be7d3f3c4184b61b267280a829040973633ea9d95e2ec0dbf70f40a2e","dweb:/ipfs/QmT2HeCJWBLX2p4KAWnyU318MMx9USb2brqCKq1vn2pXpR"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IBLSApkRegistry.sol":{"keccak256":"0xc07a5edfd95ab4f16f16a8dc8e76eadf4b0e90fe49db90540d01daaad86898c5","urls":["bzz-raw://52b53266450a53da641e82d8ae3be93c5e09f8342b4ea0cc96bb9038d8406354","dweb:/ipfs/QmVuoiQyqPTLCGnyt8zDaxiyaj4ETdgTGKv4MDHWzqEDjp"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IBLSSignatureChecker.sol":{"keccak256":"0xee5823a6674e553c71f5e127f08245827eb116d1ad418b5a7f2a9d6985fd95e0","urls":["bzz-raw://94aa26debddca6c0784585340cf891de4c2d7edaa3e5ec7229af9730312a5a51","dweb:/ipfs/QmWbHGbM7eVYTAmrCVaDU8b4YTm9VAN82XgLDR78uHC7vj"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IIndexRegistry.sol":{"keccak256":"0x83b2d56aacf27e65c4959a832c5de573e013908c044f6e48ea8284ac5282ae2b","urls":["bzz-raw://877af382587e96bb39bcc6db8bb5e4b871db5025c52347d4bee9afeaa4a6cc8d","dweb:/ipfs/QmdnhsQCChzq2o5NgbeT3JxSsEcMm1PC9QW6zenZNPjD9F"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistry.sol":{"keccak256":"0x51426a17fb7e54bd3720e2890104e97a8559a13ff248b3d6b840916751c143d3","urls":["bzz-raw://01f91289e6100d528cb8b318cb14ff22a0bc52882c9d4db41585e030cc9ddc25","dweb:/ipfs/Qmb22nqGrsrtNovHRwbMCvDHGENuxAgrWu3Db4p7Er2MHY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol":{"keccak256":"0xdd8effb082c1d5957d5ff43d7c59497b32866a6d82bcc7d5efa49ea9bc9b3385","urls":["bzz-raw://cb33a2a1446585b13b7a509e880c60d658d2d2522ec48a9f02e30d2cff54002d","dweb:/ipfs/QmVNG8ZPZkXzNEadPdTj1uBYLiZdCnYfsE5iGU6nJcJXiD"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IServiceManager.sol":{"keccak256":"0x7602cfb4397a114a0ed60e70e8e1d729fdcf406b585838181b3cb3ffa6ac9a9a","urls":["bzz-raw://b718fa016a13a2a5ce298bc5ea7495cc70cf9c358211c75595d5c9dde9a6cc0f","dweb:/ipfs/QmQNrVmU7P7pRqGBJuTQDkjf3wMDY2kJm7zXdtQwsQTbzY"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IServiceManagerUI.sol":{"keccak256":"0x365761699b4a5b7360ee6c75f12606eefc4b0394754c8b8e1e1eefec0cba7ffb","urls":["bzz-raw://ac14ada180b66cbbc5f9de0d6b4bb87b5946d2a9569ae88f2f62aaca47e879a8","dweb:/ipfs/QmcN9xKYF24naNWc6cYah9suz5gJSYE9nPj9eZFWnP35VX"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/interfaces/IStakeRegistry.sol":{"keccak256":"0x1b8b4d757c1b804bc4cf6fbbf8bf8f89ebdeb30a31014751fe7d01deb9d513d4","urls":["bzz-raw://984bf2777b898ed187d28997f9783f5c293a1a1848e3e9aa470ce9183d454c97","dweb:/ipfs/Qme3aTpBrkLu8wYHFMZbCfhXHoZ1M6SpXkeC237T9BuU5B"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/src/libraries/BN254.sol":{"keccak256":"0xb428c8d0c3b325507a88a61a80115493eb88606ccc19ed64a31e11294ab853b3","urls":["bzz-raw://d7b6fb935bfe0494e6ff970c8f30a86d5f4cf5c3e0967300c28cd383c043acae","dweb:/ipfs/QmUHfFZaVjLPXhkBmcxrZhAHZaSFQDqXtrLGpjGBQBa5Ki"],"license":"MIT"},"lib/eigenlayer-middleware/src/libraries/BitmapUtils.sol":{"keccak256":"0x44315ac460be30a6b18fd4df4d1b8afb46653bf4dc06ca9f93c32353fd0605c5","urls":["bzz-raw://da14f2ead3a375b02afd09d4a02edddf7b63a88945746b96789b2473184fdb04","dweb:/ipfs/QmRqcjxa2Vv2MrLdPeAwsktXdWTirapEDsRbJCyYRtKT6g"],"license":"MIT"},"src/core/AlignedLayerServiceManager.sol":{"keccak256":"0x5232f4f3b98f4c17b0172080890c310829155d929be477b184cd3b20cfcacede","urls":["bzz-raw://acd39817a907dfd467a2375a1ca1f25af1b60dd465a62a92e0b6dbbc99339837","dweb:/ipfs/QmVBAjmRsrEsCkxSpApyBQQ1qJUWVVDizhY6kk3pbpvXcK"],"license":"UNLICENSED"},"src/core/AlignedLayerServiceManagerStorage.sol":{"keccak256":"0x7359959b102fcb5f313d7a0a4a2497ff651c1836ec5259f4f86bd5d20da502ce","urls":["bzz-raw://e1990be0b54c7ab6734ff3096aac61c951d762e0dc6d52d3890a364fc1d92569","dweb:/ipfs/QmevhuweQnjTVBmxTyWucznnQ68kU1U5uHvtYm5FvkBfRR"],"license":null},"src/core/IAlignedLayerServiceManager.sol":{"keccak256":"0xcba5fa6ebd839dc0992a21e6de1415fdce22bfdfd3c06633a5f74d1405b545f1","urls":["bzz-raw://39ce84bf46b1ed2504673badf4d9553b852104c6cfe5d822831fa5551007ee99","dweb:/ipfs/QmVZhpKG2azSnb9npqm1Rd2DrJKEyFgW4z85kxNQBmvaXJ"],"license":"UNLICENSED"}},"version":1},"id":115} \ No newline at end of file diff --git a/aggregation_mode/abi/AlignedProofAggregationService.json b/aggregation_mode/abi/AlignedProofAggregationService.json new file mode 100644 index 0000000000..62bb23a7b4 --- /dev/null +++ b/aggregation_mode/abi/AlignedProofAggregationService.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"VERIFIER_MOCK_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"aggregatedProofs","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"alignedAggregatorAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"newOwner","type":"address","internalType":"address"},{"name":"_alignedAggregatorAddress","type":"address","internalType":"address"},{"name":"_sp1VerifierAddress","type":"address","internalType":"address"},{"name":"_risc0VerifierAddress","type":"address","internalType":"address"},{"name":"_risc0AggregatorProgramImageId","type":"bytes32","internalType":"bytes32"},{"name":"_sp1AggregatorProgramVKHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"risc0AggregatorProgramImageId","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"risc0VerifierAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setRisc0AggregatorProgramImageId","inputs":[{"name":"_risc0AggregatorProgramImageId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRisc0VerifierAddress","inputs":[{"name":"_risc0VerifierAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSP1AggregatorProgramVKHash","inputs":[{"name":"_sp1AggregatorProgramVKHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sp1AggregatorProgramVKHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"sp1VerifierAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"verifyRisc0","inputs":[{"name":"blobVersionedHash","type":"bytes32","internalType":"bytes32"},{"name":"risc0ReceiptSeal","type":"bytes","internalType":"bytes"},{"name":"risc0JournalBytes","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifySP1","inputs":[{"name":"blobVersionedHash","type":"bytes32","internalType":"bytes32"},{"name":"sp1PublicValues","type":"bytes","internalType":"bytes"},{"name":"sp1ProofBytes","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AggregatedProofVerified","inputs":[{"name":"merkleRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"blobVersionedHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OnlyAlignedAggregator","inputs":[{"name":"sender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a080604052346100dc57306080526000549060ff8260081c1661008a575060ff8082161061004f575b60405161139c90816100e2823960805181818161075b015281816108820152610bbf0152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a138610029565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c9081630751299c14610f435750806325c36fa514610f2557806327d3bc9a14610ef6578063294e3ccb14610ecd5780633659cfe614610ba05780634c46688c14610b775780634f1ef2861461080c57806352d1902d1461074857806354687ccf146105f5578063616af4f7146105cc578063715018a61461056f57806383501b21146105535780638da5cb5b1461052a5780639367a05a146105075780639fc0984b146104e4578063a52f681b146104a4578063f28c3e37146102c3578063f2fde38b146102325763f6e04ac4146100f257600080fd5b3461022f5761010036610ffb565b60cb54929493929091906001600160a01b0316330361021c5760208386810103126102175760ca548335958794916001600160a01b03169060fe198201610188575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610213576101d787956101c5976040519889978896879663020a49e360e51b88526004880152606060248801526064870191611114565b84810360031901604486015291611114565b03915afa8015610208576101ef575b80808080610142565b816101f991610f79565b6102045782386101e6565b8280fd5b6040513d84823e3d90fd5b8680fd5b600080fd5b63921f325560e01b865233600452602486fd5b80fd5b503461022f57602036600319011261022f5761024c610f63565b610254611135565b6001600160a01b0381161561026f5761026c9061118d565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461022f5760c036600319011261022f576102dd610f63565b6024356001600160a01b03811690819003610204576044356001600160a01b038116908190036104a0576064356001600160a01b038116929083900361049c57845460ff8160081c16159485809661048f575b8015610478575b1561041c5760ff1982166001178755610388918661040b575b5061036a60ff885460081c16610365816111d6565b6111d6565b6103733361118d565b61038360ff885460081c166111d6565b61118d565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103d45780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff191661010117875538610350565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103375750600160ff831614610337565b50600160ff831610610330565b8480fd5b8380fd5b503461022f57602036600319011261022f576104be610f63565b6104c6611135565b60018060a01b03166001600160601b0360a01b60cc54161760cc5580f35b503461022f57602036600319011261022f576104fe611135565b60043560ce5580f35b503461022f57602036600319011261022f57610521611135565b60043560cd5580f35b503461022f578060031936011261022f576033546040516001600160a01b039091168152602090f35b503461022f578060031936011261022f57602060405160ff8152f35b503461022f578060031936011261022f57610588611135565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461022f578060031936011261022f5760cc546040516001600160a01b039091168152602090f35b503461022f5761060436610ffb565b60cb549094939291906001600160a01b0316330361021c5790859160208187810103126102045760cc548135966001600160a01b039091169160fe19830161068d575b84887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b81859160209360405192839283378101838152039060025afa156102085782519360cd5492823b1561049c576106e2936040519687958694859463ab750e7560e01b8652606060048701526064860191611114565b916024840152604483015203915afa801561073d57610706575b8381808080610647565b836107357ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f629395602093610f79565b9391506106fc565b6040513d86823e3d90fd5b503461022f578060031936011261022f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036107a15760206040516000805160206113478339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b50604036600319011261022f57610821610f63565b60243567ffffffffffffffff81116102045736602382011215610204578060040135908361084e83610fb1565b9161085c6040519384610f79565b8383526020830193366024828401011161020457806024602093018637830101526108d57f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108b630821415611052565b600080516020611347833981519152546001600160a01b0316146110b3565b6108dd611135565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561091257505061026c90611236565b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa869181610b43575b5061099c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b60008051602061134783398151915203610aec576109b984611236565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a2815115801590610ae4575b6109f8575b5050505080f35b833b15610a935750610a82928492839251915af43d15610a8c573d610a1c81610fb1565b90610a2a6040519283610f79565b81523d84602083013e5b60405191610a43606084610f79565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526112cf565b50388080806109f1565b6060610a34565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5060016109ec565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610b6f575b81610b5f60209383610f79565b810103126102135751903861093b565b3d9150610b52565b503461022f578060031936011261022f5760cb546040516001600160a01b039091168152602090f35b503461022f57602036600319011261022f57610bba610f63565b610bf37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108b630821415611052565b610bfb611135565b6020604051610c0a8282610f79565b83815281810190601f1983013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610c4f5750505061026c90611236565b6040516352d1902d60e01b8152939492936001600160a01b038616908581600481855afa859181610e9a575b50610cdc5760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b9394937fc9f76b5ec45e5cdef99837d7b6d2467235c1df8933c8ca56df5c35afa2c7d44401610e4357610d0e86611236565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a2815115801590610e3c575b610d4f575b50505050905080f35b853b15610deb57509280948192610dd89551915af43d15610de3573d90610d7582610fb1565b91610d836040519384610f79565b82523d858484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610dbc606086610f79565b60278552840152660819985a5b195960ca1b60408401526112cf565b508038808080610d46565b606090610d8c565b62461bcd60e51b815260048101849052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5084610d41565b60405162461bcd60e51b815260048101859052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311610ec6575b610eb28183610f79565b81010312610ec257519038610c7b565b8580fd5b503d610ea8565b503461022f578060031936011261022f5760ca546040516001600160a01b039091168152602090f35b503461022f57602036600319011261022f5760ff6040602092600435815260c984522054166040519015158152f35b503461022f578060031936011261022f57602060ce54604051908152f35b905034610f5f5781600319360112610f5f5760209060cd548152f35b5080fd5b600435906001600160a01b038216820361021757565b90601f8019910116810190811067ffffffffffffffff821117610f9b57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610f9b57601f01601f191660200190565b9181601f840112156102175782359167ffffffffffffffff8311610217576020838186019501011161021757565b906060600319830112610217576004359160243567ffffffffffffffff8111610217578161102b91600401610fcd565b929092916044359067ffffffffffffffff82116102175761104e91600401610fcd565b9091565b1561105957565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156110ba57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b6033546001600160a01b0316330361114957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156111dd57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156112745760018060a01b03166001600160601b0360a01b60008051602061134783398151915254161760008051602061134783398151915255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156112db575090565b8151156112eb5750805190602001fd5b6040519062461bcd60e51b8252602060048301528181519182602483015260005b83811061132e5750508160006044809484010152601f80199101168101030190fd5b6020828201810151604487840101528593500161130c56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200c10e074ede3642914a30202c432bbaf4e253cea9352d8b0ba0a6c20647733e464736f6c634300081c0033","sourceMap":"580:5357:75:-:0;;;;;;;1332:4:22;1324:13;;5456::21;580:5357:75;;;;;;;;;;;;;;5527:30:21;5523:138;;-1:-1:-1;580:5357:75;;;;;;;;1324:13:22;580:5357:75;;;;;;;;;;;;;;;;5523:138:21;580:5357:75;;;;;;5456:13:21;580:5357:75;5622:28:21;580:5357:75;;;;;;5622:28:21;5523:138;;;580:5357:75;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001357600080fd5b600090813560e01c9081630751299c14610f435750806325c36fa514610f2557806327d3bc9a14610ef6578063294e3ccb14610ecd5780633659cfe614610ba05780634c46688c14610b775780634f1ef2861461080c57806352d1902d1461074857806354687ccf146105f5578063616af4f7146105cc578063715018a61461056f57806383501b21146105535780638da5cb5b1461052a5780639367a05a146105075780639fc0984b146104e4578063a52f681b146104a4578063f28c3e37146102c3578063f2fde38b146102325763f6e04ac4146100f257600080fd5b3461022f5761010036610ffb565b60cb54929493929091906001600160a01b0316330361021c5760208386810103126102175760ca548335958794916001600160a01b03169060fe198201610188575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610213576101d787956101c5976040519889978896879663020a49e360e51b88526004880152606060248801526064870191611114565b84810360031901604486015291611114565b03915afa8015610208576101ef575b80808080610142565b816101f991610f79565b6102045782386101e6565b8280fd5b6040513d84823e3d90fd5b8680fd5b600080fd5b63921f325560e01b865233600452602486fd5b80fd5b503461022f57602036600319011261022f5761024c610f63565b610254611135565b6001600160a01b0381161561026f5761026c9061118d565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461022f5760c036600319011261022f576102dd610f63565b6024356001600160a01b03811690819003610204576044356001600160a01b038116908190036104a0576064356001600160a01b038116929083900361049c57845460ff8160081c16159485809661048f575b8015610478575b1561041c5760ff1982166001178755610388918661040b575b5061036a60ff885460081c16610365816111d6565b6111d6565b6103733361118d565b61038360ff885460081c166111d6565b61118d565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103d45780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff191661010117875538610350565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103375750600160ff831614610337565b50600160ff831610610330565b8480fd5b8380fd5b503461022f57602036600319011261022f576104be610f63565b6104c6611135565b60018060a01b03166001600160601b0360a01b60cc54161760cc5580f35b503461022f57602036600319011261022f576104fe611135565b60043560ce5580f35b503461022f57602036600319011261022f57610521611135565b60043560cd5580f35b503461022f578060031936011261022f576033546040516001600160a01b039091168152602090f35b503461022f578060031936011261022f57602060405160ff8152f35b503461022f578060031936011261022f57610588611135565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461022f578060031936011261022f5760cc546040516001600160a01b039091168152602090f35b503461022f5761060436610ffb565b60cb549094939291906001600160a01b0316330361021c5790859160208187810103126102045760cc548135966001600160a01b039091169160fe19830161068d575b84887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b81859160209360405192839283378101838152039060025afa156102085782519360cd5492823b1561049c576106e2936040519687958694859463ab750e7560e01b8652606060048701526064860191611114565b916024840152604483015203915afa801561073d57610706575b8381808080610647565b836107357ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f629395602093610f79565b9391506106fc565b6040513d86823e3d90fd5b503461022f578060031936011261022f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036107a15760206040516000805160206113478339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b50604036600319011261022f57610821610f63565b60243567ffffffffffffffff81116102045736602382011215610204578060040135908361084e83610fb1565b9161085c6040519384610f79565b8383526020830193366024828401011161020457806024602093018637830101526108d57f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108b630821415611052565b600080516020611347833981519152546001600160a01b0316146110b3565b6108dd611135565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561091257505061026c90611236565b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa869181610b43575b5061099c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b60008051602061134783398151915203610aec576109b984611236565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a2815115801590610ae4575b6109f8575b5050505080f35b833b15610a935750610a82928492839251915af43d15610a8c573d610a1c81610fb1565b90610a2a6040519283610f79565b81523d84602083013e5b60405191610a43606084610f79565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526112cf565b50388080806109f1565b6060610a34565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5060016109ec565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610b6f575b81610b5f60209383610f79565b810103126102135751903861093b565b3d9150610b52565b503461022f578060031936011261022f5760cb546040516001600160a01b039091168152602090f35b503461022f57602036600319011261022f57610bba610f63565b610bf37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108b630821415611052565b610bfb611135565b6020604051610c0a8282610f79565b83815281810190601f1983013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610c4f5750505061026c90611236565b6040516352d1902d60e01b8152939492936001600160a01b038616908581600481855afa859181610e9a575b50610cdc5760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b9394937fc9f76b5ec45e5cdef99837d7b6d2467235c1df8933c8ca56df5c35afa2c7d44401610e4357610d0e86611236565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a2815115801590610e3c575b610d4f575b50505050905080f35b853b15610deb57509280948192610dd89551915af43d15610de3573d90610d7582610fb1565b91610d836040519384610f79565b82523d858484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610dbc606086610f79565b60278552840152660819985a5b195960ca1b60408401526112cf565b508038808080610d46565b606090610d8c565b62461bcd60e51b815260048101849052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5084610d41565b60405162461bcd60e51b815260048101859052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311610ec6575b610eb28183610f79565b81010312610ec257519038610c7b565b8580fd5b503d610ea8565b503461022f578060031936011261022f5760ca546040516001600160a01b039091168152602090f35b503461022f57602036600319011261022f5760ff6040602092600435815260c984522054166040519015158152f35b503461022f578060031936011261022f57602060ce54604051908152f35b905034610f5f5781600319360112610f5f5760209060cd548152f35b5080fd5b600435906001600160a01b038216820361021757565b90601f8019910116810190811067ffffffffffffffff821117610f9b57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111610f9b57601f01601f191660200190565b9181601f840112156102175782359167ffffffffffffffff8311610217576020838186019501011161021757565b906060600319830112610217576004359160243567ffffffffffffffff8111610217578161102b91600401610fcd565b929092916044359067ffffffffffffffff82116102175761104e91600401610fcd565b9091565b1561105957565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156110ba57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b6033546001600160a01b0316330361114957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156111dd57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156112745760018060a01b03166001600160601b0360a01b60008051602061134783398151915254161760008051602061134783398151915255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156112db575090565b8151156112eb5750805190602001fd5b6040519062461bcd60e51b8252602060048301528181519182602483015260005b83811061132e5750508160006044809484010152601f80199101168101030190fd5b6020828201810151604487840101528593500161130c56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200c10e074ede3642914a30202c432bbaf4e253cea9352d8b0ba0a6c20647733e464736f6c634300081c0033","sourceMap":"580:5357:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4876:24;580:5357;;;;;;;;-1:-1:-1;;;;;580:5357:75;4862:10;:38;4858:109;;580:5357;3234:38;;;;580:5357;;;;4453:18;580:5357;;;;;;;-1:-1:-1;;;;;580:5357:75;;-1:-1:-1;;4453:43:75;;3358:162;;580:5357;;;3580:54;580:5357;;;;;3530:16;580:5357;;;;;3561:4;580:5357;;;;;;;;;;;;;3580:54;580:5357;;3358:162;3450:26;580:5357;3405:104;;;;;580:5357;;;;;;;;;;;;;;;;;3405:104;;580:5357;3405:104;;580:5357;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;580:5357:75;;;;;;;:::i;:::-;3405:104;;;;;;;;;;3358:162;;;;;;;3405:104;;;;;:::i;:::-;580:5357;;3405:104;;;;580:5357;;;;3405:104;580:5357;;;;;;;;;3405:104;580:5357;;;;-1:-1:-1;580:5357:75;;4858:109;-1:-1:-1;;;4923:33:75;;4862:10;580:5357;;;4923:33;;580:5357;;;;;;;;;;-1:-1:-1;;580:5357:75;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;580:5357:75;;2409:22:17;580:5357:75;;2503:8:17;;;:::i;:::-;580:5357:75;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;-1:-1:-1;;580:5357:75;;;;;;:::i;:::-;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;;;;;;;;;3133:14:21;;;;3179:34;;;580:5357:75;3178:108:21;;;;580:5357:75;;;;-1:-1:-1;;580:5357:75;;;;;;2718:8;;580:5357;3394:65:21;;580:5357:75;;4902:69:21;580:5357:75;;;;;;4902:69:21;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:25;1195:12:17;:::i;:::-;4902:69:21;580:5357:75;;;;;;4902:69:21;:::i;:::-;2718:8:75;:::i;:::-;-1:-1:-1;;;;;580:5357:75;;2737:52;580:5357;;;2737:52;580:5357;-1:-1:-1;;;;;580:5357:75;;2799:40;580:5357;;;2799:40;580:5357;-1:-1:-1;;;;;580:5357:75;;2849:44;580:5357;;;2849:44;580:5357;;;2903:62;580:5357;;;2975:56;580:5357;3479:99:21;;580:5357:75;;3479:99:21;580:5357:75;;;;;;;3553:14:21;580:5357:75;;;;;;3553:14:21;580:5357:75;;3394:65:21;-1:-1:-1;;580:5357:75;;;;;3394:65:21;;;580:5357:75;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;3178:108:21;3258:4;;1476:19:24;:23;3219:66:21;;3178:108;3219:66;580:5357:75;;;;;3268:17:21;3178:108;;3179:34;580:5357:75;;;;;3197:16:21;3179:34;;580:5357:75;;;;;;;;;;;;;;;-1:-1:-1;;580:5357:75;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;580:5357:75;;;;;;-1:-1:-1;;;;;580:5357:75;;5232:44;580:5357;;;5232:44;580:5357;;;;;;;;;;-1:-1:-1;;580:5357:75;;;;1303:62:17;;:::i;:::-;580:5357:75;;5872:56;580:5357;;;;;;;;;;-1:-1:-1;;580:5357:75;;;;1303:62:17;;:::i;:::-;580:5357:75;;5550:62;580:5357;;;;;;;;;;;;;;;;1513:6:17;580:5357:75;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;;;;;;;;;;;;;;;;;1850:4;580:5357;;;;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2765:6;580:5357:75;;-1:-1:-1;;;;;;580:5357:75;;;;;;;-1:-1:-1;;;;;580:5357:75;2813:40:17;580:5357:75;;2813:40:17;580:5357:75;;;;;;;;;;;;;;;1616:35;580:5357;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;;;;;;;;;:::i;:::-;4876:24;580:5357;;;;;;;-1:-1:-1;;;;;580:5357:75;4862:10;:38;4858:109;;3844:40;;;580:5357;3844:40;;;;580:5357;;;;4594:20;580:5357;;;;-1:-1:-1;;;;;580:5357:75;;;;-1:-1:-1;;4594:45:75;;3970:273;;580:5357;;;4303:54;580:5357;;;;;4253:16;580:5357;;;;;4284:4;580:5357;;;;;;;;;;;;;4303:54;580:5357;;3970:273;580:5357;;;4048:25;580:5357;;;;;;;;;;;;;4048:25;;;;;;;;;;580:5357;4169:29;580:5357;4087:145;;;;;;580:5357;;;;;;;;;;;;;;4087:145;;580:5357;;4087:145;;580:5357;;;;;;:::i;:::-;;;;;;;;;;4087:145;;;;;;;;;;3970:273;;;;;;;;4087:145;;;4303:54;4087:145;;580:5357;4087:145;;:::i;:::-;;;;;;;580:5357;;;;;;;;;;;;;;;;;;;;;;2333:6:22;-1:-1:-1;;;;;580:5357:75;2324:4:22;2316:23;580:5357:75;;;;;-1:-1:-1;;;;;;;;;;;580:5357:75;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;580:5357:75;;-1:-1:-1;;580:5357:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1963:87:22;1898:6;-1:-1:-1;;;;;580:5357:75;1873:80:22;1889:4;1881:23;;;1873:80;:::i;:::-;-1:-1:-1;;;;;;;;;;;580:5357:75;-1:-1:-1;;;;;580:5357:75;1971:30:22;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;951:66:19;;580:5357:75;;;;;3478:17:19;;;;;:::i;3380:526::-;580:5357:75;;-1:-1:-1;;;3531:63:19;;-1:-1:-1;;;;;580:5357:75;;;;;;;;3531:63:19;;;;;;;3380:526;-1:-1:-1;3527:302:19;;580:5357:75;;-1:-1:-1;;;3758:56:19;;580:5357:75;;3758:56:19;;951:66;;580:5357:75;951:66:19;;580:5357:75;951:66:19;580:5357:75;;;951:66:19;-1:-1:-1;;;951:66:19;;;;3758:56;;;3527:302;-1:-1:-1;;;;;;;;;;;3644:28:19;951:66;;2277:17;;;:::i;:::-;580:5357:75;;2310:27:19;;;;;580:5357:75;;2659:15:19;;;:28;;;3527:302;2655:105;;3527:302;3380:526;;;;580:5357:75;;2655:105:19;1476:19:24;;:23;580:5357:75;;7395:25:19;7437:99;7395:25;;;;;;;;;580:5357:75;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;7437:99:19;:::i;:::-;;2655:105;;;;;;580:5357:75;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;2659:28:19;;3971:4:22;2659:28:19;;951:66;580:5357:75;;-1:-1:-1;;;951:66:19;;580:5357:75;;951:66:19;;;;580:5357:75;951:66:19;;580:5357:75;951:66:19;580:5357:75;;;951:66:19;-1:-1:-1;;;951:66:19;;;;;;;3531:63;;;;580:5357:75;3531:63:19;;580:5357:75;3531:63:19;;;;;;580:5357:75;3531:63:19;;;:::i;:::-;;;951:66;;;;;3531:63;;;;;;;-1:-1:-1;3531:63:19;;580:5357:75;;;;;;;;;;;;;1371:39;580:5357;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;;;;;;;;-1:-1:-1;;580:5357:75;;;;;;:::i;:::-;1963:87:22;1898:6;-1:-1:-1;;;;;580:5357:75;1873:80:22;1889:4;1881:23;;;1873:80;:::i;1963:87::-;1303:62:17;;:::i;:::-;580:5357:75;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;580:5357:75;;;;;951:66:19;;580:5357:75;;;;;3478:17:19;;;;;;:::i;3380:526::-;580:5357:75;;-1:-1:-1;;;3531:63:19;;580:5357:75;;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;3531:63:19;;;;;;;3380:526;-1:-1:-1;3527:302:19;;580:5357:75;;-1:-1:-1;;;3758:56:19;;580:5357:75;3758:56:19;;951:66;;;;;;;580:5357:75;951:66:19;580:5357:75;;;951:66:19;-1:-1:-1;;;951:66:19;;;;3758:56;;;3527:302;3644:28;;;;;951:66;;2277:17;;;:::i;:::-;580:5357:75;;2310:27:19;;;;;580:5357:75;;2659:15:19;;;:28;;;3527:302;2655:105;;3527:302;3380:526;;;;;;580:5357:75;;2655:105:19;1476:19:24;;:23;580:5357:75;;7395:25:19;;;;;;7437:99;7395:25;;;;;580:5357:75;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;580:5357:75;;;;7437:99:19;:::i;:::-;;2655:105;;;;;;;580:5357:75;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;2659:28:19;;;;;951:66;580:5357:75;;-1:-1:-1;;;951:66:19;;580:5357:75;951:66:19;;;;;;;;;580:5357:75;951:66:19;580:5357:75;;;951:66:19;-1:-1:-1;;;951:66:19;;;;;;;3531:63;;;;;;;;;;;;;;;;;:::i;:::-;;;951:66;;;;;3531:63;;;;951:66;580:5357:75;;;3531:63:19;;;;;580:5357:75;;;;;;;;;;;;;1244:33;580:5357;;;-1:-1:-1;;;;;580:5357:75;;;;;;;;;;;;;;;-1:-1:-1;;580:5357:75;;;;;;;;;;;;806:48;580:5357;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:41;580:5357;;;;;;;;;;;;;;;;;;;;;;;2032:44;580:5357;;;;;;;;;;;;-1:-1:-1;;;;;580:5357:75;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;580:5357:75;;;;;-1:-1:-1;580:5357:75;;;;;;;;;-1:-1:-1;;580:5357:75;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;580:5357:75;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;;;;-1:-1:-1;580:5357:75;;;;;;;;-1:-1:-1;;580:5357:75;;;;:::o;1599:130:17:-;1513:6;580:5357:75;-1:-1:-1;;;;;580:5357:75;929:10:25;1662:23:17;580:5357:75;;1599:130:17:o;580:5357:75:-;;;;951:66:19;;;580:5357:75;;;;;;;;;;;;;;;;;;2673:187:17;2765:6;580:5357:75;;-1:-1:-1;;;;;580:5357:75;;;-1:-1:-1;;;;;;580:5357:75;;;;;;;;;;2813:40:17;-1:-1:-1;;2813:40:17;2673:187::o;580:5357:75:-;;;;:::o;:::-;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;1805:281:19;1476:19:24;;:23;580:5357:75;;;;;;;;-1:-1:-1;;;;;580:5357:75;;-1:-1:-1;;;;;;;;;;;580:5357:75;;;-1:-1:-1;;;;;;;;;;;580:5357:75;1805:281:19:o;580:5357:75:-;;;-1:-1:-1;;;580:5357:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;580:5357:75;;;;;;;6622:742:24;;;;6792:566;;;6819:17;;:::o;6792:566::-;580:5357:75;;6937:21:24;:17;;7121:154;;;;;;;6933:415;580:5357:75;;951:66:19;;;;7313:20:24;;580:5357:75;7313:20:24;;;580:5357:75;;;;;;;;;;6957:1:24;580:5357:75;;;;;;;;;6957:1:24;580:5357:75;;;;;;;;;;;;;;;7313:20:24;;;;580:5357:75;;;;;;;;;;;;;;;;-1:-1:-1;580:5357:75;;","linkReferences":{},"immutableReferences":{"4221":[{"start":1883,"length":32},{"start":2178,"length":32},{"start":3007,"length":32}]}},"methodIdentifiers":{"VERIFIER_MOCK_ADDRESS()":"83501b21","aggregatedProofs(bytes32)":"27d3bc9a","alignedAggregatorAddress()":"4c46688c","initialize(address,address,address,address,bytes32,bytes32)":"f28c3e37","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","risc0AggregatorProgramImageId()":"0751299c","risc0VerifierAddress()":"616af4f7","setRisc0AggregatorProgramImageId(bytes32)":"9367a05a","setRisc0VerifierAddress(address)":"a52f681b","setSP1AggregatorProgramVKHash(bytes32)":"9fc0984b","sp1AggregatorProgramVKHash()":"25c36fa5","sp1VerifierAddress()":"294e3ccb","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286","verifyRisc0(bytes32,bytes,bytes)":"54687ccf","verifySP1(bytes32,bytes,bytes)":"f6e04ac4"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"OnlyAlignedAggregator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"}],\"name\":\"AggregatedProofVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERIFIER_MOCK_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"aggregatedProofs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"alignedAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_alignedAggregatorAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sp1VerifierAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_risc0VerifierAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_risc0AggregatorProgramImageId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_sp1AggregatorProgramVKHash\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"risc0AggregatorProgramImageId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"risc0VerifierAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_risc0AggregatorProgramImageId\",\"type\":\"bytes32\"}],\"name\":\"setRisc0AggregatorProgramImageId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_risc0VerifierAddress\",\"type\":\"address\"}],\"name\":\"setRisc0VerifierAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_sp1AggregatorProgramVKHash\",\"type\":\"bytes32\"}],\"name\":\"setSP1AggregatorProgramVKHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sp1AggregatorProgramVKHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sp1VerifierAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"risc0ReceiptSeal\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"risc0JournalBytes\",\"type\":\"bytes\"}],\"name\":\"verifyRisc0\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sp1PublicValues\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sp1ProofBytes\",\"type\":\"bytes\"}],\"name\":\"verifySP1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setRisc0AggregatorProgramImageId(bytes32)\":{\"params\":{\"_risc0AggregatorProgramImageId\":\"The new imageid for the Risc0 aggregator program\"}},\"setRisc0VerifierAddress(address)\":{\"params\":{\"_risc0VerifierAddress\":\"The new address for the Risc0 verifier contract\"}},\"setSP1AggregatorProgramVKHash(bytes32)\":{\"params\":{\"_sp1AggregatorProgramVKHash\":\"The new vk hash for the sp1 aggregator program\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"verifySP1(bytes32,bytes,bytes)\":{\"details\":\"This function is called by the aligned proof aggregator after collecting the proofs and aggregating them to be verified on-chain. We expect the blobTransactionHash to be called before\",\"params\":{\"blobVersionedHash\":\"the versioned hash of the blob transaction that contains the leaves that compose the merkle root.\",\"sp1ProofBytes\":\"Groth16 proof\",\"sp1PublicValues\":\"Values used to perform the execution\"}}},\"stateVariables\":{\"risc0VerifierAddress\":{\"details\":\"See supported verifier here: https://dev.risczero.com/api/blockchain-integration/contracts/verifier#contract-addresses\"},\"sp1VerifierAddress\":{\"details\":\"This can either be a specific SP1Verifier for a specific version, or the SP1VerifierGateway which can be used to verify proofs for any version of SP1. For the list of supported verifiers on each chain, see: https://docs.succinct.xyz/onchain-verification/contract-addresses\"}},\"version\":1},\"userdoc\":{\"events\":{\"AggregatedProofVerified(bytes32,bytes32)\":{\"notice\":\"event that gets emitted after a successful aggregated proof verification\"}},\"kind\":\"user\",\"methods\":{\"VERIFIER_MOCK_ADDRESS()\":{\"notice\":\"whether we are in dev mode or not if the sp1 verifier address is set to this address, then we skip verification\"},\"aggregatedProofs(bytes32)\":{\"notice\":\"Map the merkle root to a boolean to indicate it was verified\"},\"alignedAggregatorAddress()\":{\"notice\":\"The address of the Wallet that is allowed to call the verify function.\"},\"risc0AggregatorProgramImageId()\":{\"notice\":\"The unique identifier (image ID) of the RISC Zero aggregator program. This ensures that only proofs generated by a trusted Risc0 program can be verified.\"},\"risc0VerifierAddress()\":{\"notice\":\"The address of the Risc0 verifier contract\"},\"setRisc0AggregatorProgramImageId(bytes32)\":{\"notice\":\"Sets the image id of the Risc0 program\"},\"setRisc0VerifierAddress(address)\":{\"notice\":\"Sets the address of the Risc0 verifier contract\"},\"setSP1AggregatorProgramVKHash(bytes32)\":{\"notice\":\"Sets the vk hash of the sp1 program\"},\"sp1AggregatorProgramVKHash()\":{\"notice\":\"The verification key hash for the SP1 aggregator program. This ensures that only proofs generated by a trusted SP1 program can be verified.\"},\"sp1VerifierAddress()\":{\"notice\":\"The address of the SP1 verifier contract.\"},\"verifySP1(bytes32,bytes,bytes)\":{\"notice\":\"Method to verify an aggregated proof from aligned\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/AlignedProofAggregationService.sol\":\"AlignedProofAggregationService\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/\",\":@risc0-contracts/=lib/risc0-ethereum/contracts/src/\",\":@sp1-contracts/=lib/sp1-contracts/contracts/src/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/risc0-ethereum/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/risc0-ethereum/lib/openzeppelin-contracts/\",\":risc0-ethereum/=lib/risc0-ethereum/\",\":sp1-contracts/=lib/sp1-contracts/contracts/\"],\"viaIR\":true},\"sources\":{\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abfa467c53a0d60b4d09bf04aa952b1d1d44e5766fcc053aace078d7859b8419\",\"dweb:/ipfs/QmebVTZpyNxYfKYTuLMywzEJTdc1Ca8ME4xm3kR9gQgToG\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/risc0-ethereum/contracts/src/IRiscZeroVerifier.sol\":{\"keccak256\":\"0x3e74a4b2940b88837fb8399a0012b435d1d513a622d3ea3ba58088af9ad7e2fd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b06299cc68e3c79e4eb22705bb814ce816a7fd549e78614b318ae44d35e56f9b\",\"dweb:/ipfs/QmPpX5ciRdEH6MVRVt7qYQqy7B68qxG5v3mxkgYm3kGxi5\"]},\"lib/risc0-ethereum/contracts/src/Util.sol\":{\"keccak256\":\"0x230a9a58bb2b0c68d4921ecc3672783f941890a2fa3a238dbe5188cfb7658b82\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://586cb5296c564761609ca8aaae5b1fbbdb19ab1e174f7197f602572d9e82b70c\",\"dweb:/ipfs/QmWxDmucSfg3Wgdk1rVcheDHwkziTsXWvKpKSCnxtpQBqg\"]},\"lib/sp1-contracts/contracts/src/ISP1Verifier.sol\":{\"keccak256\":\"0x9e3ba64860bea920772dcf16be7946de2a2900d80bd51e9c0771184138f4f4d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ec7230ca1fdd74edc6ab597d80bb345282aed3f0db4788ed96b4cc373ff46a3\",\"dweb:/ipfs/QmXPuSS5gzxMhFKWr1gsxBVu6WHh53ZZEvWkGgzrkM6Y7Q\"]},\"src/core/AlignedProofAggregationService.sol\":{\"keccak256\":\"0x973d8e128f3c6ca1127a628aec9d1e39acb509bc9e81f11543dec4df42d52491\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://68ab9656b6a456bbee6980f24f971ccb1d60763ebe29bad0408b5fdbf0aec880\",\"dweb:/ipfs/Qme8HwQB7fkDgnLq6f1G3bzAsJRvDygx9zjKEGCux7awP4\"]},\"src/core/IAlignedProofAggregationService.sol\":{\"keccak256\":\"0x9518c78426c492425fcc84e989cf5598a7db76561d09ba1ad22153e651236e16\",\"urls\":[\"bzz-raw://c5df5a05af7ff81519a9d60b9eaeaa84ff5f511e1f18afc954d30371a3864807\",\"dweb:/ipfs/QmXbQAC6Y4vQ99We1maf9H9YwefH2AC3LrzoZn32wBNB3g\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"OnlyAlignedAggregator"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32","indexed":false}],"type":"event","name":"AggregatedProofVerified","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"VERIFIER_MOCK_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"aggregatedProofs","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"alignedAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"address","name":"_alignedAggregatorAddress","type":"address"},{"internalType":"address","name":"_sp1VerifierAddress","type":"address"},{"internalType":"address","name":"_risc0VerifierAddress","type":"address"},{"internalType":"bytes32","name":"_risc0AggregatorProgramImageId","type":"bytes32"},{"internalType":"bytes32","name":"_sp1AggregatorProgramVKHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"risc0AggregatorProgramImageId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"risc0VerifierAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_risc0AggregatorProgramImageId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setRisc0AggregatorProgramImageId"},{"inputs":[{"internalType":"address","name":"_risc0VerifierAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRisc0VerifierAddress"},{"inputs":[{"internalType":"bytes32","name":"_sp1AggregatorProgramVKHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setSP1AggregatorProgramVKHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"sp1AggregatorProgramVKHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"sp1VerifierAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32"},{"internalType":"bytes","name":"risc0ReceiptSeal","type":"bytes"},{"internalType":"bytes","name":"risc0JournalBytes","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"verifyRisc0"},{"inputs":[{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32"},{"internalType":"bytes","name":"sp1PublicValues","type":"bytes"},{"internalType":"bytes","name":"sp1ProofBytes","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"verifySP1"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setRisc0AggregatorProgramImageId(bytes32)":{"params":{"_risc0AggregatorProgramImageId":"The new imageid for the Risc0 aggregator program"}},"setRisc0VerifierAddress(address)":{"params":{"_risc0VerifierAddress":"The new address for the Risc0 verifier contract"}},"setSP1AggregatorProgramVKHash(bytes32)":{"params":{"_sp1AggregatorProgramVKHash":"The new vk hash for the sp1 aggregator program"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"verifySP1(bytes32,bytes,bytes)":{"details":"This function is called by the aligned proof aggregator after collecting the proofs and aggregating them to be verified on-chain. We expect the blobTransactionHash to be called before","params":{"blobVersionedHash":"the versioned hash of the blob transaction that contains the leaves that compose the merkle root.","sp1ProofBytes":"Groth16 proof","sp1PublicValues":"Values used to perform the execution"}}},"version":1},"userdoc":{"kind":"user","methods":{"VERIFIER_MOCK_ADDRESS()":{"notice":"whether we are in dev mode or not if the sp1 verifier address is set to this address, then we skip verification"},"aggregatedProofs(bytes32)":{"notice":"Map the merkle root to a boolean to indicate it was verified"},"alignedAggregatorAddress()":{"notice":"The address of the Wallet that is allowed to call the verify function."},"risc0AggregatorProgramImageId()":{"notice":"The unique identifier (image ID) of the RISC Zero aggregator program. This ensures that only proofs generated by a trusted Risc0 program can be verified."},"risc0VerifierAddress()":{"notice":"The address of the Risc0 verifier contract"},"setRisc0AggregatorProgramImageId(bytes32)":{"notice":"Sets the image id of the Risc0 program"},"setRisc0VerifierAddress(address)":{"notice":"Sets the address of the Risc0 verifier contract"},"setSP1AggregatorProgramVKHash(bytes32)":{"notice":"Sets the vk hash of the sp1 program"},"sp1AggregatorProgramVKHash()":{"notice":"The verification key hash for the SP1 aggregator program. This ensures that only proofs generated by a trusted SP1 program can be verified."},"sp1VerifierAddress()":{"notice":"The address of the SP1 verifier contract."},"verifySP1(bytes32,bytes,bytes)":{"notice":"Method to verify an aggregated proof from aligned"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/","@risc0-contracts/=lib/risc0-ethereum/contracts/src/","@sp1-contracts/=lib/sp1-contracts/contracts/src/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/risc0-ethereum/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/risc0-ethereum/lib/openzeppelin-contracts/","risc0-ethereum/=lib/risc0-ethereum/","sp1-contracts/=lib/sp1-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/core/AlignedProofAggregationService.sol":"AlignedProofAggregationService"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823","urls":["bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2","dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270","urls":["bzz-raw://abfa467c53a0d60b4d09bf04aa952b1d1d44e5766fcc053aace078d7859b8419","dweb:/ipfs/QmebVTZpyNxYfKYTuLMywzEJTdc1Ca8ME4xm3kR9gQgToG"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a","urls":["bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3","dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo"],"license":"MIT"},"lib/risc0-ethereum/contracts/src/IRiscZeroVerifier.sol":{"keccak256":"0x3e74a4b2940b88837fb8399a0012b435d1d513a622d3ea3ba58088af9ad7e2fd","urls":["bzz-raw://b06299cc68e3c79e4eb22705bb814ce816a7fd549e78614b318ae44d35e56f9b","dweb:/ipfs/QmPpX5ciRdEH6MVRVt7qYQqy7B68qxG5v3mxkgYm3kGxi5"],"license":"Apache-2.0"},"lib/risc0-ethereum/contracts/src/Util.sol":{"keccak256":"0x230a9a58bb2b0c68d4921ecc3672783f941890a2fa3a238dbe5188cfb7658b82","urls":["bzz-raw://586cb5296c564761609ca8aaae5b1fbbdb19ab1e174f7197f602572d9e82b70c","dweb:/ipfs/QmWxDmucSfg3Wgdk1rVcheDHwkziTsXWvKpKSCnxtpQBqg"],"license":"Apache-2.0"},"lib/sp1-contracts/contracts/src/ISP1Verifier.sol":{"keccak256":"0x9e3ba64860bea920772dcf16be7946de2a2900d80bd51e9c0771184138f4f4d3","urls":["bzz-raw://0ec7230ca1fdd74edc6ab597d80bb345282aed3f0db4788ed96b4cc373ff46a3","dweb:/ipfs/QmXPuSS5gzxMhFKWr1gsxBVu6WHh53ZZEvWkGgzrkM6Y7Q"],"license":"MIT"},"src/core/AlignedProofAggregationService.sol":{"keccak256":"0x973d8e128f3c6ca1127a628aec9d1e39acb509bc9e81f11543dec4df42d52491","urls":["bzz-raw://68ab9656b6a456bbee6980f24f971ccb1d60763ebe29bad0408b5fdbf0aec880","dweb:/ipfs/Qme8HwQB7fkDgnLq6f1G3bzAsJRvDygx9zjKEGCux7awP4"],"license":"UNLICENSED"},"src/core/IAlignedProofAggregationService.sol":{"keccak256":"0x9518c78426c492425fcc84e989cf5598a7db76561d09ba1ad22153e651236e16","urls":["bzz-raw://c5df5a05af7ff81519a9d60b9eaeaa84ff5f511e1f18afc954d30371a3864807","dweb:/ipfs/QmXbQAC6Y4vQ99We1maf9H9YwefH2AC3LrzoZn32wBNB3g"],"license":null}},"version":1},"id":75} \ No newline at end of file diff --git a/aggregation_mode/aggregation_programs/.gitignore b/aggregation_mode/aggregation_programs/.gitignore new file mode 100644 index 0000000000..8f8c4154c4 --- /dev/null +++ b/aggregation_mode/aggregation_programs/.gitignore @@ -0,0 +1 @@ +sp1/elf/ diff --git a/aggregation_mode/aggregation_programs/Cargo.lock b/aggregation_mode/aggregation_programs/Cargo.lock new file mode 100644 index 0000000000..ad7398e17e --- /dev/null +++ b/aggregation_mode/aggregation_programs/Cargo.lock @@ -0,0 +1,1827 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy 0.7.35", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-r1cs-std", + "ark-std", +] + +[[package]] +name = "ark-crypto-primitives" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" +dependencies = [ + "ahash", + "ark-crypto-primitives-macros", + "ark-ec", + "ark-ff", + "ark-relations", + "ark-serialize", + "ark-snark", + "ark-std", + "blake2", + "derivative", + "digest", + "fnv", + "merlin", + "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "educe", + "fnv", + "hashbrown", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "arrayvec", + "digest", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.100", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "ark-groth16" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" +dependencies = [ + "ark-crypto-primitives", + "ark-ec", + "ark-ff", + "ark-poly", + "ark-relations", + "ark-serialize", + "ark-std", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff", + "ark-serialize", + "ark-std", + "educe", + "fnv", + "hashbrown", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-relations", + "ark-std", + "educe", + "num-bigint", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff", + "ark-std", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "arrayvec", + "digest", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "ark-snark" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" +dependencies = [ + "ark-ff", + "ark-relations", + "ark-serialize", + "ark-std", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytemuck" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cc" +version = "1.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "include_bytes_aligned" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom 0.2.15", + "rand 0.8.5", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.9.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "no_std_strings" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools 0.12.1", + "num-bigint", + "num-traits", + "p3-util", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand 0.8.5", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "postcard" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy 0.8.24", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bitflags 2.9.0", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "unarray", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "risc0-binfmt" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more", + "elf", + "lazy_static", + "postcard", + "rand 0.9.2", + "risc0-zkp", + "risc0-zkvm-platform", + "ruint", + "semver", + "serde", + "tracing", +] + +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-zkp", + "tracing", +] + +[[package]] +name = "risc0-circuit-recursion" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "hex", + "metal", + "risc0-core", + "risc0-zkp", + "tracing", +] + +[[package]] +name = "risc0-circuit-rv32im" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bit-vec", + "bytemuck", + "derive_more", + "paste", + "risc0-binfmt", + "risc0-core", + "risc0-zkp", + "serde", + "tracing", +] + +[[package]] +name = "risc0-core" +version = "3.0.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "bytemuck", + "rand_core 0.9.3", +] + +[[package]] +name = "risc0-groth16" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-groth16", + "ark-serialize", + "bytemuck", + "hex", + "num-bigint", + "num-traits", + "risc0-binfmt", + "risc0-zkp", + "serde", +] + +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform", +] + +[[package]] +name = "risc0-zkp" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "blake2", + "borsh", + "bytemuck", + "cfg-if", + "digest", + "hex", + "hex-literal", + "metal", + "paste", + "rand_core 0.9.3", + "risc0-core", + "risc0-zkvm-platform", + "serde", + "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkvm" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more", + "hex", + "risc0-binfmt", + "risc0-circuit-keccak", + "risc0-circuit-recursion", + "risc0-circuit-rv32im", + "risc0-core", + "risc0-groth16", + "risc0-zkos-v1compat", + "risc0-zkp", + "risc0-zkvm-platform", + "rrs-lib", + "semver", + "serde", + "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkvm-platform" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "bytemuck", + "cfg-if", + "getrandom 0.2.15", + "getrandom 0.3.3", + "libm", + "num_enum", + "paste", + "stability", +] + +[[package]] +name = "risc0_aggregation_program" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "risc0-zkvm", + "serde", + "serde_json", + "tiny-keccak", +] + +[[package]] +name = "rrs-lib" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4382d3af3a4ebdae7f64ba6edd9114fff92c89808004c4943b393377a25d001" +dependencies = [ + "downcast-rs", + "paste", +] + +[[package]] +name = "ruint" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +dependencies = [ + "borsh", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha2-v0.10.8-patch-v1#1f224388fdede7cef649bce0d63876d1a9e3f515" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1#8f6d303c0861ba7e5adcc36207c0f41fe5edaabc" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "sp1-lib" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03046db52868c1b60e8acffa0777ef6dc11ec1bbbb10b9eb612a871f69c8d3f6" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6939d6b2f63e54e5fbd208a0293027608f22511741b62fe32b6f67f6c144e0c0" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp1-zkvm" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e69fef4d915b10072461e52fd616ca2625409ede7b37a36ec910e1a52bd860" +dependencies = [ + "cfg-if", + "getrandom 0.2.15", + "lazy_static", + "libm", + "p3-baby-bear", + "p3-field", + "rand 0.8.5", + "sha2 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sp1-lib", + "sp1-primitives", +] + +[[package]] +name = "sp1_aggregation_program" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "serde", + "serde_json", + "sha2 0.10.8 (git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha2-v0.10.8-patch-v1)", + "sha3 0.10.8 (git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1)", + "sp1-zkvm", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stability" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" +dependencies = [ + "quote", + "syn 2.0.100", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "git+https://github.com/risc0/tiny-keccak?tag=tiny-keccak%2Fv2.0.2-risczero.0#8fcc866dc94dcec3e79c3b2bc8fbc51b22f2d5e1" +dependencies = [ + "crunchy", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "tracing-core", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "winnow" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive 0.8.24", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] diff --git a/aggregation_mode/aggregation_programs/Cargo.toml b/aggregation_mode/aggregation_programs/Cargo.toml new file mode 100644 index 0000000000..c7687d2849 --- /dev/null +++ b/aggregation_mode/aggregation_programs/Cargo.toml @@ -0,0 +1,10 @@ +[workspace] +name = "zkvm_aggregation_programs" +version = "0.1.0" +edition = "2021" +resolver = "2" +members = ["sp1", "risc0"] + +[patch.crates-io] +# Adding RISC Zero keccak precompile support +tiny-keccak = { git = "https://github.com/risc0/tiny-keccak", tag = "tiny-keccak/v2.0.2-risczero.0" } diff --git a/aggregation_mode/aggregation_programs/risc0/Cargo.toml b/aggregation_mode/aggregation_programs/risc0/Cargo.toml new file mode 100644 index 0000000000..88eee8d990 --- /dev/null +++ b/aggregation_mode/aggregation_programs/risc0/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "risc0_aggregation_program" +version = "0.1.0" +edition = "2021" +resolver = "2" + +[dependencies] +serde = { version = "1.0.203" } +serde_json = "1.0.117" +# Unstable feature is necessary for tiny-keccak patch, see: https://dev.risczero.com/api/zkvm/precompiles#stability +risc0-zkvm = { git = "https://github.com/risc0/risc0", tag="v3.0.3", default-features = false, features = ["unstable", "std"] } +tiny-keccak = { version = "2.0.2", features = ["keccak"] } +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"]} + +[lib] +path = "./src/lib.rs" + +[[bin]] +name = "risc0_user_proofs_aggregator_program" +path = "./src/user_proofs_aggregator_main.rs" + +[[bin]] +name = "risc0_chunk_aggregator_program" +path = "./src/chunk_aggregator_main.rs" diff --git a/aggregation_mode/aggregation_programs/risc0/src/chunk_aggregator_main.rs b/aggregation_mode/aggregation_programs/risc0/src/chunk_aggregator_main.rs new file mode 100644 index 0000000000..8fb3071a9b --- /dev/null +++ b/aggregation_mode/aggregation_programs/risc0/src/chunk_aggregator_main.rs @@ -0,0 +1,50 @@ +#![no_main] + +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; +use risc0_aggregation_program::{ChunkAggregatorInput, Hash32}; +use risc0_zkvm::guest::env; + +risc0_zkvm::guest::entry!(main); + +// Generated with `make proof_aggregator_write_program_ids` and copied from program_ids.json +pub const USER_PROOFS_AGGREGATOR_PROGRAM_IMAGE_ID: [u8; 32] = [ + 246, 152, 137, 29, 200, 71, 68, 14, 148, 211, 69, 210, 38, 88, 167, 181, 85, 190, 249, 99, 59, + 170, 43, 133, 188, 222, 95, 79, 87, 222, 76, 175, +]; + +fn main() { + let input = env::read::(); + + let mut leaves: Vec = vec![]; + + for (proof, leaves_commitment) in input.proofs_and_leaves_commitment { + let image_id = proof.image_id; + + // Ensure the aggregated chunk originates from the L1 aggregation program. + // This validation step guarantees that the proof was genuinely verified + // by this program. Without this check, a different program using the + // same public inputs could bypass verification. + assert!(image_id == USER_PROOFS_AGGREGATOR_PROGRAM_IMAGE_ID); + + // Ensure the committed root matches the root of the provided leaves + let merkle_root: [u8; 32] = proof + .public_inputs + .clone() + .try_into() + .expect("Public input to be the chunk merkle root"); + + let leaves_commitment: Vec = + leaves_commitment.into_iter().map(|el| Hash32(el)).collect(); + let merkle_tree = MerkleTree::::build(&leaves_commitment).unwrap(); + assert!(merkle_root == merkle_tree.root); + + leaves.extend(leaves_commitment); + + // finally verify the proof + env::verify(image_id, &proof.public_inputs).expect("proof to be verified correctly"); + } + + let merkle_tree = MerkleTree::::build(&leaves).unwrap(); + + env::commit_slice(&merkle_tree.root); +} diff --git a/aggregation_mode/aggregation_programs/risc0/src/lib.rs b/aggregation_mode/aggregation_programs/risc0/src/lib.rs new file mode 100644 index 0000000000..117be11578 --- /dev/null +++ b/aggregation_mode/aggregation_programs/risc0/src/lib.rs @@ -0,0 +1,124 @@ +use lambdaworks_crypto::merkle_tree::traits::IsMerkleTreeBackend; +use serde::{Deserialize, Serialize}; +use tiny_keccak::{Hasher, Keccak}; + +#[derive(Serialize, Deserialize)] +pub struct Risc0ImageIdAndPubInputs { + pub image_id: [u8; 32], + pub public_inputs: Vec, +} + +impl Risc0ImageIdAndPubInputs { + pub fn commitment(&self) -> [u8; 32] { + let mut hasher = Keccak::v256(); + for &word in &self.image_id { + hasher.update(&word.to_be_bytes()); + } + hasher.update(&self.public_inputs); + + let mut hash = [0u8; 32]; + hasher.finalize(&mut hash); + hash + } +} + +// Note: this MerkleTreeBackend is defined in three locations +// - aggregation_mode/src/aggregators/mod.rs +// - aggregation_mode/src/aggregators/risc0_aggregator.rs +// - aggregation_mode/src/aggregators/sp1_aggregator.rs +// All 3 implementations should match +// The definition on aggregator/mod.rs supports taking proofs from both Risc0 and SP1, +// Additionally, a version that takes the leaves as already hashed data is defined on: +// - crates/sdk/src/aggregation_layer/types.rs +// This one is used in the SDK since, +// the user may not have access to the proofs that he didn't submit +impl IsMerkleTreeBackend for Risc0ImageIdAndPubInputs { + type Data = Risc0ImageIdAndPubInputs; + type Node = [u8; 32]; + + fn hash_data(leaf: &Self::Data) -> Self::Node { + leaf.commitment() + } + + /// Computes a commutative Keccak256 hash, ensuring H(a, b) == H(b, a). + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#Hashes + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/Hashes.sol#L17-L19 + /// + /// Compliant with OpenZeppelin's `processProofCalldata` function from MerkleProof.sol. + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#MerkleProof + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol#L114-L128 + fn hash_new_parent(child_1: &Self::Node, child_2: &Self::Node) -> Self::Node { + let mut hasher = Keccak::v256(); + if child_1 < child_2 { + hasher.update(child_1); + hasher.update(child_2); + } else { + hasher.update(child_2); + hasher.update(child_1); + } + let mut hash = [0u8; 32]; + hasher.finalize(&mut hash); + hash + } +} + +#[derive(Serialize, Deserialize)] +pub struct Hash32(pub [u8; 32]); + +// Note: this MerkleTreeBackend is defined in three locations +// - aggregation_mode/src/aggregators/mod.rs +// - aggregation_mode/src/aggregators/risc0_aggregator.rs and +// - aggregation_mode/src/aggregators/sp1_aggregator.rs +// All 3 implementations should match +// The definition on aggregator/mod.rs supports taking proofs from both Risc0 and SP1, +// Additionally, a version that takes the leaves as already hashed data is defined on: +// - batcher/aligned-sdk/src/sdk/aggregation.rs +// This one is used in the SDK since +// the user may not have access to the proofs that they didn't submit +impl IsMerkleTreeBackend for Hash32 { + type Data = Hash32; + type Node = [u8; 32]; + + fn hash_data(leaf: &Self::Data) -> Self::Node { + leaf.0 + } + + /// Computes a commutative Keccak256 hash, ensuring H(a, b) == H(b, a). + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#Hashes + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/Hashes.sol#L17-L19 + /// + /// Compliant with OpenZeppelin's `processProofCalldata` function from MerkleProof.sol. + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#MerkleProof + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol#L114-L128 + fn hash_new_parent(child_1: &Self::Node, child_2: &Self::Node) -> Self::Node { + let mut hasher = Keccak::v256(); + if child_1 < child_2 { + hasher.update(child_1); + hasher.update(child_2); + } else { + hasher.update(child_2); + hasher.update(child_1); + } + let mut hash = [0u8; 32]; + hasher.finalize(&mut hash); + hash + } +} + +#[derive(Serialize, Deserialize)] +pub struct UserProofsAggregatorInput { + pub proofs_image_id_and_pub_inputs: Vec, +} + +#[derive(Serialize, Deserialize)] +pub struct ChunkAggregatorInput { + pub proofs_and_leaves_commitment: Vec<(Risc0ImageIdAndPubInputs, Vec<[u8; 32]>)>, +} diff --git a/aggregation_mode/aggregation_programs/risc0/src/user_proofs_aggregator_main.rs b/aggregation_mode/aggregation_programs/risc0/src/user_proofs_aggregator_main.rs new file mode 100644 index 0000000000..fcf16e0e71 --- /dev/null +++ b/aggregation_mode/aggregation_programs/risc0/src/user_proofs_aggregator_main.rs @@ -0,0 +1,22 @@ +#![no_main] + +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; +use risc0_aggregation_program::{Risc0ImageIdAndPubInputs, UserProofsAggregatorInput}; +use risc0_zkvm::guest::env; + +risc0_zkvm::guest::entry!(main); + +fn main() { + let input = env::read::(); + + for proof in &input.proofs_image_id_and_pub_inputs { + env::verify(proof.image_id.clone(), &proof.public_inputs) + .expect("proof to be verified correctly"); + } + + let merkle_tree = + MerkleTree::::build(&input.proofs_image_id_and_pub_inputs) + .unwrap(); + + env::commit_slice(&merkle_tree.root); +} diff --git a/aggregation_mode/aggregation_programs/sp1/Cargo.lock b/aggregation_mode/aggregation_programs/sp1/Cargo.lock new file mode 100644 index 0000000000..20a817514c --- /dev/null +++ b/aggregation_mode/aggregation_programs/sp1/Cargo.lock @@ -0,0 +1,734 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b094a32014c3d1f3944e4808e0e7c70e97dae0660886a8eb6dbc52d745badc" + +[[package]] +name = "cc" +version = "1.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math", + "rand", + "rand_chacha", + "serde", + "sha2 0.10.9", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom", + "rand", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools", + "num-bigint", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha2-v0.10.8-patch-v1#1f224388fdede7cef649bce0d63876d1a9e3f515" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1#8f6d303c0861ba7e5adcc36207c0f41fe5edaabc" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "sp1-lib" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03046db52868c1b60e8acffa0777ef6dc11ec1bbbb10b9eb612a871f69c8d3f6" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6939d6b2f63e54e5fbd208a0293027608f22511741b62fe32b6f67f6c144e0c0" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2 0.10.9", +] + +[[package]] +name = "sp1-zkvm" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e69fef4d915b10072461e52fd616ca2625409ede7b37a36ec910e1a52bd860" +dependencies = [ + "cfg-if", + "getrandom", + "lazy_static", + "libm", + "p3-baby-bear", + "p3-field", + "rand", + "sha2 0.10.9", + "sp1-lib", + "sp1-primitives", +] + +[[package]] +name = "sp1_aggregation_program" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8 (git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1)", + "sp1-zkvm", +] + +[[package]] +name = "syn" +version = "2.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/aggregation_mode/aggregation_programs/sp1/Cargo.toml b/aggregation_mode/aggregation_programs/sp1/Cargo.toml new file mode 100644 index 0000000000..6838c02fed --- /dev/null +++ b/aggregation_mode/aggregation_programs/sp1/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "sp1_aggregation_program" +version = "0.1.0" +edition = "2021" +resolver = "2" + +[dependencies] +sp1-zkvm = { version = "5.0.0", features = ["verify"] } +sha2 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", tag = "sha2-v0.10.8-patch-v1" } +sha3 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", tag = "sha3-v0.10.8-patch-v1" } +serde = { version = "1.0.203", features = ["derive"] } +serde_json = "1.0.117" +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"]} + +[lib] +path = "./src/lib.rs" + +[[bin]] +name = "sp1_user_proofs_aggregator_program" +path = "./src/user_proofs_aggregator_main.rs" + +[[bin]] +name = "sp1_chunk_aggregator_program" +path = "./src/chunk_aggregator_main.rs" diff --git a/aggregation_mode/aggregation_programs/sp1/src/chunk_aggregator_main.rs b/aggregation_mode/aggregation_programs/sp1/src/chunk_aggregator_main.rs new file mode 100644 index 0000000000..b3f159c9e2 --- /dev/null +++ b/aggregation_mode/aggregation_programs/sp1/src/chunk_aggregator_main.rs @@ -0,0 +1,50 @@ +#![no_main] +sp1_zkvm::entrypoint!(main); + +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; +use sha2::{Digest, Sha256}; +use sp1_aggregation_program::{ChunkAggregatorInput, Hash32}; + +// Generated with `make proof_aggregator_write_program_ids` and copied from program_ids.json +pub const USER_PROOFS_AGGREGATOR_PROGRAM_VK_HASH: [u32; 8] = [ + 1568672557, 1699162914, 9186125, 1196115399, 1766446440, 1385693297, 1976910968, 278007428, +]; + +pub fn main() { + let input = sp1_zkvm::io::read::(); + + let mut leaves = vec![]; + + // Verify the proofs. + for (proof, leaves_commitment) in input.proofs_and_leaves_commitment { + let vkey = proof.vk; + let public_values_digest = Sha256::digest(&proof.public_inputs); + + // Ensure the aggregated chunk originates from the user proofs aggregation program. + // This validation step guarantees that the proof was genuinely verified + // by this program. Without this check, a different program using the + // same public inputs could bypass verification. + assert!(proof.vk == USER_PROOFS_AGGREGATOR_PROGRAM_VK_HASH); + + let merkle_root: [u8; 32] = proof + .public_inputs + .clone() + .try_into() + .expect("Public input to be the hash of the chunk tree"); + + // Reconstruct the merkle tree and verify that the roots match + let leaves_commitment: Vec = + leaves_commitment.into_iter().map(|el| Hash32(el)).collect(); + let merkle_tree: MerkleTree = MerkleTree::build(&leaves_commitment).unwrap(); + assert!(merkle_tree.root == merkle_root); + + leaves.extend(leaves_commitment); + + sp1_zkvm::lib::verify::verify_sp1_proof(&vkey, &public_values_digest.into()); + } + + // Finally, compute the final merkle root with all the leaves + let merkle_tree: MerkleTree = MerkleTree::build(&leaves).unwrap(); + + sp1_zkvm::io::commit_slice(&merkle_tree.root); +} diff --git a/aggregation_mode/aggregation_programs/sp1/src/lib.rs b/aggregation_mode/aggregation_programs/sp1/src/lib.rs new file mode 100644 index 0000000000..bae221ddf3 --- /dev/null +++ b/aggregation_mode/aggregation_programs/sp1/src/lib.rs @@ -0,0 +1,117 @@ +use lambdaworks_crypto::merkle_tree::traits::IsMerkleTreeBackend; +use serde::{Deserialize, Serialize}; +use sha3::{Digest, Keccak256}; + +#[derive(Serialize, Deserialize)] +pub struct SP1VkAndPubInputs { + pub vk: [u32; 8], + pub public_inputs: Vec, +} + +impl SP1VkAndPubInputs { + pub fn commitment(&self) -> [u8; 32] { + let mut hasher = Keccak256::new(); + for &word in &self.vk { + hasher.update(word.to_be_bytes()); + } + hasher.update(&self.public_inputs); + hasher.finalize().into() + } +} + +// Note: this MerkleTreeBackend is defined in three locations +// - aggregation_mode/src/aggregators/mod.rs +// - aggregation_mode/src/aggregators/risc0_aggregator.rs and +// - aggregation_mode/src/aggregators/sp1_aggregator.rs +// All 3 implementations should match +// The definition on aggregator/mod.rs supports taking proofs from both Risc0 and SP1, +// Additionally, a version that takes the leaves as already hashed data is defined on: +// - crates/sdk/src/aggregation_layer/types.rs +// This one is used in the SDK since +// the user may not have access to the proofs that they didn't submit +impl IsMerkleTreeBackend for SP1VkAndPubInputs { + type Data = SP1VkAndPubInputs; + type Node = [u8; 32]; + + fn hash_data(leaf: &Self::Data) -> Self::Node { + leaf.commitment() + } + + /// Computes a commutative Keccak256 hash, ensuring H(a, b) == H(b, a). + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#Hashes + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/Hashes.sol#L17-L19 + /// + /// Compliant with OpenZeppelin's `processProofCalldata` function from MerkleProof.sol. + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#MerkleProof + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol#L114-L128 + fn hash_new_parent(child_1: &Self::Node, child_2: &Self::Node) -> Self::Node { + let mut hasher = Keccak256::new(); + if child_1 < child_2 { + hasher.update(child_1); + hasher.update(child_2); + } else { + hasher.update(child_2); + hasher.update(child_1); + } + hasher.finalize().into() + } +} + +#[derive(Serialize, Deserialize)] +pub struct Hash32(pub [u8; 32]); + +// Note: this MerkleTreeBackend is defined in three locations +// - aggregation_mode/src/aggregators/mod.rs +// - aggregation_mode/src/aggregators/risc0_aggregator.rs and +// - aggregation_mode/src/aggregators/sp1_aggregator.rs +// All 3 implementations should match +// The definition on aggregator/mod.rs supports taking proofs from both Risc0 and SP1, +// Additionally, a version that takes the leaves as already hashed data is defined on: +// - batcher/aligned-sdk/src/sdk/aggregation.rs +// This one is used in the SDK since +// the user may not have access to the proofs that they didn't submit +impl IsMerkleTreeBackend for Hash32 { + type Data = Hash32; + type Node = [u8; 32]; + + fn hash_data(leaf: &Self::Data) -> Self::Node { + leaf.0 + } + + /// Computes a commutative Keccak256 hash, ensuring H(a, b) == H(b, a). + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#Hashes + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/Hashes.sol#L17-L19 + /// + /// Compliant with OpenZeppelin's `processProofCalldata` function from MerkleProof.sol. + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#MerkleProof + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol#L114-L128 + fn hash_new_parent(child_1: &Self::Node, child_2: &Self::Node) -> Self::Node { + let mut hasher = Keccak256::new(); + if child_1 < child_2 { + hasher.update(child_1); + hasher.update(child_2); + } else { + hasher.update(child_2); + hasher.update(child_1); + } + hasher.finalize().into() + } +} + +#[derive(Serialize, Deserialize)] +pub struct UserProofsAggregatorInput { + pub proofs_vk_and_pub_inputs: Vec, +} + +#[derive(Serialize, Deserialize)] +pub struct ChunkAggregatorInput { + pub proofs_and_leaves_commitment: Vec<(SP1VkAndPubInputs, Vec<[u8; 32]>)>, +} diff --git a/aggregation_mode/aggregation_programs/sp1/src/user_proofs_aggregator_main.rs b/aggregation_mode/aggregation_programs/sp1/src/user_proofs_aggregator_main.rs new file mode 100644 index 0000000000..b0fb6b2d6e --- /dev/null +++ b/aggregation_mode/aggregation_programs/sp1/src/user_proofs_aggregator_main.rs @@ -0,0 +1,24 @@ +#![no_main] +sp1_zkvm::entrypoint!(main); + +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; +use sha2::{Digest, Sha256}; +use sp1_aggregation_program::{SP1VkAndPubInputs, UserProofsAggregatorInput}; + +pub fn main() { + let input = sp1_zkvm::io::read::(); + + // Verify the proofs. + for proof in input.proofs_vk_and_pub_inputs.iter() { + let vkey = proof.vk; + let public_values = &proof.public_inputs; + let public_values_digest = Sha256::digest(public_values); + + sp1_zkvm::lib::verify::verify_sp1_proof(&vkey, &public_values_digest.into()); + } + + let merkle_tree = + MerkleTree::::build(&input.proofs_vk_and_pub_inputs).unwrap(); + + sp1_zkvm::io::commit_slice(&merkle_tree.root); +} diff --git a/aggregation_mode/bin/write_program_image_id_vk_hash.rs b/aggregation_mode/bin/write_program_image_id_vk_hash.rs new file mode 100644 index 0000000000..1f25ee9dc8 --- /dev/null +++ b/aggregation_mode/bin/write_program_image_id_vk_hash.rs @@ -0,0 +1,53 @@ +use alloy::hex::hex; +use proof_aggregator::aggregators::{risc0_aggregator, sp1_aggregator}; +use serde_json::json; +use sp1_sdk::HashableKey; +use std::{fs, path::Path}; +use tracing::info; +use tracing_subscriber::FmtSubscriber; + +const SP1_USER_PROOFS_AGGREGATOR_PROGRAM_ELF: &[u8] = + include_bytes!("../aggregation_programs/sp1/elf/sp1_user_proofs_aggregator_program"); + +const SP1_CHUNK_AGGREGATOR_PROGRAM_ELF: &[u8] = + include_bytes!("../aggregation_programs/sp1/elf/sp1_chunk_aggregator_program"); + +fn main() { + let subscriber = FmtSubscriber::builder().finish(); + tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); + + info!("About to write sp1 programs vk hash bytes + risc0 programs image id bytes"); + let sp1_user_proofs_aggregator_vk_hash = + sp1_aggregator::vk_from_elf(SP1_USER_PROOFS_AGGREGATOR_PROGRAM_ELF).bytes32_raw(); + let sp1_user_proofs_aggregator_vk_hash_words = + sp1_aggregator::vk_from_elf(SP1_USER_PROOFS_AGGREGATOR_PROGRAM_ELF).hash_u32(); + let sp1_chunk_aggregator_vk_hash = + sp1_aggregator::vk_from_elf(SP1_CHUNK_AGGREGATOR_PROGRAM_ELF).bytes32_raw(); + + let risc0_user_proofs_aggregator_image_id_bytes = + risc0_aggregator::RISC0_USER_PROOFS_AGGREGATOR_PROGRAM_ID_BYTES; + let risc0_chunk_aggregator_image_id_bytes = + risc0_aggregator::RISC0_CHUNK_AGGREGATOR_PROGRAM_ID_BYTES; + + let sp1_user_proofs_aggregator_vk_hash_hex = hex::encode(sp1_user_proofs_aggregator_vk_hash); + let sp1_chunk_aggregator_vk_hash_hex = hex::encode(sp1_chunk_aggregator_vk_hash); + let risc0_user_proofs_aggregator_image_id_hex = + hex::encode(risc0_user_proofs_aggregator_image_id_bytes); + let risc0_chunk_aggregator_imaged_id_hex = hex::encode(risc0_chunk_aggregator_image_id_bytes); + + let dest_path = Path::new("programs_ids.json"); + + let json_data = json!({ + "sp1_user_proofs_aggregator_vk_hash": format!("0x{}", sp1_user_proofs_aggregator_vk_hash_hex), + "sp1_user_proofs_aggregator_vk_hash_words": format!("{:?}", sp1_user_proofs_aggregator_vk_hash_words), + "sp1_chunk_aggregator_vk_hash": format!("0x{}", sp1_chunk_aggregator_vk_hash_hex), + "risc0_user_proofs_aggregator_image_id": format!("0x{}", risc0_user_proofs_aggregator_image_id_hex), + "risc0_user_proofs_aggregator_image_id_bytes": format!("{:?}", risc0_user_proofs_aggregator_image_id_bytes), + "risc0_chunk_aggregator_image_id": format!("0x{}", risc0_chunk_aggregator_imaged_id_hex), + }); + + // Write to the file + fs::write(dest_path, serde_json::to_string_pretty(&json_data).unwrap()).unwrap(); + + info!("Program ids written to {:?}", dest_path); +} diff --git a/aggregation_mode/build.rs b/aggregation_mode/build.rs new file mode 100644 index 0000000000..cb6e6363b5 --- /dev/null +++ b/aggregation_mode/build.rs @@ -0,0 +1,33 @@ +use risc0_build::{DockerOptionsBuilder, GuestOptionsBuilder}; +use std::collections::HashMap; + +// Reference: https://docs.succinct.xyz/docs/sp1/writing-programs/compiling#advanced-build-options-1 +fn main() { + sp1_build::build_program_with_args("./aggregation_programs/sp1", { + sp1_build::BuildArgs { + output_directory: Some("./aggregation_programs/sp1/elf".to_string()), + binaries: vec![ + "sp1_user_proofs_aggregator_program".into(), + "sp1_chunk_aggregator_program".into(), + ], + // We use Docker to generate a reproducible ELF that will be identical across all platforms + // (https://docs.succinct.xyz/docs/sp1/writing-programs/compiling#production-builds) + docker: true, + ..Default::default() + } + }); + + // With this containerized build process, we ensure that all builds of the guest code, + // regardless of the machine or local environment, will produce the same ImageID + let docker_options = DockerOptionsBuilder::default().build().unwrap(); + // Reference: https://github.com/risc0/risc0/blob/main/risc0/build/src/config.rs#L73-L90 + let guest_options = GuestOptionsBuilder::default() + .use_docker(docker_options) + .build() + .unwrap(); + + risc0_build::embed_methods_with_options(HashMap::from([( + "risc0_aggregation_program", + guest_options, + )])); +} diff --git a/aggregation_mode/programs_ids.json b/aggregation_mode/programs_ids.json new file mode 100644 index 0000000000..0cb823425d --- /dev/null +++ b/aggregation_mode/programs_ids.json @@ -0,0 +1,8 @@ +{ + "risc0_chunk_aggregator_image_id": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97", + "risc0_user_proofs_aggregator_image_id": "0xf698891dc847440e94d345d22658a7b555bef9633baa2b85bcde5f4f57de4caf", + "risc0_user_proofs_aggregator_image_id_bytes": "[246, 152, 137, 29, 200, 71, 68, 14, 148, 211, 69, 210, 38, 88, 167, 181, 85, 190, 249, 99, 59, 170, 43, 133, 188, 222, 95, 79, 87, 222, 76, 175]", + "sp1_chunk_aggregator_vk_hash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "sp1_user_proofs_aggregator_vk_hash": "0x00bb00165b951cac8804615a6c74b45c7d293aad14a6001c7aeaa23c10920e84", + "sp1_user_proofs_aggregator_vk_hash_words": "[1568672557, 1699162914, 9186125, 1196115399, 1766446440, 1385693297, 1976910968, 278007428]" +} \ No newline at end of file diff --git a/aggregation_mode/scripts/build_programs.sh b/aggregation_mode/scripts/build_programs.sh new file mode 100755 index 0000000000..01c9cc422d --- /dev/null +++ b/aggregation_mode/scripts/build_programs.sh @@ -0,0 +1,18 @@ +# Get the program ids +cargo run --release --bin write_program_image_id_vk_hash + +# Copy the user proofs aggregator program ids and put them on the root aggregator +SP1_USER_PROOFS_AGGREGATOR_VK_HASH_WORDS=`jq -r .sp1_user_proofs_aggregator_vk_hash_words programs_ids.json` +SP1_LINE="pub const USER_PROOFS_AGGREGATOR_PROGRAM_VK_HASH: [u32; 8] = $SP1_USER_PROOFS_AGGREGATOR_VK_HASH_WORDS;\n" +sed -i '' -e "/^pub const USER_PROOFS_AGGREGATOR_PROGRAM_VK_HASH.*/{N;N;s|.*|$SP1_LINE|;}" aggregation_programs/sp1/src/chunk_aggregator_main.rs + +RISC0_USER_PROOFS_AGGREGATOR_IMAGE_ID_BYTES=`jq -r .risc0_user_proofs_aggregator_image_id_bytes programs_ids.json` +RISC0_LINE="pub const USER_PROOFS_AGGREGATOR_PROGRAM_IMAGE_ID: [u8; 32] = $RISC0_USER_PROOFS_AGGREGATOR_IMAGE_ID_BYTES;\n" +sed -i '' -e "/^pub const USER_PROOFS_AGGREGATOR_PROGRAM_IMAGE_ID.*/{N;N;N;s|.*|$RISC0_LINE|;}" aggregation_programs/risc0/src/chunk_aggregator_main.rs + +cd aggregation_programs +cargo fmt --all + +cd .. +# Re compute the program ids +cargo run --release --bin write_program_image_id_vk_hash diff --git a/aggregation_mode/src/aggregators/mod.rs b/aggregation_mode/src/aggregators/mod.rs new file mode 100644 index 0000000000..45b9a7df0e --- /dev/null +++ b/aggregation_mode/src/aggregators/mod.rs @@ -0,0 +1,217 @@ +pub mod risc0_aggregator; +pub mod sp1_aggregator; + +use std::fmt::Display; + +use lambdaworks_crypto::merkle_tree::traits::IsMerkleTreeBackend; +use risc0_aggregator::{Risc0AggregationError, Risc0ProofReceiptAndImageId}; +use sha3::{Digest, Keccak256}; +use sp1_aggregator::{SP1AggregationError, SP1ProofWithPubValuesAndElf}; +use tracing::info; + +#[derive(Clone, Debug)] +pub enum ZKVMEngine { + SP1, + RISC0, +} + +impl Display for ZKVMEngine { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::SP1 => write!(f, "SP1"), + Self::RISC0 => write!(f, "Risc0"), + } + } +} + +#[derive(Debug)] +pub enum ProofAggregationError { + SP1Aggregation(SP1AggregationError), + Risc0Aggregation(Risc0AggregationError), + PublicInputsDeserialization, +} + +impl ZKVMEngine { + pub fn from_env() -> Option { + let key = "AGGREGATOR"; + let value = std::env::var(key).ok()?; + let engine = match value.as_str() { + "sp1" => ZKVMEngine::SP1, + "risc0" => ZKVMEngine::RISC0, + _ => panic!("Invalid AGGREGATOR, possible options are: sp1|risc0"), + }; + + Some(engine) + } + + /// Aggregates a list of [`AlignedProof`]s into a single [`AlignedProof`]. + /// + /// Returns a tuple containing: + /// - The aggregated [`AlignedProof`], representing the combined proof + /// - The Merkle root computed within the ZKVM, exposed as a public input + /// + /// This function performs multi-level proof aggregation. It splits the input proofs into chunks of + /// `proofs_per_chunk`` and uses the `user_proofs_aggregator` to aggregate the proofs. + /// Then, the `chunk_aggregator` takes the resulting proofs and their corresponding leaves commitments + /// to produce the final aggregated proof. + pub fn aggregate_proofs( + &self, + proofs: Vec, + proofs_per_chunk: u16, + ) -> Result<(AlignedProof, [u8; 32]), ProofAggregationError> { + let res = match self { + ZKVMEngine::SP1 => { + let proofs: Vec = proofs + .into_iter() + // Fetcher already filtered for SP1 + // We do this for type casting, as to avoid using generics + // or macros in this function + .filter_map(|proof| match proof { + AlignedProof::SP1(proof) => Some(*proof), + _ => None, + }) + .collect(); + + let chunks = proofs.chunks(proofs_per_chunk as usize); + info!( + "Total proofs to aggregate {}. They aggregation will be performed in {} chunks (i.e {} proofs per chunk)", + proofs.len(), + chunks.len(), + proofs_per_chunk, + ); + + let mut agg_proofs: Vec<(SP1ProofWithPubValuesAndElf, Vec<[u8; 32]>)> = vec![]; + for (i, chunk) in chunks.enumerate() { + let leaves_commitment = + chunk.iter().map(|e| e.hash_vk_and_pub_inputs()).collect(); + let agg_proof = sp1_aggregator::run_user_proofs_aggregator(chunk) + .map_err(ProofAggregationError::SP1Aggregation)?; + agg_proofs.push((agg_proof, leaves_commitment)); + + info!("Chunk number {} has been aggregated", i); + } + + info!("All chunks have been aggregated, performing last aggregation..."); + let mut agg_proof = sp1_aggregator::run_chunk_aggregator(&agg_proofs) + .map_err(ProofAggregationError::SP1Aggregation)?; + + let merkle_root: [u8; 32] = agg_proof + .proof_with_pub_values + .public_values + .read::<[u8; 32]>(); + + (AlignedProof::SP1(agg_proof.into()), merkle_root) + } + ZKVMEngine::RISC0 => { + let proofs: Vec = proofs + .into_iter() + // Fetcher already filtered for Risc0 + // We do this for type casting, as to avoid using generics + // or macros in this function + .filter_map(|proof| match proof { + AlignedProof::Risc0(proof) => Some(*proof), + _ => None, + }) + .collect(); + + let chunks = proofs.chunks(proofs_per_chunk as usize); + info!( + "Total proofs to aggregate {}. They aggregation will be performed in {} chunks (i.e {} proofs per chunk)", + proofs.len(), + chunks.len(), + proofs_per_chunk, + ); + + let mut agg_proofs: Vec<(Risc0ProofReceiptAndImageId, Vec<[u8; 32]>)> = vec![]; + for (i, chunk) in chunks.enumerate() { + let leaves_commitment = chunk + .iter() + .map(|e| e.hash_image_id_and_public_inputs()) + .collect(); + let agg_proof = risc0_aggregator::run_user_proofs_aggregator(chunk) + .map_err(ProofAggregationError::Risc0Aggregation)?; + agg_proofs.push((agg_proof, leaves_commitment)); + + info!("Chunk number {} has been aggregated", i); + } + + info!("All chunks have been aggregated, performing last aggregation..."); + let agg_proof = risc0_aggregator::run_chunk_aggregator(&agg_proofs) + .map_err(ProofAggregationError::Risc0Aggregation)?; + + // Note: journal.decode() won't work here as risc0 deserializer works under u32 words + let public_input_bytes = agg_proof.receipt.journal.as_ref(); + let merkle_root: [u8; 32] = public_input_bytes + .try_into() + .map_err(|_| ProofAggregationError::PublicInputsDeserialization)?; + + (AlignedProof::Risc0(agg_proof.into()), merkle_root) + } + }; + + Ok(res) + } +} + +pub enum AlignedProof { + SP1(Box), + Risc0(Box), +} + +impl AlignedProof { + pub fn commitment(&self) -> [u8; 32] { + match self { + AlignedProof::SP1(proof) => proof.hash_vk_and_pub_inputs(), + AlignedProof::Risc0(proof) => proof.hash_image_id_and_public_inputs(), + } + } +} + +/// Merkle tree commitment for aligned proofs. +/// +/// Each leaf node (representing a proof) is committed by hashing: +/// — The program id: the verification key hash in SP1 or the image ID in RISC Zero +/// — Public inputs. +/// +/// Intermediate nodes in the tree are formed by computing the keccak pairs of child nodes. +// Note: this MerkleTreeBackend is defined in three locations +// - aggregation_mode/src/aggregators/mod.rs +// - aggregation_mode/src/aggregators/risc0_aggregator.rs +// - aggregation_mode/src/aggregators/sp1_aggregator.rs +// All 3 implementations should match +// The definition on aggregator/mod.rs supports taking proofs from both Risc0 and SP1, +// Additionally, a version that takes the leaves as already hashed data is defined on: +// - crates/sdk/src/aggregation_layer/types.rs +// This one is used in the SDK since, +// the user may not have access to the proofs that he didn't submit +impl IsMerkleTreeBackend for AlignedProof { + type Data = AlignedProof; + type Node = [u8; 32]; + + fn hash_data(leaf: &Self::Data) -> Self::Node { + leaf.commitment() + } + + /// Computes a commutative Keccak256 hash, ensuring H(a, b) == H(b, a). + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#Hashes + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/Hashes.sol#L17-L19 + /// + /// Compliant with OpenZeppelin's `processProofCalldata` function from MerkleProof.sol. + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#MerkleProof + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol#L114-L128 + fn hash_new_parent(child_1: &Self::Node, child_2: &Self::Node) -> Self::Node { + let mut hasher = Keccak256::new(); + if child_1 < child_2 { + hasher.update(child_1); + hasher.update(child_2); + } else { + hasher.update(child_2); + hasher.update(child_1); + } + hasher.finalize().into() + } +} diff --git a/aggregation_mode/src/aggregators/risc0_aggregator.rs b/aggregation_mode/src/aggregators/risc0_aggregator.rs new file mode 100644 index 0000000000..30ffff8568 --- /dev/null +++ b/aggregation_mode/src/aggregators/risc0_aggregator.rs @@ -0,0 +1,190 @@ +include!(concat!(env!("OUT_DIR"), "/methods.rs")); + +use risc0_zkvm::{default_prover, ExecutorEnv, ProverOpts, Receipt}; +use sha3::{Digest, Keccak256}; + +pub struct Risc0ProofReceiptAndImageId { + pub image_id: [u8; 32], + pub receipt: Receipt, +} + +#[derive(Debug)] +pub enum AlignedRisc0VerificationError { + Verification(String), + UnsupportedProof, +} + +impl Risc0ProofReceiptAndImageId { + /// Constructs a new instance of the struct, verifying the provided receipt against the given image ID. + pub fn new( + image_id: [u8; 32], + receipt: Receipt, + ) -> Result { + let is_supported_proof = + receipt.inner.composite().is_ok() || receipt.inner.succinct().is_ok(); + + if is_supported_proof { + receipt + .verify(image_id) + .map_err(|e| AlignedRisc0VerificationError::Verification(e.to_string()))?; + } else { + return Err(AlignedRisc0VerificationError::UnsupportedProof); + } + + Ok(Self { image_id, receipt }) + } + + pub fn public_inputs(&self) -> &Vec { + &self.receipt.journal.bytes + } +} + +#[derive(Debug)] +pub enum Risc0AggregationError { + WriteInput(String), + BuildExecutor(String), + Prove(String), + Verification(String), +} + +/// Byte representation of the user proofs aggregator image_id, converted from `[u32; 8]` to `[u8; 32]`. +pub const RISC0_USER_PROOFS_AGGREGATOR_PROGRAM_ID_BYTES: [u8; 32] = { + let mut res = [0u8; 32]; + let mut i = 0; + while i < 8 { + let bytes = RISC0_USER_PROOFS_AGGREGATOR_PROGRAM_ID[i].to_le_bytes(); + res[i * 4] = bytes[0]; + res[i * 4 + 1] = bytes[1]; + res[i * 4 + 2] = bytes[2]; + res[i * 4 + 3] = bytes[3]; + i += 1; + } + res +}; + +/// Byte representation of the chunk aggregator image_id, converted from `[u32; 8]` to `[u8; 32]`. +pub const RISC0_CHUNK_AGGREGATOR_PROGRAM_ID_BYTES: [u8; 32] = { + let mut res = [0u8; 32]; + let mut i = 0; + while i < 8 { + let bytes = RISC0_CHUNK_AGGREGATOR_PROGRAM_ID[i].to_le_bytes(); + res[i * 4] = bytes[0]; + res[i * 4 + 1] = bytes[1]; + res[i * 4 + 2] = bytes[2]; + res[i * 4 + 3] = bytes[3]; + i += 1; + } + res +}; + +impl Risc0ProofReceiptAndImageId { + pub fn hash_image_id_and_public_inputs(&self) -> [u8; 32] { + let mut hasher = Keccak256::new(); + hasher.update(self.image_id); + hasher.update(self.public_inputs()); + hasher.finalize().into() + } +} + +pub(crate) fn run_user_proofs_aggregator( + proofs: &[Risc0ProofReceiptAndImageId], +) -> Result { + let mut env_builder = ExecutorEnv::builder(); + + // write assumptions and proof image id + pub inputs + let mut proofs_image_id_and_pub_inputs = vec![]; + for proof in proofs { + proofs_image_id_and_pub_inputs.push(risc0_aggregation_program::Risc0ImageIdAndPubInputs { + image_id: proof.image_id, + public_inputs: proof.receipt.journal.bytes.clone(), + }); + env_builder.add_assumption(proof.receipt.clone()); + } + + // write input data + let input = risc0_aggregation_program::UserProofsAggregatorInput { + proofs_image_id_and_pub_inputs, + }; + env_builder + .write(&input) + .map_err(|e| Risc0AggregationError::WriteInput(e.to_string()))?; + + let env = env_builder + .build() + .map_err(|e| Risc0AggregationError::BuildExecutor(e.to_string()))?; + + let prover = default_prover(); + + let receipt = prover + .prove_with_opts( + env, + RISC0_USER_PROOFS_AGGREGATOR_PROGRAM_ELF, + &ProverOpts::composite(), + ) + .map_err(|e| Risc0AggregationError::Prove(e.to_string()))? + .receipt; + + receipt + .verify(RISC0_USER_PROOFS_AGGREGATOR_PROGRAM_ID) + .map_err(|e| Risc0AggregationError::Verification(e.to_string()))?; + + let proof = Risc0ProofReceiptAndImageId { + image_id: RISC0_USER_PROOFS_AGGREGATOR_PROGRAM_ID_BYTES, + receipt, + }; + + Ok(proof) +} + +pub(crate) fn run_chunk_aggregator( + proofs: &[(Risc0ProofReceiptAndImageId, Vec<[u8; 32]>)], +) -> Result { + let mut env_builder = ExecutorEnv::builder(); + + // write assumptions and proof image id + pub inputs + let mut proofs_and_leaves_commitment = vec![]; + for (proof, leaves_commitment) in proofs { + proofs_and_leaves_commitment.push(( + risc0_aggregation_program::Risc0ImageIdAndPubInputs { + image_id: proof.image_id, + public_inputs: proof.receipt.journal.bytes.clone(), + }, + leaves_commitment.clone(), + )); + env_builder.add_assumption(proof.receipt.clone()); + } + + // write input data + let input = risc0_aggregation_program::ChunkAggregatorInput { + proofs_and_leaves_commitment, + }; + env_builder + .write(&input) + .map_err(|e| Risc0AggregationError::WriteInput(e.to_string()))?; + + let env = env_builder + .build() + .map_err(|e| Risc0AggregationError::BuildExecutor(e.to_string()))?; + + let prover = default_prover(); + + let receipt = prover + .prove_with_opts( + env, + RISC0_CHUNK_AGGREGATOR_PROGRAM_ELF, + &ProverOpts::groth16(), + ) + .map_err(|e| Risc0AggregationError::Prove(e.to_string()))? + .receipt; + + receipt + .verify(RISC0_CHUNK_AGGREGATOR_PROGRAM_ID) + .map_err(|e| Risc0AggregationError::Verification(e.to_string()))?; + + let proof = Risc0ProofReceiptAndImageId { + image_id: RISC0_CHUNK_AGGREGATOR_PROGRAM_ID_BYTES, + receipt, + }; + + Ok(proof) +} diff --git a/aggregation_mode/src/aggregators/sp1_aggregator.rs b/aggregation_mode/src/aggregators/sp1_aggregator.rs new file mode 100644 index 0000000000..528cd82131 --- /dev/null +++ b/aggregation_mode/src/aggregators/sp1_aggregator.rs @@ -0,0 +1,218 @@ +use std::sync::LazyLock; + +use alloy::primitives::Keccak256; +use sp1_aggregation_program::SP1VkAndPubInputs; +#[cfg(feature = "prove")] +use sp1_sdk::EnvProver; +use sp1_sdk::{ + CpuProver, HashableKey, Prover, ProverClient, SP1ProofWithPublicValues, SP1Stdin, + SP1VerifyingKey, +}; + +const CHUNK_PROGRAM_ELF: &[u8] = + include_bytes!("../../aggregation_programs/sp1/elf/sp1_chunk_aggregator_program"); + +const USER_PROOFS_PROGRAM_ELF: &[u8] = + include_bytes!("../../aggregation_programs/sp1/elf/sp1_user_proofs_aggregator_program"); + +#[cfg(feature = "prove")] +static SP1_PROVER_CLIENT: LazyLock = LazyLock::new(ProverClient::from_env); + +/// Separate prover instance configured to always use the CPU. +/// This is used for verification, which is performed in parallel and +/// cannot be done on the GPU. +static SP1_PROVER_CLIENT_CPU: LazyLock = + LazyLock::new(|| ProverClient::builder().cpu().build()); + +pub struct SP1ProofWithPubValuesAndElf { + pub proof_with_pub_values: SP1ProofWithPublicValues, + pub elf: Vec, + pub vk: SP1VerifyingKey, +} + +#[derive(Debug)] +pub enum AlignedSP1VerificationError { + Verification(sp1_sdk::SP1VerificationError), + UnsupportedProof, +} + +impl SP1ProofWithPubValuesAndElf { + /// Constructs a new instance of the struct by verifying a given SP1 proof with its public values. + pub fn new( + proof_with_pub_values: SP1ProofWithPublicValues, + elf: Vec, + ) -> Result { + let client = &*SP1_PROVER_CLIENT_CPU; + + let (_pk, vk) = client.setup(&elf); + + // only sp1 compressed proofs are supported for aggregation now + match proof_with_pub_values.proof { + sp1_sdk::SP1Proof::Compressed(_) => client + .verify(&proof_with_pub_values, &vk) + .map_err(AlignedSP1VerificationError::Verification), + _ => Err(AlignedSP1VerificationError::UnsupportedProof), + }?; + + Ok(Self { + proof_with_pub_values, + elf, + vk, + }) + } + + pub fn hash_vk_and_pub_inputs(&self) -> [u8; 32] { + let mut hasher = Keccak256::new(); + let vk_bytes = &self.vk.hash_bytes(); + hasher.update(vk_bytes); + hasher.update(self.proof_with_pub_values.public_values.as_slice()); + hasher.finalize().into() + } +} + +#[derive(Debug)] +pub enum SP1AggregationError { + Verification(sp1_sdk::SP1VerificationError), + Prove(String), + UnsupportedProof, +} + +pub(crate) fn run_user_proofs_aggregator( + proofs: &[SP1ProofWithPubValuesAndElf], +) -> Result { + let mut stdin = SP1Stdin::new(); + + let mut program_input = sp1_aggregation_program::UserProofsAggregatorInput { + proofs_vk_and_pub_inputs: vec![], + }; + + // write vk + public inputs + for proof in proofs.iter() { + program_input + .proofs_vk_and_pub_inputs + .push(SP1VkAndPubInputs { + public_inputs: proof.proof_with_pub_values.public_values.to_vec(), + vk: proof.vk.hash_u32(), + }); + } + + stdin.write(&program_input); + + // write proofs + for input_proof in proofs.iter() { + let vk = input_proof.vk.vk.clone(); + // we only support sp1 Compressed proofs for now + let sp1_sdk::SP1Proof::Compressed(proof) = input_proof.proof_with_pub_values.proof.clone() + else { + return Err(SP1AggregationError::UnsupportedProof); + }; + + stdin.write_proof(*proof, vk); + } + + #[cfg(feature = "prove")] + let client = &*SP1_PROVER_CLIENT; + // If not in prove mode, create a mock proof via mock client + #[cfg(not(feature = "prove"))] + let client = ProverClient::builder().mock().build(); + + let (pk, vk) = client.setup(USER_PROOFS_PROGRAM_ELF); + + let proof = client + .prove(&pk, &stdin) + .compressed() + .run() + .map_err(|e| SP1AggregationError::Prove(e.to_string()))?; + + // a sanity check, vm already performs it + client + .verify(&proof, &vk) + .map_err(SP1AggregationError::Verification)?; + + let proof_and_elf = SP1ProofWithPubValuesAndElf { + proof_with_pub_values: proof, + elf: USER_PROOFS_PROGRAM_ELF.to_vec(), + vk, + }; + + Ok(proof_and_elf) +} + +pub(crate) fn run_chunk_aggregator( + proofs: &[(SP1ProofWithPubValuesAndElf, Vec<[u8; 32]>)], +) -> Result { + let mut stdin = SP1Stdin::new(); + + let mut program_input = sp1_aggregation_program::ChunkAggregatorInput { + proofs_and_leaves_commitment: vec![], + }; + + // write vk + public inputs + for (proof, leaves_commitment) in proofs.iter() { + program_input.proofs_and_leaves_commitment.push(( + SP1VkAndPubInputs { + public_inputs: proof.proof_with_pub_values.public_values.to_vec(), + vk: proof.vk.hash_u32(), + }, + leaves_commitment.clone(), + )); + } + + stdin.write(&program_input); + + // write proofs + for (input_proof, _) in proofs.iter() { + let vk = input_proof.vk.vk.clone(); + // we only support sp1 Compressed proofs for now + let sp1_sdk::SP1Proof::Compressed(proof) = input_proof.proof_with_pub_values.proof.clone() + else { + return Err(SP1AggregationError::UnsupportedProof); + }; + + stdin.write_proof(*proof, vk); + } + + #[cfg(feature = "prove")] + let client = &*SP1_PROVER_CLIENT; + // If not in prove mode, create a mock proof via mock client + #[cfg(not(feature = "prove"))] + let client = ProverClient::builder().mock().build(); + + let (pk, vk) = client.setup(CHUNK_PROGRAM_ELF); + + #[cfg(feature = "prove")] + let proof = client + .prove(&pk, &stdin) + .groth16() + .run() + .map_err(|e| SP1AggregationError::Prove(e.to_string()))?; + #[cfg(not(feature = "prove"))] + let proof = client + .prove(&pk, &stdin) + // In mock mode, deferred proof verification must be disabled to avoid recursive proof verification. + // This is because chunk proofs are mocked, and enabling verification would cause a panic. + // See: https://docs.succinct.xyz/docs/sp1/writing-programs/proof-aggregation#proof-aggregation-in-mock-mode + .deferred_proof_verification(false) + .groth16() + .run() + .map_err(|e| SP1AggregationError::Prove(e.to_string()))?; + + // a sanity check, vm already performs it + client + .verify(&proof, &vk) + .map_err(SP1AggregationError::Verification)?; + + let proof_and_elf = SP1ProofWithPubValuesAndElf { + proof_with_pub_values: proof, + elf: CHUNK_PROGRAM_ELF.to_vec(), + vk, + }; + + Ok(proof_and_elf) +} + +pub fn vk_from_elf(elf: &[u8]) -> SP1VerifyingKey { + let prover = &*SP1_PROVER_CLIENT_CPU; + let (_, vk) = prover.setup(elf); + vk +} diff --git a/aggregation_mode/src/backend/config.rs b/aggregation_mode/src/backend/config.rs new file mode 100644 index 0000000000..c56c02aaf2 --- /dev/null +++ b/aggregation_mode/src/backend/config.rs @@ -0,0 +1,64 @@ +use serde::{Deserialize, Serialize}; +use std::{fs::File, fs::OpenOptions, io::Read, io::Write}; + +#[derive(Debug, Deserialize, Serialize)] +pub struct ECDSAConfig { + pub private_key_store_path: String, + pub private_key_store_password: String, +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct LastAggregatedBlock { + pub last_aggregated_block: u64, +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct Config { + pub eth_rpc_url: String, + pub eth_ws_url: String, + pub max_proofs_in_queue: u16, + pub proof_aggregation_service_address: String, + pub aligned_service_manager_address: String, + pub last_aggregated_block_filepath: String, + pub ecdsa: ECDSAConfig, + pub proofs_per_chunk: u16, + pub total_proofs_limit: u16, +} + +impl Config { + pub fn from_file(file_path: &str) -> Result> { + let mut file = File::open(file_path)?; + let mut contents = String::new(); + file.read_to_string(&mut contents)?; + let config: Config = serde_yaml::from_str(&contents)?; + Ok(config) + } + + pub fn get_last_aggregated_block(&self) -> Result> { + let mut file = File::open(&self.last_aggregated_block_filepath)?; + let mut contents = String::new(); + file.read_to_string(&mut contents)?; + let lab: LastAggregatedBlock = serde_json::from_str(&contents)?; + Ok(lab.last_aggregated_block) + } + + pub fn update_last_aggregated_block( + &self, + last_aggregated_block: u64, + ) -> Result<(), Box> { + let last_aggregated_block_struct = LastAggregatedBlock { + last_aggregated_block, + }; + + let mut file = OpenOptions::new() + .write(true) + .truncate(true) + .create(true) + .open(&self.last_aggregated_block_filepath)?; + + let content = serde_json::to_string(&last_aggregated_block_struct)?; + file.write_all(content.as_bytes())?; + + Ok(()) + } +} diff --git a/aggregation_mode/src/backend/fetcher.rs b/aggregation_mode/src/backend/fetcher.rs new file mode 100644 index 0000000000..38cd34ca5a --- /dev/null +++ b/aggregation_mode/src/backend/fetcher.rs @@ -0,0 +1,191 @@ +use std::str::FromStr; + +use super::{ + config::Config, + types::{AlignedLayerServiceManager, AlignedLayerServiceManagerContract, RPCProvider}, +}; +use crate::{ + aggregators::{ + risc0_aggregator::Risc0ProofReceiptAndImageId, sp1_aggregator::SP1ProofWithPubValuesAndElf, + AlignedProof, ZKVMEngine, + }, + backend::s3::get_aligned_batch_from_s3_with_multiple_urls, +}; +use aligned_sdk::common::types::ProvingSystemId; +use alloy::{ + primitives::Address, + providers::{Provider, ProviderBuilder}, +}; +use rayon::prelude::*; +use risc0_zkvm::Receipt; +use tracing::{error, info}; + +#[derive(Debug)] +pub enum ProofsFetcherError { + GetLogs(String), + GetBlockNumber(String), +} + +pub struct ProofsFetcher { + rpc_provider: RPCProvider, + aligned_service_manager: AlignedLayerServiceManagerContract, + last_aggregated_block: u64, +} + +impl ProofsFetcher { + pub fn new(config: &Config) -> Self { + let rpc_url = config.eth_rpc_url.parse().expect("RPC URL should be valid"); + let rpc_provider = ProviderBuilder::new().connect_http(rpc_url); + let aligned_service_manager = AlignedLayerServiceManager::new( + Address::from_str(&config.aligned_service_manager_address) + .expect("AlignedProofAggregationService address should be valid"), + rpc_provider.clone(), + ); + + let last_aggregated_block = config.get_last_aggregated_block().unwrap(); + + Self { + rpc_provider, + aligned_service_manager, + last_aggregated_block, + } + } + + /// Retrieves batches from the aligned fast mode since the last processed block, + /// filtering for proofs compatible with the specified zkVM engine. + pub async fn fetch( + &mut self, + engine: ZKVMEngine, + limit: u16, + ) -> Result, ProofsFetcherError> { + // Get current block + let current_block = self + .rpc_provider + .get_block_number() + .await + .map_err(|e| ProofsFetcherError::GetBlockNumber(e.to_string()))?; + + if current_block < self.last_aggregated_block { + return Err(ProofsFetcherError::GetBlockNumber( + "Invalid last processed block".to_string(), + )); + } + + info!( + "Fetching proofs from batch logs starting from block number {} upto {}", + self.last_aggregated_block, current_block + ); + + // Subscribe to NewBatch event from AlignedServiceManager + let logs = self + .aligned_service_manager + .NewBatchV3_filter() + .from_block(self.last_aggregated_block) + .to_block(current_block) + .query() + .await + .map_err(|e| ProofsFetcherError::GetLogs(e.to_string()))?; + + info!("Logs collected {}", logs.len()); + + let mut proofs = vec![]; + + for (batch, log) in logs { + info!( + "New batch submitted, about to process. Batch merkle root {}...", + batch.batchMerkleRoot + ); + + // Download batch proofs from s3 + let data = + match get_aligned_batch_from_s3_with_multiple_urls(batch.batchDataPointer).await { + Ok(data) => data, + Err(err) => { + error!("Error while downloading proofs from s3. Err {:?}", err); + continue; + } + }; + + info!("Data downloaded from S3, number of proofs {}", data.len()); + + // Filter compatible proofs to be aggregated and push to queue + let proofs_to_add: Vec = match engine { + ZKVMEngine::SP1 => data + .into_par_iter() + .filter_map(|p| { + if p.proving_system != ProvingSystemId::SP1 { + return None; + }; + + let elf = p.vm_program_code?; + let proof_with_pub_values = bincode::deserialize(&p.proof).ok()?; + let sp1_proof = + SP1ProofWithPubValuesAndElf::new(proof_with_pub_values, elf); + + match sp1_proof { + Ok(proof) => Some(AlignedProof::SP1(proof.into())), + Err(err) => { + error!("Could not add proof, verification failed: {:?}", err); + None + } + } + }) + .collect(), + ZKVMEngine::RISC0 => data + .into_par_iter() + .filter_map(|p| { + if p.proving_system != ProvingSystemId::Risc0 { + return None; + }; + + let mut image_id = [0u8; 32]; + image_id.copy_from_slice(p.vm_program_code?.as_slice()); + let public_inputs = p.pub_input?; + let inner_receipt: risc0_zkvm::InnerReceipt = + bincode::deserialize(&p.proof).ok()?; + + let receipt = Receipt::new(inner_receipt, public_inputs); + let risc0_proof = Risc0ProofReceiptAndImageId::new(image_id, receipt); + + match risc0_proof { + Ok(proof) => Some(AlignedProof::Risc0(proof.into())), + Err(err) => { + error!("Could not add proof, verification failed: {:?}", err); + None + } + } + }) + .collect(), + }; + + info!( + "{} Proofs filtered, compatible proofs found {}", + engine, + proofs_to_add.len() + ); + + if (proofs.len() + proofs_to_add.len()) > (limit as usize) { + let log_block_number = log.block_number.unwrap(); + info!( + "Limit of {} proofs reached, stopping at block number {}, which is {} from current block", + limit, log_block_number, current_block - log_block_number + ); + // Update last processed block to this log block number + // So the next aggregation starts at this block + self.last_aggregated_block = log_block_number; + return Ok(proofs); + } + + proofs.extend(proofs_to_add); + } + + // Update last processed block after collecting logs + self.last_aggregated_block = current_block; + + Ok(proofs) + } + + pub fn get_last_aggregated_block(&self) -> u64 { + self.last_aggregated_block + } +} diff --git a/aggregation_mode/src/backend/merkle_tree.rs b/aggregation_mode/src/backend/merkle_tree.rs new file mode 100644 index 0000000000..6aaa46b50a --- /dev/null +++ b/aggregation_mode/src/backend/merkle_tree.rs @@ -0,0 +1,12 @@ +use crate::aggregators::AlignedProof; +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; + +/// Returns (merkle_root, leaves) +pub fn compute_proofs_merkle_root( + proofs: &[AlignedProof], +) -> Option<(MerkleTree, Vec<[u8; 32]>)> { + let merkle_tree: MerkleTree = MerkleTree::build(proofs)?; + let leaves: Vec<[u8; 32]> = proofs.iter().map(|proof| proof.commitment()).collect(); + + Some((merkle_tree, leaves)) +} diff --git a/aggregation_mode/src/backend/mod.rs b/aggregation_mode/src/backend/mod.rs new file mode 100644 index 0000000000..570d4bb822 --- /dev/null +++ b/aggregation_mode/src/backend/mod.rs @@ -0,0 +1,262 @@ +pub mod config; +pub mod fetcher; +mod merkle_tree; +mod retry; +mod s3; +mod types; + +use crate::aggregators::{AlignedProof, ProofAggregationError, ZKVMEngine}; + +use alloy::{ + consensus::BlobTransactionSidecar, + eips::eip4844::BYTES_PER_BLOB, + hex, + network::EthereumWallet, + primitives::Address, + providers::{PendingTransactionError, ProviderBuilder}, + rpc::types::TransactionReceipt, + signers::local::LocalSigner, +}; +use config::Config; +use fetcher::{ProofsFetcher, ProofsFetcherError}; +use merkle_tree::compute_proofs_merkle_root; +use risc0_ethereum_contracts::encode_seal; +use std::str::FromStr; +use tracing::{error, info, warn}; +use types::{AlignedProofAggregationService, AlignedProofAggregationServiceContract}; + +#[derive(Debug)] +pub enum AggregatedProofSubmissionError { + BuildingBlobCommitment, + BuildingBlobProof, + BuildingBlobVersionedHash, + Risc0EncodingSeal(String), + SendVerifyAggregatedProofTransaction(alloy::contract::Error), + ReceiptError(PendingTransactionError), + FetchingProofs(ProofsFetcherError), + ZKVMAggregation(ProofAggregationError), + BuildingMerkleRoot, + MerkleRootMisMatch, +} + +pub struct ProofAggregator { + engine: ZKVMEngine, + proof_aggregation_service: AlignedProofAggregationServiceContract, + fetcher: ProofsFetcher, + config: Config, +} + +impl ProofAggregator { + pub fn new(config: Config) -> Self { + let rpc_url = config.eth_rpc_url.parse().expect("RPC URL should be valid"); + let signer = LocalSigner::decrypt_keystore( + config.ecdsa.private_key_store_path.clone(), + config.ecdsa.private_key_store_password.clone(), + ) + .expect("Keystore signer should be `cast wallet` compliant"); + let wallet = EthereumWallet::from(signer); + let rpc_provider = ProviderBuilder::new().wallet(wallet).connect_http(rpc_url); + let proof_aggregation_service = AlignedProofAggregationService::new( + Address::from_str(&config.proof_aggregation_service_address) + .expect("AlignedProofAggregationService address should be valid"), + rpc_provider, + ); + + let engine = + ZKVMEngine::from_env().expect("AGGREGATOR env variable to be set to one of sp1|risc0"); + let fetcher = ProofsFetcher::new(&config); + + Self { + engine, + proof_aggregation_service, + fetcher, + config, + } + } + + pub async fn start(&mut self) { + info!("Starting proof aggregator service"); + + info!("About to aggregate and submit proof to be verified on chain"); + let res = self.aggregate_and_submit_proofs_on_chain().await; + + match res { + Ok(()) => { + self.config + .update_last_aggregated_block(self.fetcher.get_last_aggregated_block()) + .unwrap(); + info!("Process finished successfully"); + } + Err(err) => { + error!("Error while aggregating and submitting proofs: {:?}", err); + } + } + } + + async fn aggregate_and_submit_proofs_on_chain( + &mut self, + ) -> Result<(), AggregatedProofSubmissionError> { + let proofs = self + .fetcher + .fetch(self.engine.clone(), self.config.total_proofs_limit) + .await + .map_err(AggregatedProofSubmissionError::FetchingProofs)?; + + if proofs.is_empty() { + warn!("No proofs collected, skipping aggregation..."); + return Ok(()); + } + + info!("Proofs fetched, constructing merkle root..."); + let (merkle_tree, leaves) = compute_proofs_merkle_root(&proofs) + .ok_or(AggregatedProofSubmissionError::BuildingMerkleRoot)?; + let merkle_root = merkle_tree.root; + info!("Merkle root constructed: 0x{}", hex::encode(merkle_root)); + + info!("Starting proof aggregation program..."); + let (aggregated_proof, zkvm_merkle_root) = self + .engine + .aggregate_proofs(proofs, self.config.proofs_per_chunk) + .map_err(AggregatedProofSubmissionError::ZKVMAggregation)?; + info!("Proof aggregation program finished"); + + info!("Starting Merkle root verification: comparing ZKVM output with off-VM computation"); + if zkvm_merkle_root != merkle_root { + error!( + "Merkle root mismatch detected: ZKVM = {zkvm_merkle_root:?}, off-VM = {merkle_root:?}" + ); + return Err(AggregatedProofSubmissionError::MerkleRootMisMatch); + } + info!("Merkle root verification successful: roots match"); + + info!("Constructing blob..."); + let (blob, blob_versioned_hash) = self.construct_blob(leaves).await?; + info!( + "Blob constructed, versioned hash: {}", + hex::encode(blob_versioned_hash) + ); + + info!("Sending proof to ProofAggregationService contract..."); + let receipt = self + .send_proof_to_verify_on_chain(blob, blob_versioned_hash, aggregated_proof) + .await?; + info!( + "Proof sent and verified, tx hash {:?}", + receipt.transaction_hash + ); + + Ok(()) + } + + async fn send_proof_to_verify_on_chain( + &self, + blob: BlobTransactionSidecar, + blob_versioned_hash: [u8; 32], + aggregated_proof: AlignedProof, + ) -> Result { + let res = match aggregated_proof { + AlignedProof::SP1(proof) => { + self.proof_aggregation_service + .verifySP1( + blob_versioned_hash.into(), + proof.proof_with_pub_values.public_values.to_vec().into(), + proof.proof_with_pub_values.bytes().into(), + ) + .sidecar(blob) + .send() + .await + } + AlignedProof::Risc0(proof) => { + let encoded_seal = encode_seal(&proof.receipt).map_err(|e| { + AggregatedProofSubmissionError::Risc0EncodingSeal(e.to_string()) + })?; + self.proof_aggregation_service + .verifyRisc0( + blob_versioned_hash.into(), + encoded_seal.into(), + proof.receipt.journal.bytes.into(), + ) + .sidecar(blob) + .send() + .await + } + } + .map_err(AggregatedProofSubmissionError::SendVerifyAggregatedProofTransaction)?; + + res.get_receipt() + .await + .map_err(AggregatedProofSubmissionError::ReceiptError) + } + + /// ### Blob capacity + /// + /// As dictated in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), each blob can hold: + /// + /// - `FIELD_ELEMENTS_PER_BLOB = 4096` + /// - `BYTES_PER_FIELD_ELEMENT = 32` + /// + /// This gives a total theoretical capacity of: + /// + /// `FIELD_ELEMENTS_PER_BLOB * BYTES_PER_FIELD_ELEMENT = 4096 * 32 = 131072 bytes` + /// + /// However, this full capacity isn't usable due to the encoding of KZG commitments to elliptic curve points. + /// Specifically: + /// + /// - Ethereum uses the BLS12-381 curve, whose scalar field modulus is slightly less than `2^256` + /// (closer to `2^255`). + /// - Therefore, 32-byte field elements can't represent all 256-bit values. + /// - To ensure values are within the field modulus, we **pad with a leading `0x00` byte**, + /// effectively capping values below the modulus. + /// - This reduces the usable payload to **31 bytes per field element**. + /// + /// So, the _actual usable capacity_ per blob is: + /// + /// `4096 * 31 = 126976 bytes` + /// + /// Meaning that we can send as much as 126976 / 32 = 3968 proofs per blob + async fn construct_blob( + &self, + leaves: Vec<[u8; 32]>, + ) -> Result<(BlobTransactionSidecar, [u8; 32]), AggregatedProofSubmissionError> { + let data: Vec = leaves.iter().flat_map(|arr| arr.iter().copied()).collect(); + let mut blob_data: [u8; BYTES_PER_BLOB] = [0u8; BYTES_PER_BLOB]; + + // We pad the data with 0x0 byte every 31 bytes so that the field elements + // constructed from the bytes are less than BLS_MODULUS. + // + // See https://github.com/ethereum/consensus-specs/blob/86fb82b221474cc89387fa6436806507b3849d88/specs/deneb/polynomial-commitments.md#bytes_to_bls_field + let mut offset = 0; + for chunk in data.chunks(31) { + blob_data[offset] = 0x00; + let start = offset + 1; + let end = start + chunk.len(); + blob_data[start..end].copy_from_slice(chunk); + offset += 32; + } + + // calculate kzg commitments for blob + + // This parameter is the optimal balance between performance and memory usage to load the trusted setup + // Source: https://github.com/ethereum/c-kzg-4844?tab=readme-ov-file#precompute + let settings = c_kzg::ethereum_kzg_settings(8); + let blob = c_kzg::Blob::new(blob_data); + let commitment = settings + .blob_to_kzg_commitment(&blob) + .map_err(|_| AggregatedProofSubmissionError::BuildingBlobCommitment)?; + let proof = settings + .compute_blob_kzg_proof(&blob, &commitment.to_bytes()) + .map_err(|_| AggregatedProofSubmissionError::BuildingBlobProof)?; + + let blob = BlobTransactionSidecar::from_kzg( + vec![blob], + vec![commitment.to_bytes()], + vec![proof.to_bytes()], + ); + let blob_versioned_hash = blob + .versioned_hash_for_blob(0) + .ok_or(AggregatedProofSubmissionError::BuildingBlobVersionedHash)? + .0; + + Ok((blob, blob_versioned_hash)) + } +} diff --git a/aggregation_mode/src/backend/retry.rs b/aggregation_mode/src/backend/retry.rs new file mode 100644 index 0000000000..41971f896f --- /dev/null +++ b/aggregation_mode/src/backend/retry.rs @@ -0,0 +1,62 @@ +use backon::ExponentialBuilder; +use backon::Retryable; +use std::{future::Future, time::Duration}; + +#[derive(Debug)] +pub enum RetryError { + Transient(E), + Permanent(E), +} + +impl std::fmt::Display for RetryError { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + RetryError::Transient(e) => write!(f, "{}", e), + RetryError::Permanent(e) => write!(f, "{}", e), + } + } +} + +impl RetryError { + pub fn inner(self) -> E { + match self { + RetryError::Transient(e) => e, + RetryError::Permanent(e) => e, + } + } +} + +impl std::error::Error for RetryError where E: std::fmt::Debug {} + +/// Supports retries only on async functions. See: https://docs.rs/backon/latest/backon/#retry-an-async-function +/// Runs with `jitter: false`. +/// +/// # Parameters +/// * `function` - The async function to retry +/// * `min_delay_millis` - Initial delay before first retry attempt (in milliseconds) +/// * `factor` - Exponential backoff multiplier for retry delays +/// * `max_times` - Maximum number of retry attempts +/// * `max_delay_seconds` - Maximum delay between retry attempts (in seconds) +pub async fn retry_function( + function: FutureFn, + min_delay_millis: u64, + factor: f32, + max_times: usize, + max_delay_seconds: u64, +) -> Result> +where + Fut: Future>>, + FutureFn: FnMut() -> Fut, +{ + let backoff = ExponentialBuilder::default() + .with_min_delay(Duration::from_millis(min_delay_millis)) + .with_max_times(max_times) + .with_factor(factor) + .with_max_delay(Duration::from_secs(max_delay_seconds)); + + function + .retry(backoff) + .sleep(tokio::time::sleep) + .when(|e| matches!(e, RetryError::Transient(_))) + .await +} diff --git a/aggregation_mode/src/backend/s3.rs b/aggregation_mode/src/backend/s3.rs new file mode 100644 index 0000000000..93f300ebcf --- /dev/null +++ b/aggregation_mode/src/backend/s3.rs @@ -0,0 +1,158 @@ +use crate::backend::retry::{retry_function, RetryError}; +use aligned_sdk::common::types::VerificationData; +use std::time::Duration; +use tracing::{info, warn}; + +#[derive(Debug)] +#[allow(dead_code)] +pub enum GetBatchProofsError { + FetchingS3Batch(String), + Deserialization(String), + EmptyBody(String), + StatusFailed((u16, String)), + ReqwestClientFailed(String), +} + +// needed to make S3 bucket work +const DEFAULT_USER_AGENT: &str = "proof-aggregator/aligned-layer"; +const MAX_BATCH_URLS: usize = 5; + +// Retry parameters for S3 requests +/// Initial delay before first retry attempt (in milliseconds) +const RETRY_MIN_DELAY_MILLIS: u64 = 500; +/// Exponential backoff multiplier for retry delays +const RETRY_FACTOR: f32 = 2.0; +/// Maximum number of retry attempts +const RETRY_MAX_TIMES: usize = 5; +/// Maximum delay between retry attempts (in seconds) +const RETRY_MAX_DELAY_SECONDS: u64 = 10; + +/// Timeout for establishing a connection to S3 +const CONNECT_TIMEOUT_SECONDS: Duration = Duration::from_secs(10); +/// Timeout for Batch Download Requests +const BATCH_DOWNLOAD_TIMEOUT_SECONDS: Duration = Duration::from_secs(5 * 60); + +// get_aligned_batch_from_s3_with_multiple_urls tries multiple comma-separated URLs until first successful response +pub async fn get_aligned_batch_from_s3_with_multiple_urls( + urls: String, +) -> Result, GetBatchProofsError> { + // Parse comma-separated URLs and limit to max 5 + let parsed_urls = parse_batch_urls(&urls); + info!( + "Getting batch from data service with {} URLs: {:?}", + parsed_urls.len(), + parsed_urls + ); + + let mut errors = Vec::new(); + + // Try each URL until first successful response + for url in parsed_urls.iter() { + match get_aligned_batch_from_s3(url.clone()).await { + Ok(data) => { + return Ok(data); + } + Err(err) => { + warn!("Failed to fetch batch from URL {}: {:?}", url, err); + errors.push(format!("URL {}: {:?}", url, err)); + } + } + } + + // All URLs failed + Err(GetBatchProofsError::FetchingS3Batch(format!( + "Failed to get batch from all URLs, errors: {}", + errors.join("; ") + ))) +} + +// parse_batch_urls parses comma-separated URLs and limits to max 5 +fn parse_batch_urls(batch_urls: &str) -> Vec { + let mut urls = Vec::new(); + for url in batch_urls.split(',') { + let trimmed_url = url.trim(); + if !trimmed_url.is_empty() { + urls.push(trimmed_url.to_string()); + if urls.len() > MAX_BATCH_URLS { + break; + } + } + } + urls +} + +async fn get_aligned_batch_from_s3_retryable( + url: String, +) -> Result, RetryError> { + info!("Fetching batch from S3 URL: {}", url); + let client = reqwest::Client::builder() + .user_agent(DEFAULT_USER_AGENT) + .connect_timeout(CONNECT_TIMEOUT_SECONDS) + .timeout(BATCH_DOWNLOAD_TIMEOUT_SECONDS) + .build() + .map_err(|e| { + RetryError::Permanent(GetBatchProofsError::ReqwestClientFailed(e.to_string())) + })?; + + let response = client.get(&url).send().await.map_err(|e| { + warn!("Failed to send request to {}: {}", url, e); + RetryError::Transient(GetBatchProofsError::FetchingS3Batch(e.to_string())) + })?; + + if !response.status().is_success() { + let status_code = response.status().as_u16(); + let reason = response + .status() + .canonical_reason() + .unwrap_or("") + .to_string(); + + // Determine if the error is retryable based on status code + let error = GetBatchProofsError::StatusFailed((status_code, reason)); + return match status_code { + // Client errors (4xx) are generally permanent, except for specific cases + 400..=499 => match status_code { + 408 | 429 => Err(RetryError::Transient(error)), // Request Timeout, Too Many Requests + _ => Err(RetryError::Permanent(error)), + }, + // Server errors (5xx) are generally transient + 500..=599 => Err(RetryError::Transient(error)), + _ => Err(RetryError::Permanent(error)), + }; + } + + let bytes = response.bytes().await.map_err(|e| { + warn!("Failed to read response body from {}: {}", url, e); + RetryError::Transient(GetBatchProofsError::EmptyBody(e.to_string())) + })?; + let bytes: &[u8] = bytes.iter().as_slice(); + + let data: Vec = ciborium::from_reader(bytes).map_err(|e| { + warn!("Failed to deserialize batch data from {}: {}", url, e); + RetryError::Permanent(GetBatchProofsError::Deserialization(e.to_string())) + })?; + + Ok(data) +} + +/// Download batch from Storage Service using the provided URL. +/// +/// Retries on recoverable errors using exponential backoff up to `RETRY_MAX_TIMES` times: +/// (0,5 secs - 1 secs - 2 secs - 4 secs - 8 secs). +pub async fn get_aligned_batch_from_s3( + url: String, +) -> Result, GetBatchProofsError> { + let url_clone = url.clone(); + retry_function( + move || { + let url = url_clone.clone(); + get_aligned_batch_from_s3_retryable(url) + }, + RETRY_MIN_DELAY_MILLIS, + RETRY_FACTOR, + RETRY_MAX_TIMES, + RETRY_MAX_DELAY_SECONDS, + ) + .await + .map_err(|retry_err| retry_err.inner()) +} diff --git a/aggregation_mode/src/backend/types.rs b/aggregation_mode/src/backend/types.rs new file mode 100644 index 0000000000..b9eb53d331 --- /dev/null +++ b/aggregation_mode/src/backend/types.rs @@ -0,0 +1,66 @@ +#![allow(clippy::too_many_arguments)] +use alloy::{ + network::EthereumWallet, + providers::{ + fillers::{ + BlobGasFiller, ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, + WalletFiller, + }, + Identity, RootProvider, + }, + sol, +}; +use AlignedLayerServiceManager::AlignedLayerServiceManagerInstance; +use AlignedProofAggregationService::AlignedProofAggregationServiceInstance; + +sol!( + #[sol(rpc)] + AlignedProofAggregationService, + "abi/AlignedProofAggregationService.json" +); + +pub type AlignedProofAggregationServiceContract = AlignedProofAggregationServiceInstance< + FillProvider< + JoinFill< + JoinFill< + Identity, + JoinFill>>, + >, + WalletFiller, + >, + RootProvider, + >, +>; + +sol!( + #[sol(rpc)] + AlignedLayerServiceManager, + "abi/AlignedLayerServiceManager.json" +); + +pub type AlignedLayerServiceManagerContract = AlignedLayerServiceManagerInstance< + FillProvider< + JoinFill< + Identity, + JoinFill>>, + >, + RootProvider, + >, +>; + +pub type RPCProvider = alloy::providers::fillers::FillProvider< + alloy::providers::fillers::JoinFill< + alloy::providers::Identity, + alloy::providers::fillers::JoinFill< + alloy::providers::fillers::GasFiller, + alloy::providers::fillers::JoinFill< + alloy::providers::fillers::BlobGasFiller, + alloy::providers::fillers::JoinFill< + alloy::providers::fillers::NonceFiller, + alloy::providers::fillers::ChainIdFiller, + >, + >, + >, + >, + alloy::providers::RootProvider, +>; diff --git a/aggregation_mode/src/lib.rs b/aggregation_mode/src/lib.rs new file mode 100644 index 0000000000..193e85b6e2 --- /dev/null +++ b/aggregation_mode/src/lib.rs @@ -0,0 +1,2 @@ +pub mod aggregators; +pub mod backend; diff --git a/aggregation_mode/src/main.rs b/aggregation_mode/src/main.rs new file mode 100644 index 0000000000..382628cafd --- /dev/null +++ b/aggregation_mode/src/main.rs @@ -0,0 +1,33 @@ +use std::env; + +use proof_aggregator::backend::{config::Config, ProofAggregator}; +use tracing_subscriber::{EnvFilter, FmtSubscriber}; + +fn read_config_filepath_from_args() -> String { + let args: Vec = env::args().collect(); + if args.len() < 2 { + panic!( + "You mus provide a config file. Usage: {} ", + args[0] + ); + } + + args[1].clone() +} + +#[tokio::main] +async fn main() { + // ignore sp1_cuda info logs + let filter = EnvFilter::new("info,sp1_cuda=warn"); + let subscriber = FmtSubscriber::builder().with_env_filter(filter).finish(); + tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); + + // load config + let config_file_path = read_config_filepath_from_args(); + tracing::info!("Loading config from {}...", config_file_path); + let config = Config::from_file(&config_file_path).expect("Config is valid"); + tracing::info!("Config loaded"); + + let mut proof_aggregator = ProofAggregator::new(config); + proof_aggregator.start().await; +} diff --git a/aggregator/cmd/main.go b/aggregator/cmd/main.go index 37ab559e0d..d82daa8f87 100644 --- a/aggregator/cmd/main.go +++ b/aggregator/cmd/main.go @@ -60,9 +60,9 @@ func aggregatorMain(ctx *cli.Context) error { // Listen for new task created in the ServiceManager contract in a separate goroutine, both V1 and V2 subscriptions: go func() { - listenErr := aggregator.SubscribeToNewTasks() - if listenErr != nil { - aggregatorConfig.BaseConfig.Logger.Fatal("Error subscribing for new tasks", "err", listenErr) + listenErrPair := aggregator.SubscribeToNewTasks() + if listenErrPair != nil { + aggregatorConfig.BaseConfig.Logger.Fatal("Error subscribing for new tasks", "err", listenErrPair) } }() diff --git a/aggregator/pkg/aggregator.go b/aggregator/pkg/aggregator.go index 61a1e482f2..11db55eb95 100644 --- a/aggregator/pkg/aggregator.go +++ b/aggregator/pkg/aggregator.go @@ -46,7 +46,7 @@ type Aggregator struct { avsReader *chainio.AvsReader avsSubscriber *chainio.AvsSubscriber avsWriter *chainio.AvsWriter - taskSubscriber chan error + taskSubscriber chan chainio.ErrorPair blsAggregationService blsagg.BlsAggregationService // BLS Signature Service returns an Index diff --git a/aggregator/pkg/server.go b/aggregator/pkg/server.go index 9df00304b5..f28fc1ef62 100644 --- a/aggregator/pkg/server.go +++ b/aggregator/pkg/server.go @@ -92,11 +92,11 @@ func (agg *Aggregator) ProcessOperatorSignedTaskResponseV2(signedTaskResponse *t if err != nil { agg.logger.Warnf("BLS aggregation service error: %s", err) - done<- 1 + done <- 1 // todo shouldn't we here close the channel with a reply = 1? } else { agg.logger.Info("BLS process succeeded") - done<- 0 + done <- 0 } close(done) @@ -136,7 +136,7 @@ func (agg *Aggregator) GetTaskIndexRetryable(batchIdentifierHash [32]byte, confi taskIndex, ok := agg.batchesIdxByIdentifierHash[batchIdentifierHash] agg.taskMutex.Unlock() if !ok { - return taskIndex, fmt.Errorf("Task not found in the internal map") + return taskIndex, fmt.Errorf("task not found in the internal map") } else { return taskIndex, nil } diff --git a/aggregator/pkg/subscriber.go b/aggregator/pkg/subscriber.go index 4aef715da1..34a1e7b61c 100644 --- a/aggregator/pkg/subscriber.go +++ b/aggregator/pkg/subscriber.go @@ -1,18 +1,20 @@ package pkg -func (agg *Aggregator) SubscribeToNewTasks() error { - err := agg.subscribeToNewTasks() - if err != nil { - return err +import "github.com/yetanotherco/aligned_layer/core/chainio" + +func (agg *Aggregator) SubscribeToNewTasks() *chainio.ErrorPair { + errorPair := agg.subscribeToNewTasks() + if errorPair != nil { + return errorPair } for { select { case err := <-agg.taskSubscriber: agg.AggregatorConfig.BaseConfig.Logger.Info("Failed to subscribe to new tasks", "err", err) - err = agg.subscribeToNewTasks() - if err != nil { - return err + errorPair = agg.subscribeToNewTasks() + if errorPair != nil { + return errorPair } case newBatch := <-agg.NewBatchChan: agg.AggregatorConfig.BaseConfig.Logger.Info("Adding new task") @@ -21,14 +23,12 @@ func (agg *Aggregator) SubscribeToNewTasks() error { } } -func (agg *Aggregator) subscribeToNewTasks() error { - var err error - - agg.taskSubscriber, err = agg.avsSubscriber.SubscribeToNewTasksV3(agg.NewBatchChan) +func (agg *Aggregator) subscribeToNewTasks() *chainio.ErrorPair { + errorPair := agg.avsSubscriber.SubscribeToNewTasksV3(agg.NewBatchChan, agg.taskSubscriber, agg.AggregatorConfig.Aggregator.PollLatestBatchInterval) - if err != nil { - agg.AggregatorConfig.BaseConfig.Logger.Info("Failed to create task subscriber", "err", err) + if errorPair != nil { + agg.AggregatorConfig.BaseConfig.Logger.Info("Failed to create task subscriber", "err", errorPair) } - return err + return errorPair } diff --git a/aggregator/pkg/telemetry.go b/aggregator/pkg/telemetry.go index 01dd132a36..cf1d910817 100644 --- a/aggregator/pkg/telemetry.go +++ b/aggregator/pkg/telemetry.go @@ -152,7 +152,12 @@ func (t *Telemetry) sendTelemetryMessage(endpoint string, message interface{}) e t.logger.Warn("[Telemetry] Error sending POST request", "error", err) return fmt.Errorf("error making POST request: %w", err) } - defer resp.Body.Close() + defer func(Body io.ReadCloser) { + err := Body.Close() + if err != nil { + t.logger.Warn("[Telemetry] Error closing response body", "error", err) + } + }(resp.Body) respBody, err := io.ReadAll(resp.Body) if err != nil { diff --git a/alerts/.env.devnet b/alerts/.env.devnet index 55bfc07bab..4888432661 100644 --- a/alerts/.env.devnet +++ b/alerts/.env.devnet @@ -4,6 +4,7 @@ # # Variables for contract_alerts.sh # RPC_URL= +# RPC_URL_FALLBACK= # CONTRACT_ADDRESS= # NEW_BATCH_TOPIC= # VERIFIED_BATCH_TOPIC= @@ -17,6 +18,7 @@ # # Variables for balance_alerts.sh # RPC_URL= +# RPC_URL_FALLBACK= # PAYMENT_CONTRACT_ADDRESS= # BALANCE_THRESHOLD= # WALLET_ADDRESS= diff --git a/alerts/.env.example b/alerts/.env.example index d210912a5e..ea0bb2d253 100644 --- a/alerts/.env.example +++ b/alerts/.env.example @@ -17,6 +17,7 @@ EXPRESSION= # Variables for balance_alerts.sh RPC_URL= +RPC_URL_FALLBACK= PAYMENT_CONTRACT_ADDRESS= BALANCE_THRESHOLD= WALLET_NAME= # Example: "Task sender" @@ -32,3 +33,17 @@ NETWORK= PRIVATE_KEY= VERIFICATION_WAIT_TIME= LOGS_BLOCK_RANGE= + +# Variables for aggregation_mode_alerts.sh +CONTRACT_ADDRESS= +AGGREGATED_PROOF_VERIFIED_TOPIC=0xfe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f62 +RPC_URL= +RPC_URL_FALLBACK= +LOGS_BLOCK_RANGE=7500 +SLEEP_TIME=3600 +PAGER_DUTY_KEY= +PAGER_DUTY_EMAIL= +PAGER_DUTY_SERVICE_ID= +SLACK_WEBHOOK_URL= +TELEGRAM_BOT_TOKEN= +TELEGRAM_CHAT_ID= diff --git a/alerts/aggregation_mode_alerts.sh b/alerts/aggregation_mode_alerts.sh new file mode 100755 index 0000000000..1599827384 --- /dev/null +++ b/alerts/aggregation_mode_alerts.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# ENV_VARIABLES +# +# - CONTRACT_ADDRESS +# - Holesky: 0xe84CD4084d8131841CE6DC265361f81F4C59a1d4 +# - Stage: 0x7Eace34A8d4C4CacE633946C6F7CF4BeF3F33513 +# - AGGREGATED_PROOF_VERIFIED_TOPIC (0xfe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f62) +# - RPC_URL +# - LOGS_BLOCK_RANGE (25hs -> 7500 blocks) +# - SLEEP_TIME +# - PAGER_DUTY_KEY +# - PAGER_DUTY_EMAIL +# - PAGER_DUTY_SERVICE_ID +# - SLACK_WEBHOOK_URL +# - TELEGRAM_CHAT_ID +# - TELEGRAM_BOT_TOKEN + +# Load env file from $1 path +source "$1" + +# Function to send slack message +# @param message +function send_slack_message() { + . alerts/slack.sh "$1" +} + +# Function to send telegram message +# @param message +function send_telegram_message() { + . alerts/telegram.sh "$1" +} + +# Function to send PagerDuty alert +# @param message +function send_pagerduty_alert() { + . alerts/pagerduty.sh "$1" +} + +# Flags to avoid sending multiple alerts +no_new_aggregation_alert=false + +while : +do + last_block=$(cast block --rpc-url $RPC_URL -f number) + printf "Last block: %s\n" $last_block + + from_block=$(($last_block - $LOGS_BLOCK_RANGE)) + + new_aggregated_proofs_logs=$(cast logs --rpc-url $RPC_URL --from-block $from_block --address $CONTRACT_ADDRESS $AGGREGATED_PROOF_VERIFIED_TOPIC) + if [ -z "$new_aggregated_proofs_logs" ]; then + printf "No new aggregated proofs logs found\n" + if [ "$no_new_aggregation_alert" = false ]; then + message="🚨 $NETWORK ALERT Aggregation Mode: No new aggregated proofs since block $from_block" + printf "$message\n" + send_slack_message "$message" + send_telegram_message "$message" + send_pagerduty_alert "$message" + fi + no_new_aggregation_alert=true + else + printf "New aggregated proofs logs found\n" + if [ "$no_new_aggregation_alert" = true ]; then + message="🟩 $NETWORK INFO Aggregation Mode: Aggregated proofs creation resumed since block $from_block" + printf "$message\n" + send_slack_message "$message" + send_telegram_message "$message" + fi + no_new_aggregation_alert=false + fi + + sleep $SLEEP_TIME +done diff --git a/alerts/periodic_sender.sh b/alerts/periodic_sender.sh new file mode 100755 index 0000000000..130144433c --- /dev/null +++ b/alerts/periodic_sender.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# This script is responsible for the handling of periodic sending, and the clauses for sending proofs. +# It forwards the path of the .env file as the first argument to the sender_with_alert.sh script when +# the conditions are met. + +ENV_FILE="$1" + +if [[ -z "$ENV_FILE" ]]; then + echo "Usage: $0 path/to/.env" + exit 1 +fi + +# Fetches the current ETH gas price +function fetch_gas_price() { + gas_price=$(cast gas-price --rpc-url $RPC_URL) + if [[ -z "$gas_price" || "$gas_price" == "0" ]]; then + echo "Primary RPC_URL failed to fetch gas price, trying fallback..." + gas_price=$(cast gas-price --rpc-url $RPC_URL_FALLBACK) + fi + + echo $gas_price +} + +source "$ENV_FILE" + +# Each elapsed interval lasts for 30 minutes +sleep_time=1800 +elapsed_intervals=0 + +./alerts/sender_with_alert.sh "$ENV_FILE" + +while true; do + echo "Starting pass #$elapsed_intervals" + + current_gas_price=$(fetch_gas_price) + if [[ -z "$current_gas_price" || "$current_gas_price" == "0" ]]; then + echo "Failed to fetch current gas price from both RPC URLs, skipping this pass." + + elapsed_intervals=$((elapsed_intervals + 1)) + + echo "Sleeping $sleep_time seconds (($((sleep_time / 60)) minutes))" + sleep "$sleep_time" + continue + fi + echo "Current gas price: $current_gas_price wei" + + # In case current and gas price meet the criteria, send a proof and reset counter + if { [ $elapsed_intervals -ge 10 ] && [ $elapsed_intervals -lt 14 ] && [ $current_gas_price -lt 2000000000 ]; }; then + # Between 10 and 14 elapsed intervals (5 to 7 hours), if gas price is below 2 gwei, send a proof + message="Sending proof at $elapsed_intervals with gas price $current_gas_price wei" + echo "$message" + ./alerts/sender_with_alert.sh "$ENV_FILE" + elapsed_intervals=0 + elif { [ $elapsed_intervals -ge 14 ] && [ $elapsed_intervals -lt 16 ] && [ $current_gas_price -lt 5000000000 ]; }; then + # Between 14 and 16 elapsed intervals (7 to 8 hours), if gas price is below 5 gwei, send a proof + message="Sending proof at $elapsed_intervals with gas price $current_gas_price wei" + echo "$message" + ./alerts/sender_with_alert.sh "$ENV_FILE" + elapsed_intervals=0 + elif { [ $elapsed_intervals -ge 16 ] && [ $elapsed_intervals -lt 24 ] && [ $current_gas_price -lt 15000000000 ]; }; then + # Between 16 and 24 elapsed intervals (8 to 12 hours), if gas price is below 15 gwei, send a proof + message="Sending proof at $elapsed_intervals with gas price $current_gas_price wei" + echo "$message" + ./alerts/sender_with_alert.sh "$ENV_FILE" + elapsed_intervals=0 + elif { [ $elapsed_intervals -ge 50 ]; }; then + # After 50 elapsed intervals (25 hours) send a proof + message="Sending proof at $elapsed_intervals with gas price $current_gas_price wei" + echo "$message" + ./alerts/sender_with_alert.sh "$ENV_FILE" + elapsed_intervals=0 + fi + + elapsed_intervals=$((elapsed_intervals + 1)) + + echo "Sleeping $sleep_time seconds (($((sleep_time / 60)) minutes))" + sleep "$sleep_time" +done diff --git a/alerts/sender_with_alert.sh b/alerts/sender_with_alert.sh index 1e8bcd5dfd..f0f117c054 100755 --- a/alerts/sender_with_alert.sh +++ b/alerts/sender_with_alert.sh @@ -10,7 +10,6 @@ # - PRIVATE_KEY # - VERIFICATION_WAIT_TIME # - LOGS_BLOCK_RANGE -# - SLEEP_TIME # - PAGER_DUTY_KEY # - PAGER_DUTY_EMAIL # - PAGER_DUTY_SERVICE_ID @@ -30,7 +29,7 @@ source "$1" # Just for debugging -#set -ex +# set -ex ### FUNCTIONS ### @@ -52,7 +51,7 @@ function fetch_tx_cost() { fi } -# Function to get the tx cost from the tx hash +# Function to get the number of proofs in the batch (from create task tx) # @param tx_hash function get_number_proofs_in_batch_from_create_task_tx() { if [[ -z "$1" ]]; then @@ -80,152 +79,148 @@ function send_slack_message() { . alerts/slack.sh "$1" } -################# -while true +################# SEND LOGIC ################# + +## Remove Proof Data +rm -rf ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/* +rm -rf ./aligned_verification_data/* + +mkdir -p ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs + +## Generate Proof +nonce=$(aligned get-user-nonce --network $NETWORK --user_addr $SENDER_ADDRESS 2>&1 | awk '{print $9}') +echo $nonce +if ! [[ "$nonce" =~ ^[0-9]+$ ]]; then + echo "Failed getting user nonce, retrying in 10 seconds" + sleep 10 + exit 0 +fi + +x=$((nonce + 1)) # So we don't have any issues with nonce = 0 +echo "Generating proof $x != 0, nonce: $nonce" +go run ./scripts/test_files/gnark_groth16_bn254_infinite_script/cmd/main.go $x + +## Send Proof +echo "Submitting $REPETITIONS proofs $x != 0" +submit=$(aligned submit \ + --proving_system GnarkGroth16Bn254 \ + --repetitions $REPETITIONS \ + --proof "./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_gnark_groth16_0_12_0.proof" \ + --public_input "./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_gnark_groth16_0_12_0.pub" \ + --vk "./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_gnark_groth16_0_12_0.vk" \ + --private_key $PRIVATE_KEY \ + --rpc_url $RPC_URL \ + --network $NETWORK \ + --max_fee 0.004ether \ + --random_address \ + 2>&1) + +echo "$submit" + +submit_errors=$(echo "$submit" | grep -oE 'ERROR[^]]*]([^[]*)' | sed 's/^[^]]*]//;s/[[:space:]]*$//') + +# Loop through each error found and print with the custom message +is_error=0 +while IFS= read -r error; do + if [[ -n "$error" ]]; then + slack_error_message="Error submitting proof to $NETWORK: $error" + send_slack_message "$slack_error_message" + is_error=1 + fi +done <<< "$submit_errors" + +if [ $is_error -eq 1 ]; then + echo "Error submitting proofs to $NETWORK, retrying in 60 seconds" + send_slack_message "Error submitting proofs to $NETWORK, retrying in 60 seconds" + sleep 60 + exit 0 +fi + +echo "Waiting $VERIFICATION_WAIT_TIME seconds for verification" +sleep $VERIFICATION_WAIT_TIME + +# Get all the batches merkle roots +batch_merkle_roots=$(echo "$submit" | grep "Batch merkle root: " | grep -oE "0x[[:alnum:]]{64}" | uniq) + +# Fetch the logs of both submission and response +current_block_number=$(cast block-number --rpc-url $RPC_URL) +from_block_number=$(($current_block_number - LOGS_BLOCK_RANGE)) +if [ $from_block_number -lt 0 ]; then + from_block_number=0 +fi + +total_fee_in_wei=0 +total_number_proofs=0 +batch_explorer_urls=() +for batch_merkle_root in $batch_merkle_roots do + # Construct the batcher explorer url + batch_explorer_url="$EXPLORER_URL/batches/$batch_merkle_root" + batch_explorer_urls+=($batch_explorer_url) - ## Remove Proof Data - rm -rf ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/* - rm -rf ./aligned_verification_data/* + log=$(cast logs --rpc-url $RPC_URL --from-block $from_block_number --to-block latest 'NewBatchV3 (bytes32 indexed batchMerkleRoot, address senderAddress, uint32 taskCreatedBlock, string batchDataPointer, uint256 respondToTaskFeeLimit)' $batch_merkle_root) + submission_tx_hash=$(echo "$log" | grep -oE "transactionHash: 0x[[:alnum:]]{64}" | awk '{ print $2 }') - mkdir -p ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs + log=$(cast logs --rpc-url $RPC_URL --from-block $from_block_number --to-block latest 'BatchVerified (bytes32 indexed batchMerkleRoot, address senderAddress)' $batch_merkle_root) + response_tx_hash=$(echo "$log" | grep -oE "transactionHash: 0x[[:alnum:]]{64}" | awk '{ print $2 }') - ## Generate Proof - nonce=$(aligned get-user-nonce --network $NETWORK --user_addr $SENDER_ADDRESS 2>&1 | awk '{print $9}') - echo $nonce - if ! [[ "$nonce" =~ ^[0-9]+$ ]]; then - echo "Failed getting user nonce, retrying in 10 seconds" - sleep 10 - continue - fi + # Calculate fees for transactions + number_proofs_in_batch=$(get_number_proofs_in_batch_from_create_task_tx $submission_tx_hash) + submission_fee_in_wei=$(fetch_tx_cost $submission_tx_hash) + response_fee_in_wei=$(fetch_tx_cost $response_tx_hash) + batch_fee_in_wei=$((submission_fee_in_wei + response_fee_in_wei)) - x=$((nonce + 1)) # So we don't have any issues with nonce = 0 - echo "Generating proof $x != 0, nonce: $nonce" - go run ./scripts/test_files/gnark_groth16_bn254_infinite_script/cmd/main.go $x - - ## Send Proof - echo "Submitting $REPETITIONS proofs $x != 0" - submit=$(aligned submit \ - --proving_system Groth16Bn254 \ - --repetitions $REPETITIONS \ - --proof "./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_groth16.proof" \ - --public_input "./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_groth16.pub" \ - --vk "./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_groth16.vk" \ - --proof_generator_addr $SENDER_ADDRESS \ - --private_key $PRIVATE_KEY \ - --rpc_url $RPC_URL \ - --network $NETWORK \ - --max_fee 0.004ether \ - 2>&1) + # Accumulate the fee + total_fee_in_wei=$(($total_fee_in_wei + $batch_fee_in_wei)) - echo "$submit" - - submit_errors=$(echo "$submit" | grep -oE 'ERROR[^]]*]([^[]*)' | sed 's/^[^]]*]//;s/[[:space:]]*$//') - - # Loop through each error found and print with the custom message - is_error=0 - while IFS= read -r error; do - if [[ -n "$error" ]]; then - slack_error_message="Error submitting proof to $NETWORK: $error" - send_slack_message "$slack_error_message" - is_error=1 - fi - done <<< "$submit_errors" - - if [ $is_error -eq 1 ]; then - echo "Error submitting proofs to $NETWORK, retrying in 60 seconds" - send_slack_message "Error submitting proofs to $NETWORK, retrying in 60 seconds" - sleep 60 - continue - fi + # Accumulate proofs in batch + total_number_proofs=$(($total_number_proofs + $number_proofs_in_batch)) +done - echo "Waiting $VERIFICATION_WAIT_TIME seconds for verification" - sleep $VERIFICATION_WAIT_TIME +# Calculate the spent amount by converting the fee to ETH +wei_to_eth_division_factor=$((10**18)) +spent_amount=$(echo "scale=30; $total_fee_in_wei / (10^18)" | bc -l | awk '{printf "%.15f", $0}') - # Get all the batches merkle roots - batch_merkle_roots=$(echo "$submit" | grep "Batch merkle root: " | grep -oE "0x[[:alnum:]]{64}" | uniq) +eth_usd=$(curl -s --connect-timeout 10 --max-time 30 https://cryptoprices.cc/ETH/ 2>/dev/null) - # Fetch the logs of both submission and response - current_block_number=$(cast block-number --rpc-url $RPC_URL) - from_block_number=$(($current_block_number - LOGS_BLOCK_RANGE)) - if [ $from_block_number -lt 0 ]; then - from_block_number=0 - fi +spent_amount_usd=$(echo "$spent_amount * $eth_usd" | bc | awk '{printf "%.2f", $1}') - total_fee_in_wei=0 - total_number_proofs=0 - batch_explorer_urls=() - for batch_merkle_root in $batch_merkle_roots - do - # Construct the batcher explorer url - batch_explorer_url="$EXPLORER_URL/batches/$batch_merkle_root" - batch_explorer_urls+=($batch_explorer_url) - - log=$(cast logs --rpc-url $RPC_URL --from-block $from_block_number --to-block latest 'NewBatchV3 (bytes32 indexed batchMerkleRoot, address senderAddress, uint32 taskCreatedBlock, string batchDataPointer, uint256 respondToTaskFeeLimit)' $batch_merkle_root) - submission_tx_hash=$(echo "$log" | grep -oE "transactionHash: 0x[[:alnum:]]{64}" | awk '{ print $2 }') - - log=$(cast logs --rpc-url $RPC_URL --from-block $from_block_number --to-block latest 'BatchVerified (bytes32 indexed batchMerkleRoot, address senderAddress)' $batch_merkle_root) - response_tx_hash=$(echo "$log" | grep -oE "transactionHash: 0x[[:alnum:]]{64}" | awk '{ print $2 }') - - # Calculate fees for transactions - number_proofs_in_batch=$(get_number_proofs_in_batch_from_create_task_tx $submission_tx_hash) - submission_fee_in_wei=$(fetch_tx_cost $submission_tx_hash) - response_fee_in_wei=$(fetch_tx_cost $response_tx_hash) - batch_fee_in_wei=$((submission_fee_in_wei + response_fee_in_wei)) - - # Accumulate the fee - total_fee_in_wei=$(($total_fee_in_wei + $batch_fee_in_wei)) - - # Accumulate proofs in batch - total_number_proofs=$(($total_number_proofs + $number_proofs_in_batch)) - done - - # Calculate the spent amount by converting the fee to ETH - wei_to_eth_division_factor=$((10**18)) - spent_amount=$(echo "scale=30; $total_fee_in_wei / (10^18)" | bc -l | awk '{printf "%.15f", $0}') - - eth_usd=$(curl -s https://cryptoprices.cc/ETH/) - spent_amount_usd=$(echo "$spent_amount * $eth_usd" | bc | awk '{printf "%.2f", $1}') - - slack_messsage="" - verified=1 - - ## Verify Proofs - echo "Verifying $REPETITIONS proofs $x != 0" - for proof in ./aligned_verification_data/*.cbor; do - ## Validate Proof on Chain - verification=$(aligned verify-proof-onchain \ - --aligned-verification-data $proof \ - --rpc_url $RPC_URL \ - --network $NETWORK \ - 2>&1) - - ## Send Alert if Verification Fails - if echo "$verification" | grep -q not; then - message="Proof verification failed for $proof [ ${batch_explorer_urls[@]} ]" - echo "$message" - send_pagerduty_alert "$message" - verified=0 # Some proofs failed, so we should not send the success message - break - elif echo "$verification" | grep -q verified; then - echo "Proof verification succeeded for $proof" - fi - done - - if [ $verified -eq 1 ]; then - slack_message="$total_number_proofs proofs submitted and verified. We sent $REPETITIONS proofs. Spent amount: $spent_amount ETH ($ $spent_amount_usd) [ ${batch_explorer_urls[@]} ]" - else - slack_message="$total_number_proofs proofs submitted but not verified. We sent $REPETITIONS proofs. Spent amount: $spent_amount ETH ($ $spent_amount_usd) [ ${batch_explorer_urls[@]} ]" +verified=1 + +## Verify Proofs +echo "Verifying $REPETITIONS proofs $x != 0" +for proof in ./aligned_verification_data/*.cbor; do + ## Validate Proof on Chain + verification=$(aligned verify-proof-onchain \ + --aligned-verification-data $proof \ + --rpc_url $RPC_URL \ + --network $NETWORK \ + 2>&1) + + ## Send Alert if Verification Fails + if echo "$verification" | grep -q not; then + message="Proof verification failed for $proof [ ${batch_explorer_urls[@]} ]" + echo "$message" + send_pagerduty_alert "$message" + verified=0 # Some proofs failed, so we should not send the success message + break + elif echo "$verification" | grep -q verified; then + echo "Proof verification succeeded for $proof" fi +done - ## Send Update to Slack - echo "$slack_message" - send_slack_message "$slack_message" +if [ $verified -eq 1 ]; then + slack_message="$total_number_proofs proofs submitted and verified. We sent $REPETITIONS proofs. Spent amount: $spent_amount ETH ($ $spent_amount_usd) [ ${batch_explorer_urls[@]} ]" +else + slack_message="$total_number_proofs proofs submitted but not verified. We sent $REPETITIONS proofs. Spent amount: $spent_amount ETH ($ $spent_amount_usd) [ ${batch_explorer_urls[@]} ]" +fi - ## Remove Proof Data - rm -rf ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/* - rm -rf ./aligned_verification_data/* +## Send Update to Slack +echo "$slack_message" +send_slack_message "$slack_message" - echo "Sleeping $SLEEP_TIME seconds" - sleep $SLEEP_TIME -done +## Remove Proof Data +rm -rf ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/* +rm -rf ./aligned_verification_data/* + +exit 0 diff --git a/alerts/telegram.sh b/alerts/telegram.sh new file mode 100644 index 0000000000..51a4c947e0 --- /dev/null +++ b/alerts/telegram.sh @@ -0,0 +1,7 @@ +# Function to send telegram message +# @param message +curl -s -X POST https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage \ + -d chat_id=$TELEGRAM_CHAT_ID \ + -d text="$1" \ + -d disable_notification=true + diff --git a/batcher/aligned-batcher/.env.dev b/batcher/aligned-batcher/.env.dev deleted file mode 100644 index 40ede80935..0000000000 --- a/batcher/aligned-batcher/.env.dev +++ /dev/null @@ -1,8 +0,0 @@ -AWS_SECRET_ACCESS_KEY=test -AWS_REGION=us-east-2 -AWS_ACCESS_KEY_ID=test -AWS_BUCKET_NAME=aligned.storage -UPLOAD_ENDPOINT=http://localhost:4566 -DOWNLOAD_ENDPOINT=http://localhost:4566/aligned.storage -RUST_LOG=info -RUST_BACKTRACE=1 diff --git a/batcher/aligned-batcher/.env.docker b/batcher/aligned-batcher/.env.docker deleted file mode 100644 index 64ddff6289..0000000000 --- a/batcher/aligned-batcher/.env.docker +++ /dev/null @@ -1,8 +0,0 @@ -AWS_SECRET_ACCESS_KEY=test -AWS_REGION=us-east-2 -AWS_ACCESS_KEY_ID=test -AWS_BUCKET_NAME=aligned.storage -UPLOAD_ENDPOINT=http://localstack:4566 -DOWNLOAD_ENDPOINT=http://localstack:4566/aligned.storage -RUST_LOG=info -RUST_BACKTRACE=1 diff --git a/batcher/aligned-batcher/.env.example b/batcher/aligned-batcher/.env.example deleted file mode 100644 index a9d1230e13..0000000000 --- a/batcher/aligned-batcher/.env.example +++ /dev/null @@ -1,7 +0,0 @@ -AWS_SECRET_ACCESS_KEY= -AWS_REGION= -AWS_ACCESS_KEY_ID= -AWS_BUCKET_NAME= -UPLOAD_ENDPOINT= -DOWNLOAD_ENDPOINT= -RUST_LOG= # info, debug, error, warn, etc. diff --git a/batcher/aligned-batcher/Cargo.toml b/batcher/aligned-batcher/Cargo.toml deleted file mode 100644 index 82306ad25b..0000000000 --- a/batcher/aligned-batcher/Cargo.toml +++ /dev/null @@ -1,44 +0,0 @@ -[package] -name = "aligned-batcher" -version = "0.1.0" -edition = "2021" - -[dependencies] -tokio-tungstenite = "0.21.0" -mina_bridge_core = { git = "https://github.com/lambdaclass/mina_bridge.git", rev = "a4498abb345d68dbb699ff38ef698800879231f8" } -futures-util = "0.3.30" -tokio = { version = "1.37.0", features = ["rt", "rt-multi-thread", "macros"] } -log = "0.4.21" -env_logger = "0.11.3" -serde_json = "1.0.117" -serde = { version = "1.0.201", features = ["derive"] } -clap = { version = "4.5.4", features = ["derive"] } -sha3 = "0.10.8" -aws-config = "1.4.0" -aws-sdk-s3 = "1.29.0" -bytes = "1.7.1" -hex = "0.4.3" -dotenvy = "0.15.0" -anyhow = "1.0.83" -ethers = { version = "2.0", features = ["ws", "rustls"] } -lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "efd46f0b0aea3aa95d94bba7de86cb96611b40d3", features = [ - "serde", -] } -serde_yaml = "0.9.34" -sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } -risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v1.1.2" } -lazy_static = "1.4.0" -bincode = "1.3.3" -aligned-sdk = { path = "../aligned-sdk" } -ciborium = "=0.2.2" -base64 = "0.22.1" -bs58 = "0.5.1" -priority-queue = "2.1.0" -mina-state-verifier-ffi = { path = "../../operator/mina/lib" } -mina-account-verifier-ffi = { path = "../../operator/mina_account/lib" } -reqwest = { version = "0.12", features = ["json"] } - -once_cell = "1.20.2" -warp = "0.3.7" -prometheus = { version = "0.13.4", features = ["process"] } -backon = "1.2.0" diff --git a/batcher/aligned-batcher/gnark/go.mod b/batcher/aligned-batcher/gnark/go.mod deleted file mode 100644 index 884fa3b710..0000000000 --- a/batcher/aligned-batcher/gnark/go.mod +++ /dev/null @@ -1,30 +0,0 @@ -module verifier - - go 1.22.3 - - require ( - github.com/consensys/gnark v0.10.0 - github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e - ) - - require ( - github.com/bits-and-blooms/bitset v1.8.0 // indirect - github.com/blang/semver/v4 v4.0.0 // indirect - github.com/consensys/bavard v0.1.13 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fxamacker/cbor/v2 v2.5.0 // indirect - github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b // indirect - github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71 // indirect - github.com/ingonyama-zk/iciclegnark v0.1.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rs/zerolog v1.30.0 // indirect - github.com/stretchr/testify v1.8.4 // indirect - github.com/x448/float16 v0.8.4 // indirect - golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.15.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - rsc.io/tmplfunc v0.0.3 // indirect - ) diff --git a/batcher/aligned-batcher/gnark/go.sum b/batcher/aligned-batcher/gnark/go.sum deleted file mode 100644 index c06612d603..0000000000 --- a/batcher/aligned-batcher/gnark/go.sum +++ /dev/null @@ -1,72 +0,0 @@ -github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= -github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= -github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark v0.10.0 h1:yhi6ThoeFP7WrH8zQDaO56WVXe9iJEBSkfrZ9PZxabw= -github.com/consensys/gnark v0.10.0/go.mod h1:VJU5JrrhZorbfDH+EUjcuFWr2c5z19tHPh8D6KVQksU= -github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e h1:MKdOuCiy2DAX1tMp2YsmtNDaqdigpY6B5cZQDJ9BvEo= -github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e/go.mod h1:wKqwsieaKPThcFkHe0d0zMsbHEUWFmZcG7KBCse210o= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -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/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= -github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -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/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/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71 h1:YxI1RTPzpFJ3MBmxPl3Bo0F7ume7CmQEC1M9jL6CT94= -github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71/go.mod h1:kAK8/EoN7fUEmakzgZIYdWy1a2rBnpCaZLqSHwZWxEk= -github.com/ingonyama-zk/iciclegnark v0.1.0 h1:88MkEghzjQBMjrYRJFxZ9oR9CTIpB8NG2zLeCJSvXKQ= -github.com/ingonyama-zk/iciclegnark v0.1.0/go.mod h1:wz6+IpyHKs6UhMMoQpNqz1VY+ddfKqC/gRwR/64W6WU= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -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.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/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= -github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/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/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/batcher/aligned-batcher/gnark/verifier.go b/batcher/aligned-batcher/gnark/verifier.go deleted file mode 100644 index 7e4fe547ff..0000000000 --- a/batcher/aligned-batcher/gnark/verifier.go +++ /dev/null @@ -1,121 +0,0 @@ -package main - -/* -#include -#include - -typedef struct ListRef { - const uint8_t *ptr; - uintptr_t len; -} ListRef; - - -*/ -import "C" - -import ( - "bytes" - "log" - "unsafe" - - "github.com/consensys/gnark-crypto/ecc" - "github.com/consensys/gnark/backend/groth16" - "github.com/consensys/gnark/backend/plonk" - "github.com/consensys/gnark/backend/witness" -) - -func listRefToBytes(listRef C.ListRef) []byte { - - if listRef.len == 0 { - return []byte{} - } - - return C.GoBytes(unsafe.Pointer(listRef.ptr), C.int(listRef.len)) -} - -func main() {} - -//export VerifyPlonkProofBLS12_381 -func VerifyPlonkProofBLS12_381(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool { - return verifyPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BLS12_381) -} - -//export VerifyPlonkProofBN254 -func VerifyPlonkProofBN254(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool { - return verifyPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) -} - -//export VerifyGroth16ProofBN254 -func VerifyGroth16ProofBN254(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool { - return verifyGroth16Proof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) -} - -// verifyPlonkProof contains the common proof verification logic. -func verifyPlonkProof(proofBytesRef C.ListRef, pubInputBytesRef C.ListRef, verificationKeyBytesRef C.ListRef, curve ecc.ID) bool { - proofBytes := listRefToBytes(proofBytesRef) - pubInputBytes := listRefToBytes(pubInputBytesRef) - verificationKeyBytes := listRefToBytes(verificationKeyBytesRef) - - proofReader := bytes.NewReader(proofBytes) - proof := plonk.NewProof(curve) - if _, err := proof.ReadFrom(proofReader); err != nil { - log.Printf("Could not deserialize proof: %v", err) - return false - } - - pubInputReader := bytes.NewReader(pubInputBytes) - pubInput, err := witness.New(curve.ScalarField()) - if err != nil { - log.Printf("Error instantiating witness: %v", err) - return false - } - if _, err = pubInput.ReadFrom(pubInputReader); err != nil { - log.Printf("Could not read PLONK public input: %v", err) - return false - } - - verificationKeyReader := bytes.NewReader(verificationKeyBytes) - verificationKey := plonk.NewVerifyingKey(curve) - if _, err = verificationKey.ReadFrom(verificationKeyReader); err != nil { - log.Printf("Could not read PLONK verifying key from bytes: %v", err) - return false - } - - err = plonk.Verify(proof, verificationKey, pubInput) - return err == nil -} - -// verifyGroth16Proof contains the common proof verification logic. -func verifyGroth16Proof(proofBytesRef C.ListRef, pubInputBytesRef C.ListRef, verificationKeyBytesRef C.ListRef, curve ecc.ID) bool { - proofBytes := listRefToBytes(proofBytesRef) - pubInputBytes := listRefToBytes(pubInputBytesRef) - verificationKeyBytes := listRefToBytes(verificationKeyBytesRef) - - proofReader := bytes.NewReader(proofBytes) - proof := groth16.NewProof(curve) - if _, err := proof.ReadFrom(proofReader); err != nil { - log.Printf("Could not deserialize proof: %v", err) - return false - } - - pubInputReader := bytes.NewReader(pubInputBytes) - pubInput, err := witness.New(curve.ScalarField()) - if err != nil { - log.Printf("Error instantiating witness: %v", err) - return false - } - if _, err = pubInput.ReadFrom(pubInputReader); err != nil { - log.Printf("Could not read Groth16 public input: %v", err) - return false - } - - verificationKeyReader := bytes.NewReader(verificationKeyBytes) - verificationKey := groth16.NewVerifyingKey(curve) - if _, err = verificationKey.ReadFrom(verificationKeyReader); err != nil { - log.Printf("Could not read Groth16 verifying key from bytes: %v", err) - return false - } - - err = groth16.Verify(proof, verificationKey, pubInput) - return err == nil -} diff --git a/batcher/aligned-batcher/src/gnark/mod.rs b/batcher/aligned-batcher/src/gnark/mod.rs deleted file mode 100644 index 99b25e8782..0000000000 --- a/batcher/aligned-batcher/src/gnark/mod.rs +++ /dev/null @@ -1,70 +0,0 @@ -use aligned_sdk::core::types::ProvingSystemId; - -#[derive(Copy, Clone, Debug)] -#[repr(C)] -pub struct ListRef { - data: *const u8, - len: usize, -} - -impl From> for ListRef { - fn from(v: Vec) -> Self { - Self::from(v.as_slice()) - } -} - -impl From<&Vec> for ListRef { - fn from(v: &Vec) -> Self { - Self::from(v.as_slice()) - } -} - -impl From<&[u8]> for ListRef { - fn from(v: &[u8]) -> Self { - let len = v.len(); - let data = v.as_ptr().cast(); - ListRef { data, len } - } -} - -pub fn verify_gnark( - proving_system: &ProvingSystemId, - proof: &Vec, - public_input: &Vec, - verification_key: &Vec, -) -> bool { - let proof = proof.into(); - let public_input = public_input.into(); - let verification_key = verification_key.into(); - - match proving_system { - ProvingSystemId::GnarkPlonkBn254 => unsafe { - VerifyPlonkProofBN254(proof, public_input, verification_key) - }, - ProvingSystemId::GnarkPlonkBls12_381 => unsafe { - VerifyPlonkProofBLS12_381(proof, public_input, verification_key) - }, - ProvingSystemId::Groth16Bn254 => unsafe { - VerifyGroth16ProofBN254(proof, public_input, verification_key) - }, - _ => false, - } -} - -extern "C" { - pub fn VerifyPlonkProofBLS12_381( - proof: ListRef, - public_input: ListRef, - verification_key: ListRef, - ) -> bool; - pub fn VerifyPlonkProofBN254( - proof: ListRef, - public_input: ListRef, - verification_key: ListRef, - ) -> bool; - pub fn VerifyGroth16ProofBN254( - proof: ListRef, - public_input: ListRef, - verification_key: ListRef, - ) -> bool; -} diff --git a/batcher/aligned-batcher/src/s3/mod.rs b/batcher/aligned-batcher/src/s3/mod.rs deleted file mode 100644 index 2fede38530..0000000000 --- a/batcher/aligned-batcher/src/s3/mod.rs +++ /dev/null @@ -1,41 +0,0 @@ -use aws_config::meta::region::RegionProviderChain; -use aws_config::BehaviorVersion; -use aws_sdk_s3::error::SdkError; -use aws_sdk_s3::operation::put_object::{PutObjectError, PutObjectOutput}; -use aws_sdk_s3::primitives::ByteStream; -use aws_sdk_s3::Client; -use log::info; - -pub async fn create_client(endpoint_url: Option) -> Client { - let region_provider = RegionProviderChain::default_provider().or_else("us-east-2"); - let mut config = aws_config::defaults(BehaviorVersion::latest()).region(region_provider); - if let Some(endpoint_url) = &endpoint_url { - info!("Using custom endpoint: {}", endpoint_url); - config = config.endpoint_url(endpoint_url); - } - let config = config.load().await; - - let mut s3_config_builder = aws_sdk_s3::config::Builder::from(&config); - if endpoint_url.is_some() { - info!("Forcing path style for custom endpoint"); - s3_config_builder = s3_config_builder.force_path_style(true); - } - Client::from_conf(s3_config_builder.build()) -} - -pub async fn upload_object( - client: &Client, - bucket_name: &str, - bytes: Vec, - key: &str, -) -> Result> { - let body = ByteStream::from(bytes); - - client - .put_object() - .bucket(bucket_name) - .key(key) - .body(body) - .send() - .await -} diff --git a/batcher/aligned-batcher/src/types/batch_state.rs b/batcher/aligned-batcher/src/types/batch_state.rs deleted file mode 100644 index 2df6a0cdc6..0000000000 --- a/batcher/aligned-batcher/src/types/batch_state.rs +++ /dev/null @@ -1,217 +0,0 @@ -use std::collections::{hash_map::Entry, HashMap}; - -use super::{ - batch_queue::{BatchQueue, BatchQueueEntry}, - user_state::UserState, -}; -use ethers::types::{Address, U256}; -use log::debug; - -pub(crate) struct BatchState { - pub(crate) batch_queue: BatchQueue, - pub(crate) user_states: HashMap, -} - -impl BatchState { - // CONSTRUCTORS: - - pub(crate) fn new() -> Self { - Self { - batch_queue: BatchQueue::new(), - user_states: HashMap::new(), - } - } - - pub(crate) fn new_with_user_states(user_states: HashMap) -> Self { - Self { - batch_queue: BatchQueue::new(), - user_states, - } - } - - // GETTERS: - - pub(crate) fn get_entry(&self, sender: Address, nonce: U256) -> Option<&BatchQueueEntry> { - self.batch_queue - .iter() - .map(|(entry, _)| entry) - .find(|entry| entry.sender == sender && entry.nonced_verification_data.nonce == nonce) - } - - pub(crate) fn get_user_state(&self, addr: &Address) -> Option<&UserState> { - self.user_states.get(addr) - } - - pub(crate) async fn get_user_nonce(&self, addr: &Address) -> Option { - let user_state = self.get_user_state(addr)?; - Some(user_state.nonce) - } - - pub(crate) async fn get_user_last_max_fee_limit(&self, addr: &Address) -> Option { - let user_state = self.get_user_state(addr)?; - Some(user_state.last_max_fee_limit) - } - - pub(crate) async fn get_user_total_fees_in_queue(&self, addr: &Address) -> Option { - let user_state = self.get_user_state(addr)?; - Some(user_state.total_fees_in_queue) - } - - pub(crate) async fn get_user_proof_count(&self, addr: &Address) -> Option { - let user_state = self.get_user_state(addr)?; - Some(user_state.proofs_in_batch) - } - - pub(crate) fn get_user_min_fee_in_batch(&self, addr: &Address) -> U256 { - self.batch_queue - .iter() - .filter(|(e, _)| &e.sender == addr) - .map(|(e, _)| e.nonced_verification_data.max_fee) - .min() - .unwrap_or(U256::max_value()) - } - - // SETTERS: - - pub(crate) fn update_user_max_fee_limit( - &mut self, - addr: &Address, - new_max_fee_limit: U256, - ) -> Option { - // TODO refactor to return Result, or something less redundant - if let Entry::Occupied(mut user_state) = self.user_states.entry(*addr) { - user_state.get_mut().last_max_fee_limit = new_max_fee_limit; - return Some(new_max_fee_limit); - } - None - } - - pub(crate) fn update_user_proof_count( - &mut self, - addr: &Address, - new_proof_count: usize, - ) -> Option { - // TODO refactor to return Result, or something less redundant - if let Entry::Occupied(mut user_state) = self.user_states.entry(*addr) { - user_state.get_mut().proofs_in_batch = new_proof_count; - return Some(new_proof_count); - } - None - } - - pub(crate) fn update_user_nonce(&mut self, addr: &Address, new_nonce: U256) -> Option { - // TODO refactor to return Result, or something less redundant - if let Entry::Occupied(mut user_state) = self.user_states.entry(*addr) { - user_state.get_mut().nonce = new_nonce; - return Some(new_nonce); - } - None - } - - pub(crate) fn update_user_total_fees_in_queue( - &mut self, - addr: &Address, - new_total_fees_in_queue: U256, - ) -> Option { - // TODO refactor to return Result, or something less redundant - if let Entry::Occupied(mut user_state) = self.user_states.entry(*addr) { - user_state.get_mut().total_fees_in_queue = new_total_fees_in_queue; - return Some(new_total_fees_in_queue); - } - None - } - - pub(crate) fn update_user_total_fees_in_queue_of_replacement_message( - &mut self, - addr: &Address, - original_max_fee: U256, - new_max_fee: U256, - ) -> Option { - // TODO refactor to return Result, or something less redundant - let fee_difference = new_max_fee - original_max_fee; //here we already know new_max_fee > original_max_fee - if let Entry::Occupied(mut user_state) = self.user_states.entry(*addr) { - user_state.get_mut().total_fees_in_queue += fee_difference; - return Some(user_state.get().total_fees_in_queue); - } - None - } - - /// Updates the user with address `addr` with the provided values of - /// `new_nonce`, `new_max_fee_limit`, `new_proof_count` and `new_total_fees_in_queue` - /// If state is updated successfully, returns the updated values inside a `Some()` - /// If the address was not found in the user states, returns `None` - pub(crate) fn update_user_state( - &mut self, - addr: &Address, - new_nonce: U256, - new_max_fee_limit: U256, - new_proof_count: usize, - new_total_fees_in_queue: U256, - ) -> Option<(U256, U256, usize, U256)> { - // TODO refactor to return Result, or something less redundant - let updated_nonce = self.update_user_nonce(addr, new_nonce); - let updated_max_fee_limit = self.update_user_max_fee_limit(addr, new_max_fee_limit); - let updated_proof_count = self.update_user_proof_count(addr, new_proof_count); - let updated_total_fees_in_queue = - self.update_user_total_fees_in_queue(addr, new_total_fees_in_queue); - - if updated_nonce.is_some() - && updated_max_fee_limit.is_some() - && updated_proof_count.is_some() - && updated_total_fees_in_queue.is_some() - { - return Some(( - new_nonce, - new_max_fee_limit, - new_proof_count, - new_total_fees_in_queue, - )); - } - None - } - - // LOGIC: - - pub(crate) fn calculate_new_user_states_data(&self) -> HashMap { - let mut updated_user_states = HashMap::new(); // address -> (proof_count, max_fee_limit, total_fees_in_queue) - for (entry, _) in self.batch_queue.iter() { - let addr = entry.sender; - let max_fee = entry.nonced_verification_data.max_fee; - - let (proof_count, max_fee_limit, total_fees_in_queue) = updated_user_states - .entry(addr) - .or_insert((0, max_fee, U256::zero())); - - *proof_count += 1; - *total_fees_in_queue += max_fee; - if max_fee < *max_fee_limit { - *max_fee_limit = max_fee; - } - } - - updated_user_states - } - - /// Checks if the entry is valid - /// An entry is valid if there is no entry with the same sender, lower nonce and a lower fee - pub(crate) fn replacement_entry_is_valid( - &mut self, - replacement_entry: &BatchQueueEntry, - ) -> bool { - let replacement_max_fee = replacement_entry.nonced_verification_data.max_fee; - let nonce = replacement_entry.nonced_verification_data.nonce; - let sender = replacement_entry.sender; - - debug!( - "Checking validity of entry with sender: {:?}, nonce: {:?}, max_fee: {:?}", - sender, nonce, replacement_max_fee - ); - - // it is a valid entry only if there is no entry with the same sender, lower nonce and a lower fee - !self.batch_queue.iter().any(|(entry, _)| { - entry.sender == sender - && entry.nonced_verification_data.nonce < nonce - && entry.nonced_verification_data.max_fee < replacement_max_fee - }) - } -} diff --git a/batcher/aligned-sdk/src/lib.rs b/batcher/aligned-sdk/src/lib.rs deleted file mode 100644 index 1f73d9ce2c..0000000000 --- a/batcher/aligned-sdk/src/lib.rs +++ /dev/null @@ -1,19 +0,0 @@ -pub mod core { - pub mod constants; - pub mod errors; - pub mod types; -} - -pub mod communication { - pub(crate) mod batch; - pub(crate) mod messaging; - pub mod protocol; - pub mod serialization; -} - -pub mod eth { - pub mod aligned_service_manager; - pub mod batcher_payment_service; -} - -pub mod sdk; diff --git a/batcher/package-lock.json b/batcher/package-lock.json deleted file mode 100644 index 8343585011..0000000000 --- a/batcher/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "batcher", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/common/proving_systems.go b/common/proving_systems.go index 86b10c03cd..8f8cd9e7d8 100644 --- a/common/proving_systems.go +++ b/common/proving_systems.go @@ -13,15 +13,16 @@ type ProvingSystemId uint16 const ( GnarkPlonkBls12_381 ProvingSystemId = iota GnarkPlonkBn254 - Groth16Bn254 + GnarkGroth16Bn254 SP1 Risc0 + CircomGroth16Bn256 Mina MinaAccount ) func (t *ProvingSystemId) String() string { - return [...]string{"GnarkPlonkBls12_381", "GnarkPlonkBn254", "Groth16Bn254", "SP1", "Mina", "MinaAccount"}[*t] + return [...]string{"GnarkPlonkBls12_381", "GnarkPlonkBn254", "GnarkGroth16Bn254", "SP1", "Mina", "MinaAccount"}[*t] } func ProvingSystemIdFromString(provingSystem string) (ProvingSystemId, error) { @@ -30,12 +31,14 @@ func ProvingSystemIdFromString(provingSystem string) (ProvingSystemId, error) { return GnarkPlonkBls12_381, nil case "GnarkPlonkBn254": return GnarkPlonkBn254, nil - case "Groth16Bn254": - return Groth16Bn254, nil + case "GnarkGroth16Bn254": + return GnarkGroth16Bn254, nil case "SP1": return SP1, nil case "Risc0": return Risc0, nil + case "CircomGroth16Bn256": + return CircomGroth16Bn256, nil case "Mina": return Mina, nil case "MinaAccount": @@ -51,12 +54,14 @@ func ProvingSystemIdToString(provingSystem ProvingSystemId) (string, error) { return "GnarkPlonkBls12_381", nil case GnarkPlonkBn254: return "GnarkPlonkBn254", nil - case Groth16Bn254: - return "Groth16Bn254", nil + case GnarkGroth16Bn254: + return "GnarkGroth16Bn254", nil case SP1: return "SP1", nil case Risc0: return "Risc0", nil + case CircomGroth16Bn256: + return "CircomGroth16Bn256", nil case Mina: return "Mina", nil case MinaAccount: @@ -109,12 +114,14 @@ func (s *ProvingSystemId) UnmarshalCBOR(data []byte) error { *s = GnarkPlonkBls12_381 case "GnarkPlonkBn254": *s = GnarkPlonkBn254 - case "Groth16Bn254": - *s = Groth16Bn254 + case "GnarkGroth16Bn254": + *s = GnarkGroth16Bn254 case "SP1": *s = SP1 case "Risc0": *s = Risc0 + case "CircomGroth16Bn256": + *s = CircomGroth16Bn256 case "Mina": *s = Mina case "MinaAccount": diff --git a/config-files/anvil.proof-aggregator.ecdsa.key.json b/config-files/anvil.proof-aggregator.ecdsa.key.json new file mode 100644 index 0000000000..36d0faf450 --- /dev/null +++ b/config-files/anvil.proof-aggregator.ecdsa.key.json @@ -0,0 +1 @@ +{"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"099dcf35ae8034b4184e1dfd0c1d9eec"},"ciphertext":"4ff6a86d5203e6496eee64e613f717ef087ffd0ac027911693214edc2142d7e3","kdf":"scrypt","kdfparams":{"dklen":32,"n":8192,"p":1,"r":8,"salt":"6b1afc37be33d7fbfc6e0fc536430838d01b13668f4fcc2a31b7dc8442647d53"},"mac":"7ddbaaad2be3b53bc5791250c350fc73fb181991a3fc958ef096b3f18060935e"},"id":"44d59152-aaf8-4d50-a412-1653bbaad7c4","version":3} diff --git a/config-files/config-aggregator-docker.yaml b/config-files/config-aggregator-docker.yaml index a8a4dcd302..fcd450b3f7 100644 --- a/config-files/config-aggregator-docker.yaml +++ b/config-files/config-aggregator-docker.yaml @@ -22,8 +22,8 @@ bls: ## Aggregator Configurations aggregator: server_ip_port_address: 0.0.0.0:8090 - bls_public_key_compendium_address: 0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44 - avs_service_manager_address: 0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690 + bls_public_key_compendium_address: '0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44' + avs_service_manager_address: '0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690' enable_metrics: true metrics_ip_port_address: 0.0.0.0:9091 telemetry_ip_port_address: localhost:4001 @@ -38,3 +38,4 @@ aggregator: # The Gas formula is percentage (gas_base_bump_percentage + gas_bump_incremental_percentage * i) / 100) is checked against this value # If it is higher, it will default to `gas_bump_percentage_limit` time_to_wait_before_bump: 72s # The time to wait for the receipt when responding to task. Suggested value 72 seconds (6 blocks) + poll_latest_batch_interval: 20s # The interval to poll for latest batches. Default: 20s diff --git a/config-files/config-aggregator-ethereum-package.yaml b/config-files/config-aggregator-ethereum-package.yaml index 3dcd3c98f7..757b0efcec 100644 --- a/config-files/config-aggregator-ethereum-package.yaml +++ b/config-files/config-aggregator-ethereum-package.yaml @@ -4,9 +4,9 @@ environment: "production" aligned_layer_deployment_config_file_path: "./contracts/script/output/devnet/alignedlayer_deployment_output.json" eigen_layer_deployment_config_file_path: "./contracts/script/output/devnet/eigenlayer_deployment_output.json" eth_rpc_url: "http://localhost:8545" -eth_rpc_url_fallback: "http://localhost:8550" +eth_rpc_url_fallback: "http://localhost:8551" eth_ws_url: "ws://localhost:8546" -eth_ws_url_fallback: "ws://localhost:8551" +eth_ws_url_fallback: "ws://localhost:8552" eigen_metrics_ip_port_address: "localhost:9090" ## ECDSA Configurations @@ -22,15 +22,16 @@ bls: ## Aggregator Configurations aggregator: server_ip_port_address: localhost:8090 - bls_public_key_compendium_address: 0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44 - avs_service_manager_address: 0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690 + bls_public_key_compendium_address: '0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44' + avs_service_manager_address: '0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690' enable_metrics: true metrics_ip_port_address: localhost:9091 telemetry_ip_port_address: localhost:4001 - garbage_collector_period: 2m #The period of the GC process. Suggested value for Prod: '168h' (7 days) - garbage_collector_tasks_age: 20 #The age of tasks that will be removed by the GC, in blocks. Suggested value for prod: '216000' (30 days) - garbage_collector_tasks_interval: 10 #The interval of queried blocks to get an old batch. Suggested value for prod: '900' (3 hours) + garbage_collector_period: 30m #The period of the GC process. Suggested value for Prod: '168h' (7 days) + garbage_collector_tasks_age: 300 #The age of tasks that will be removed by the GC, in blocks. Suggested value for prod: '216000' (30 days) + garbage_collector_tasks_interval: 300 #The interval of queried blocks to get an old batch. Suggested value for prod: '900' (3 hours) bls_service_task_timeout: 168h # The timeout of bls aggregation service tasks. Suggested value for prod '168h' (7 days) gas_base_bump_percentage: 10 # How much to bump gas price when responding to task. Suggested value 10% gas_bump_incremental_percentage: 2 # An extra percentage to bump every retry i*2 when responding to task. Suggested value 2% time_to_wait_before_bump: 36s # The time to wait for the receipt when responding to task. Suggested value 36 seconds (3 blocks) + poll_latest_batch_interval: 20s # The interval to poll for latest batches. Default: 20s diff --git a/config-files/config-aggregator.yaml b/config-files/config-aggregator.yaml index 73a9fe2259..06d6dc80e1 100644 --- a/config-files/config-aggregator.yaml +++ b/config-files/config-aggregator.yaml @@ -29,8 +29,8 @@ bls: ## Aggregator Configurations aggregator: server_ip_port_address: localhost:8090 - bls_public_key_compendium_address: 0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44 - avs_service_manager_address: 0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690 + bls_public_key_compendium_address: '0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44' + avs_service_manager_address: '0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690' enable_metrics: true metrics_ip_port_address: localhost:9091 telemetry_ip_port_address: localhost:4001 @@ -45,21 +45,4 @@ aggregator: # The Gas formula is percentage (gas_base_bump_percentage + gas_bump_incremental_percentage * i) / 100) is checked against this value # If it is higher, it will default to `gas_bump_percentage_limit` time_to_wait_before_bump: 72s # The time to wait for the receipt when responding to task. Suggested value 72 seconds (6 blocks) - -## Operator Configurations -# operator: -# aggregator_rpc_server_ip_port_address: localhost:8090 -# address: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -# earnings_receiver_address: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 -# delegation_approver_address: "0x0000000000000000000000000000000000000000" -# staker_opt_out_window_blocks: 0 -# metadata_url: "https://yetanotherco.github.io/operator_metadata/metadata.json" -# enable_metrics: true -# metrics_ip_port_address: localhost:9092 -# max_batch_size: 268435456 # 256 MiB -# # Operators variables needed for register it in EigenLayer -# el_delegation_manager_address: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9" -# private_key_store_path: config-files/anvil.ecdsa.key.json -# bls_private_key_store_path: config-files/anvil.bls.key.json -# signer_type: local_keystore -# chain_id: 31337 + poll_latest_batch_interval: 20s # The interval to poll for latest batches. Default: 20s diff --git a/config-files/config-batcher-docker.yaml b/config-files/config-batcher-docker.yaml index 0db1e4966a..cc1fdbaa78 100644 --- a/config-files/config-batcher-docker.yaml +++ b/config-files/config-batcher-docker.yaml @@ -21,12 +21,22 @@ batcher: block_interval: 3 batch_size_interval: 10 transaction_wait_timeout: 96000 # 8 blocks - max_proof_size: 67108864 # 64 MiB + max_proof_size: 4194304 # 4 MiB max_batch_byte_size: 268435456 # 256 MiB max_batch_proof_qty: 3000 # 3000 proofs in a batch + max_queue_size: 10000 pre_verification_is_enabled: true metrics_port: 9093 telemetry_ip_port_address: localhost:4001 non_paying: - address: 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 # Anvil address 9 + address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 replacement_private_key: ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Anvil address 1 + # When validating if the msg covers the minimum max fee + # A batch of how many proofs should it cover + amount_of_proofs_for_min_max_fee: 128 + # When replacing the message, how much higher should the max fee in comparison to the original one + # The calculation is replacement_max_fee >= original_max_fee + original_max_fee * min_bump_percentage / 100 + min_bump_percentage: 10 + # How often to poll for BalanceUnlocked events in seconds (default: 600 seconds = 10 minutes) + balance_unlock_polling_interval_seconds: 600 + diff --git a/config-files/config-batcher-ethereum-package.yaml b/config-files/config-batcher-ethereum-package.yaml index 5d33c7de5a..b525c04068 100644 --- a/config-files/config-batcher-ethereum-package.yaml +++ b/config-files/config-batcher-ethereum-package.yaml @@ -4,9 +4,9 @@ environment: "production" aligned_layer_deployment_config_file_path: "./contracts/script/output/devnet/alignedlayer_deployment_output.json" eigen_layer_deployment_config_file_path: "./contracts/script/output/devnet/eigenlayer_deployment_output.json" eth_rpc_url: "http://localhost:8545" -eth_rpc_url_fallback: "http://localhost:8550" +eth_rpc_url_fallback: "http://localhost:8551" eth_ws_url: "ws://localhost:8546" -eth_ws_url_fallback: "ws://localhost:8551" +eth_ws_url_fallback: "ws://localhost:8552" eigen_metrics_ip_port_address: "localhost:9090" ## ECDSA Configurations @@ -19,12 +19,22 @@ batcher: block_interval: 3 batch_size_interval: 10 transaction_wait_timeout: 36000 # 3 blocks - max_proof_size: 67108864 # 64 MiB + max_proof_size: 4194304 # 4 MiB max_batch_byte_size: 268435456 # 256 MiB max_batch_proof_qty: 3000 # 3000 proofs in a batch + max_queue_size: 10000 pre_verification_is_enabled: true metrics_port: 9093 telemetry_ip_port_address: localhost:4001 non_paying: - address: 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 # Anvil address 9 + address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 replacement_private_key: ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Anvil address 1 + # When validating if the msg covers the minimum max fee + # A batch of how many proofs should it cover + amount_of_proofs_for_min_max_fee: 128 + # When replacing the message, how much higher should the max fee in comparison to the original one + # The calculation is replacement_max_fee >= original_max_fee + original_max_fee * min_bump_percentage / 100 + min_bump_percentage: 10 + # How often to poll for BalanceUnlocked events in seconds (default: 600 seconds = 10 minutes) + balance_unlock_polling_interval_seconds: 600 + diff --git a/config-files/config-batcher.yaml b/config-files/config-batcher.yaml index c7c061946e..7b6065677a 100644 --- a/config-files/config-batcher.yaml +++ b/config-files/config-batcher.yaml @@ -21,12 +21,21 @@ batcher: block_interval: 3 batch_size_interval: 10 transaction_wait_timeout: 96000 # 8 blocks - max_proof_size: 67108864 # 64 MiB + max_proof_size: 4194304 # 4 MiB max_batch_byte_size: 268435456 # 256 MiB max_batch_proof_qty: 3000 # 3000 proofs in a batch + max_queue_size: 10000 pre_verification_is_enabled: true metrics_port: 9093 telemetry_ip_port_address: localhost:4001 non_paying: - address: 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 # Anvil address 9 + address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 replacement_private_key: ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Anvil address 1 + # When validating if the msg covers the minimum max fee + # A batch of how many proofs should it cover + amount_of_proofs_for_min_max_fee: 128 + # When replacing the message, how much higher should the max fee in comparison to the original one + # The calculation is replacement_max_fee >= original_max_fee + original_max_fee * min_bump_percentage / 100 + min_bump_percentage: 10 + # How often to poll for BalanceUnlocked events in seconds (default: 600 seconds = 10 minutes) + balance_unlock_polling_interval_seconds: 600 diff --git a/config-files/config-operator-1-ethereum-package.yaml b/config-files/config-operator-1-ethereum-package.yaml index 3f1b4897f6..40f9ea2b62 100644 --- a/config-files/config-operator-1-ethereum-package.yaml +++ b/config-files/config-operator-1-ethereum-package.yaml @@ -3,10 +3,10 @@ environment: 'development' aligned_layer_deployment_config_file_path: './contracts/script/output/devnet/alignedlayer_deployment_output.json' eigen_layer_deployment_config_file_path: './contracts/script/output/devnet/eigenlayer_deployment_output.json' -eth_rpc_url: 'http://localhost:8545' -eth_rpc_url_fallback: 'http://localhost:8550' -eth_ws_url: 'ws://localhost:8546' -eth_ws_url_fallback: 'ws://localhost:8551' +eth_rpc_url: "http://localhost:8545" +eth_rpc_url_fallback: "http://localhost:8551" +eth_ws_url: "ws://localhost:8546" +eth_ws_url_fallback: "ws://localhost:8552" eigen_metrics_ip_port_address: 'localhost:9090' ## ECDSA Configurations @@ -32,6 +32,7 @@ operator: metrics_ip_port_address: localhost:9092 max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: 'config-files/operator-1.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified # Operators variables needed for register it in EigenLayer el_delegation_manager_address: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9' diff --git a/config-files/config-operator-1.yaml b/config-files/config-operator-1.yaml index 0a1b1d552d..1dbc8872ac 100644 --- a/config-files/config-operator-1.yaml +++ b/config-files/config-operator-1.yaml @@ -23,8 +23,8 @@ bls: operator: aggregator_rpc_server_ip_port_address: localhost:8090 operator_tracker_ip_port_address: http://localhost:4001 - address: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 - earnings_receiver_address: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 + address: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' + earnings_receiver_address: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' delegation_approver_address: '0x0000000000000000000000000000000000000000' staker_opt_out_window_blocks: 0 metadata_url: 'https://yetanotherco.github.io/operator_metadata/metadata.json' @@ -32,6 +32,7 @@ operator: metrics_ip_port_address: localhost:9092 max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: 'config-files/operator-1.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified # Operators variables needed for register it in EigenLayer el_delegation_manager_address: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9' diff --git a/config-files/config-operator-2.yaml b/config-files/config-operator-2.yaml index 8a7c6d8015..dc5deda34c 100644 --- a/config-files/config-operator-2.yaml +++ b/config-files/config-operator-2.yaml @@ -23,13 +23,14 @@ bls: operator: aggregator_rpc_server_ip_port_address: localhost:8090 operator_tracker_ip_port_address: http://localhost:4001 - address: 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC - earnings_receiver_address: 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC + address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC' + earnings_receiver_address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC' delegation_approver_address: '0x0000000000000000000000000000000000000000' staker_opt_out_window_blocks: 0 metadata_url: 'https://yetanotherco.github.io/operator_metadata/metadata.json' max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: 'config-files/operator-2.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified # Operators variables needed for register it in EigenLayer el_delegation_manager_address: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9' diff --git a/config-files/config-operator-3.yaml b/config-files/config-operator-3.yaml index a844e96367..241e0895c2 100644 --- a/config-files/config-operator-3.yaml +++ b/config-files/config-operator-3.yaml @@ -23,13 +23,14 @@ bls: operator: aggregator_rpc_server_ip_port_address: localhost:8090 operator_tracker_ip_port_address: http://localhost:4001 - address: 0x90F79bf6EB2c4f870365E785982E1f101E93b906 - earnings_receiver_address: 0x90F79bf6EB2c4f870365E785982E1f101E93b906 + address: '0x90F79bf6EB2c4f870365E785982E1f101E93b906' + earnings_receiver_address: '0x90F79bf6EB2c4f870365E785982E1f101E93b906' delegation_approver_address: '0x0000000000000000000000000000000000000000' staker_opt_out_window_blocks: 0 metadata_url: 'https://yetanotherco.github.io/operator_metadata/metadata.json' max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: 'config-files/operator-3.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified # Operators variables needed for register it in EigenLayer el_delegation_manager_address: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9' diff --git a/config-files/config-operator-docker.yaml b/config-files/config-operator-docker.yaml index 57aed7f159..2139aa60b4 100644 --- a/config-files/config-operator-docker.yaml +++ b/config-files/config-operator-docker.yaml @@ -23,8 +23,8 @@ bls: operator: aggregator_rpc_server_ip_port_address: aggregator:8090 operator_tracker_ip_port_address: http://localhost:3030 - address: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 - earnings_receiver_address: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 + address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' + earnings_receiver_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' delegation_approver_address: "0x0000000000000000000000000000000000000000" staker_opt_out_window_blocks: 0 metadata_url: "https://yetanotherco.github.io/operator_metadata/metadata.json" @@ -32,6 +32,7 @@ operator: metrics_ip_port_address: localhost:9092 max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: config-files/operator.last_processed_batch.json + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified # Operators variables needed for register it in EigenLayer el_delegation_manager_address: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9" private_key_store_path: config-files/anvil.ecdsa.key.json diff --git a/config-files/config-operator-holesky.yaml b/config-files/config-operator-holesky.yaml index 1432f9d0f8..bc8cd709bc 100644 --- a/config-files/config-operator-holesky.yaml +++ b/config-files/config-operator-holesky.yaml @@ -32,3 +32,4 @@ operator: metrics_ip_port_address: localhost:9092 max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: 'config-files/operator.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified diff --git a/config-files/config-operator-hoodi.yaml b/config-files/config-operator-hoodi.yaml new file mode 100644 index 0000000000..1be384d17f --- /dev/null +++ b/config-files/config-operator-hoodi.yaml @@ -0,0 +1,35 @@ +# Common variables for all the services +# 'production' only prints info and above. 'development' also prints debug +environment: 'production' +aligned_layer_deployment_config_file_path: './contracts/script/output/hoodi/alignedlayer_deployment_output.json' +eigen_layer_deployment_config_file_path: './contracts/script/output/hoodi/eigenlayer_deployment_output.json' +eth_rpc_url: 'https://ethereum-hoodi-rpc.publicnode.com' # DO NOT USE PUBLIC NODE IN PRODUCTION +eth_rpc_url_fallback: 'https://ethereum-hoodi-rpc.publicnode.com' +eth_ws_url: 'wss://ethereum-hoodi-rpc.publicnode.com' # DO NOT USE PUBLIC NODE IN PRODUCTION +eth_ws_url_fallback: 'wss://ethereum-hoodi-rpc.publicnode.com' +eigen_metrics_ip_port_address: 'localhost:9090' + +## ECDSA Configurations +ecdsa: + private_key_store_path: '' + private_key_store_password: '' + +## BLS Configurations +bls: + private_key_store_path: '' + private_key_store_password: '' + +## Operator Configurations +operator: + aggregator_rpc_server_ip_port_address: hoodi.aggregator.alignedlayer.com:8090 + operator_tracker_ip_port_address: https://hoodi.telemetry.alignedlayer.com + address: '' + earnings_receiver_address: '' #Can be the same as the operator. + delegation_approver_address: '0x0000000000000000000000000000000000000000' + staker_opt_out_window_blocks: 0 + metadata_url: + enable_metrics: true + metrics_ip_port_address: localhost:9092 + max_batch_size: 268435456 # 256 MiB + last_processed_batch_filepath: 'config-files/operator.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified diff --git a/config-files/config-operator-mainnet.yaml b/config-files/config-operator-mainnet.yaml index 3920aada16..a7e7be8870 100644 --- a/config-files/config-operator-mainnet.yaml +++ b/config-files/config-operator-mainnet.yaml @@ -32,3 +32,4 @@ operator: metrics_ip_port_address: localhost:9092 max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: 'config-files/operator.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified diff --git a/config-files/config-operator-sepolia.yaml b/config-files/config-operator-sepolia.yaml new file mode 100644 index 0000000000..4d2564d137 --- /dev/null +++ b/config-files/config-operator-sepolia.yaml @@ -0,0 +1,35 @@ +# Common variables for all the services +# 'production' only prints info and above. 'development' also prints debug +environment: 'production' +aligned_layer_deployment_config_file_path: './contracts/script/output/sepolia/alignedlayer_deployment_output.json' +eigen_layer_deployment_config_file_path: './contracts/script/output/sepolia/eigenlayer_deployment_output.json' +eth_rpc_url: 'https://ethereum-sepolia-rpc.publicnode.com' # DO NOT USE PUBLIC NODE IN PRODUCTION +eth_rpc_url_fallback: 'https://ethereum-sepolia-rpc.publicnode.com' +eth_ws_url: 'wss://ethereum-sepolia-rpc.publicnode.com' # DO NOT USE PUBLIC NODE IN PRODUCTION +eth_ws_url_fallback: 'wss://ethereum-sepolia-rpc.publicnode.com' +eigen_metrics_ip_port_address: 'localhost:9090' + +## ECDSA Configurations +ecdsa: + private_key_store_path: '' + private_key_store_password: '' + +## BLS Configurations +bls: + private_key_store_path: '' + private_key_store_password: '' + +## Operator Configurations +operator: + aggregator_rpc_server_ip_port_address: sepolia.aggregator.alignedlayer.com:8090 + operator_tracker_ip_port_address: https://sepolia.telemetry.alignedlayer.com + address: '' + earnings_receiver_address: '' #Can be the same as the operator. + delegation_approver_address: '0x0000000000000000000000000000000000000000' + staker_opt_out_window_blocks: 0 + metadata_url: + enable_metrics: true + metrics_ip_port_address: localhost:9092 + max_batch_size: 268435456 # 256 MiB + last_processed_batch_filepath: 'config-files/operator.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified diff --git a/config-files/config-operator.yaml b/config-files/config-operator.yaml index f700326acf..d17b402d01 100644 --- a/config-files/config-operator.yaml +++ b/config-files/config-operator.yaml @@ -32,3 +32,4 @@ operator: metrics_ip_port_address: localhost:9092 max_batch_size: 268435456 # 256 MiB last_processed_batch_filepath: 'config-files/operator.last_processed_batch.json' + poll_latest_batch_interval: 20s # Optional: The interval to poll for latest batches. Default: 20s if not specified diff --git a/config-files/config-proof-aggregator-ethereum-package.yaml b/config-files/config-proof-aggregator-ethereum-package.yaml new file mode 100644 index 0000000000..5865273ab4 --- /dev/null +++ b/config-files/config-proof-aggregator-ethereum-package.yaml @@ -0,0 +1,18 @@ +aligned_service_manager_address: "0x851356ae760d987E095750cCeb3bC6014560891C" +proof_aggregation_service_address: "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc" +eth_rpc_url: "http://localhost:8545" +eth_ws_url: "ws://localhost:8546" +max_proofs_in_queue: 1000 +last_aggregated_block_filepath: config-files/proof-aggregator.last_aggregated_block.json +proofs_per_chunk: 512 # Amount of proofs to process per chunk +# This number comes from the blob data limit +# Since each blob has a capacity of (4096 * 32) = 131.072 bytes +# But to not surpass the field modulus we pad with a 0xo byte so we have (4096 * 31) = 126.976 bytes +# of usable data +# Since each proof commitments takes 32 bytes hash +# We can aggregate as much proofs as 126.976 / 32 = 3968 per blob +total_proofs_limit: 3968 + +ecdsa: + private_key_store_path: "config-files/anvil.proof-aggregator.ecdsa.key.json" + private_key_store_password: "" diff --git a/config-files/config-proof-aggregator-mock-ethereum-package.yaml b/config-files/config-proof-aggregator-mock-ethereum-package.yaml new file mode 100644 index 0000000000..fd8b36c34b --- /dev/null +++ b/config-files/config-proof-aggregator-mock-ethereum-package.yaml @@ -0,0 +1,19 @@ +aligned_service_manager_address: "0x851356ae760d987E095750cCeb3bC6014560891C" +proof_aggregation_service_address: "0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07" +eth_rpc_url: "http://localhost:8545" +eth_ws_url: "ws://localhost:8546" +max_proofs_in_queue: 1000 +last_aggregated_block_filepath: config-files/proof-aggregator.last_aggregated_block.json +proofs_per_chunk: 512 # Amount of proofs to process per chunk +# This number comes from the blob data limit +# Since each blob has a capacity of (4096 * 32) = 131.072 bytes +# But to not surpass the field modulus we pad with a 0xo byte so we have (4096 * 31) = 126.976 bytes +# of usable data +# Since each proof commitments takes 32 bytes hash +# We can aggregate as much proofs as 126.976 / 32 = 3968 per blob +total_proofs_limit: 3968 + + +ecdsa: + private_key_store_path: "config-files/anvil.proof-aggregator.ecdsa.key.json" + private_key_store_password: "" diff --git a/config-files/config-proof-aggregator-mock.yaml b/config-files/config-proof-aggregator-mock.yaml new file mode 100644 index 0000000000..29fbf5ef21 --- /dev/null +++ b/config-files/config-proof-aggregator-mock.yaml @@ -0,0 +1,19 @@ +aligned_service_manager_address: "0x851356ae760d987E095750cCeb3bC6014560891C" +proof_aggregation_service_address: "0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07" +eth_rpc_url: "http://localhost:8545" +eth_ws_url: "ws://localhost:8545" +max_proofs_in_queue: 1000 +last_aggregated_block_filepath: config-files/proof-aggregator.last_aggregated_block.json +proofs_per_chunk: 512 # Amount of proofs to process per chunk +# This number comes from the blob data limit +# Since each blob has a capacity of (4096 * 32) = 131.072 bytes +# But to not surpass the field modulus we pad with a 0xo byte so we have (4096 * 31) = 126.976 bytes +# of usable data +# Since each proof commitments takes 32 bytes hash +# We can aggregate as much proofs as 126.976 / 32 = 3968 per blob +total_proofs_limit: 3968 + + +ecdsa: + private_key_store_path: "config-files/anvil.proof-aggregator.ecdsa.key.json" + private_key_store_password: "" diff --git a/config-files/config-proof-aggregator.yaml b/config-files/config-proof-aggregator.yaml new file mode 100644 index 0000000000..58f7dd2ff0 --- /dev/null +++ b/config-files/config-proof-aggregator.yaml @@ -0,0 +1,19 @@ +aligned_service_manager_address: "0x851356ae760d987E095750cCeb3bC6014560891C" +proof_aggregation_service_address: "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc" +eth_rpc_url: "http://localhost:8545" +eth_ws_url: "ws://localhost:8545" +max_proofs_in_queue: 1000 +last_aggregated_block_filepath: config-files/proof-aggregator.last_aggregated_block.json +proofs_per_chunk: 512 # Amount of proofs to process per chunk +# This number comes from the blob data limit +# Since each blob has a capacity of (4096 * 32) = 131.072 bytes +# But to not surpass the field modulus we pad with a 0xo byte so we have (4096 * 31) = 126.976 bytes +# of usable data +# Since each proof commitments takes 32 bytes hash +# We can aggregate as much proofs as 126.976 / 32 = 3968 per blob +total_proofs_limit: 3968 + + +ecdsa: + private_key_store_path: "config-files/anvil.proof-aggregator.ecdsa.key.json" + private_key_store_password: "" diff --git a/config-files/config.yaml b/config-files/config.yaml index 3f53d6617a..c2fe8582ec 100644 --- a/config-files/config.yaml +++ b/config-files/config.yaml @@ -31,8 +31,8 @@ batcher: ## Aggregator Configurations aggregator: server_ip_port_address: localhost:8090 - bls_public_key_compendium_address: 0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44 - avs_service_manager_address: 0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690 + bls_public_key_compendium_address: '0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44' + avs_service_manager_address: '0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690' enable_metrics: true metrics_ip_port_address: localhost:9091 bls_service_task_timeout: 168h # The timeout of bls aggregation service tasks. Suggested value for prod '168h' (7 days) @@ -41,8 +41,8 @@ aggregator: operator: aggregator_rpc_server_ip_port_address: localhost:8090 operator_tracker_ip_port_address: http://localhost:4001 - address: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 - earnings_receiver_address: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 + address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' + earnings_receiver_address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' delegation_approver_address: '0x0000000000000000000000000000000000000000' staker_opt_out_window_blocks: 0 metadata_url: 'https://yetanotherco.github.io/operator_metadata/metadata.json' diff --git a/config-files/proof-aggregator.last_aggregated_block.json b/config-files/proof-aggregator.last_aggregated_block.json new file mode 100644 index 0000000000..ba4603abe6 --- /dev/null +++ b/config-files/proof-aggregator.last_aggregated_block.json @@ -0,0 +1 @@ +{"last_aggregated_block":0} diff --git a/contracts/deployments/31337.json b/contracts/deployments/31337.json new file mode 100644 index 0000000000..35a1fd99d7 --- /dev/null +++ b/contracts/deployments/31337.json @@ -0,0 +1,5 @@ +{ + "CREATE2_SALT": "0x0000000000000000000000000000000000000000000000000000000000000009", + "SP1_VERIFIER_GATEWAY_GROTH16": "0x06530DD13aFB697B81E2d602a279EBAEC8Ca2E31", + "V5_0_0_SP1_VERIFIER_GROTH16": "0x0D09209634e053E5A243A04AE58095f3083a1FCf" +} \ No newline at end of file diff --git a/contracts/deployments/560048.json b/contracts/deployments/560048.json new file mode 100644 index 0000000000..269362cf52 --- /dev/null +++ b/contracts/deployments/560048.json @@ -0,0 +1,5 @@ +{ + "CREATE2_SALT": "0x0000000000000000000000000000000000000000000000000000000000000019", + "SP1_VERIFIER_GATEWAY_GROTH16": "0xe1D19B93F2052d42967bCe42e6d4125A31A0e9ef", + "V5_0_0_SP1_VERIFIER_GROTH16": "0x5E925d64f4A612067e082FE965696035C118bd1b" +} \ No newline at end of file diff --git a/contracts/eigenlayer_contracts/README.md b/contracts/eigenlayer_contracts/README.md new file mode 100644 index 0000000000..e6ea084b67 --- /dev/null +++ b/contracts/eigenlayer_contracts/README.md @@ -0,0 +1,7 @@ +# README + +This directory contains the Eigenlayer contracts, version `v1.4.2`. + +These contracts are used in our Anvil deployment. + +As of this writing, they align with the Eigenlayer contracts deployed on Mainnet and Holesky Testnet. diff --git a/contracts/eigenlayer_contracts/eigenlayer-contracts b/contracts/eigenlayer_contracts/eigenlayer-contracts new file mode 160000 index 0000000000..336cab36cf --- /dev/null +++ b/contracts/eigenlayer_contracts/eigenlayer-contracts @@ -0,0 +1 @@ +Subproject commit 336cab36cfbfbe62eab5e63942581921f4a079d3 diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 4d94e0ca5a..ae299bc6ce 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -4,4 +4,17 @@ out = "out" libs = ["lib"] # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options -fs_permissions = [{ access = "read-write", path = "./script/output"}, {access = "read", path = "./script/deploy"}] +fs_permissions = [ + { access = "read-write", path = "./script/output" }, + { access = "read", path = "./script/deploy" }, + { access = "read-write", path = "./deployments" }, +] + +# Enables or disables the optimizer +optimizer = true +# The number of optimizer runs +optimizer_runs = 200 +# Whether or not to use the Yul intermediate representation compilation pipeline +via_ir = true +# Override the Solidity version (this overrides `auto_detect_solc`) +solc_version = '0.8.27' diff --git a/contracts/lib/risc0-ethereum b/contracts/lib/risc0-ethereum new file mode 160000 index 0000000000..32aa0b6f23 --- /dev/null +++ b/contracts/lib/risc0-ethereum @@ -0,0 +1 @@ +Subproject commit 32aa0b6f23ddd02dd93fc71717667606e5c7db86 diff --git a/contracts/lib/sp1-contracts b/contracts/lib/sp1-contracts new file mode 160000 index 0000000000..512b5e029a --- /dev/null +++ b/contracts/lib/sp1-contracts @@ -0,0 +1 @@ +Subproject commit 512b5e029abc27f6e46a3c7eba220dac83ecc306 diff --git a/contracts/remappings.txt b/contracts/remappings.txt index ab4f6e788a..13693474d9 100644 --- a/contracts/remappings.txt +++ b/contracts/remappings.txt @@ -5,3 +5,6 @@ eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/ forge-std/=lib/forge-std/src/ @openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/ @openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/ +@sp1-contracts/=lib/sp1-contracts/contracts/src/ +@risc0-contracts/=lib/risc0-ethereum/contracts/src/ +openzeppelin/=lib/risc0-ethereum/lib/openzeppelin-contracts diff --git a/contracts/script/deploy/AlignedLayerDeployer.s.sol b/contracts/script/deploy/AlignedLayerDeployer.s.sol index 9c2cc1ab53..5c20ac040a 100644 --- a/contracts/script/deploy/AlignedLayerDeployer.s.sol +++ b/contracts/script/deploy/AlignedLayerDeployer.s.sol @@ -107,6 +107,9 @@ contract AlignedLayerDeployer is ExistingDeploymentParser { vm.startBroadcast(); + // Empty contract to use as initial implementation for proxies + EmptyContract emptyContract = new EmptyContract(); + // deploy proxy admin for ability to upgrade proxy contracts alignedLayerProxyAdmin = new ProxyAdmin(); @@ -302,239 +305,239 @@ contract AlignedLayerDeployer is ExistingDeploymentParser { _writeOutput(config_data, outputPath); } - function xtest( - string memory existingDeploymentInfoPath, - string memory deployConfigPath - ) external { - // get info on all the already-deployed contracts - _parseDeployedContracts(existingDeploymentInfoPath); - - // READ JSON CONFIG DATA - string memory config_data = vm.readFile(deployConfigPath); - - // check that the chainID matches the one in the config - uint256 currentChainId = block.chainid; - uint256 configChainId = stdJson.readUint( - config_data, - ".chainInfo.chainId" - ); - emit log_named_uint("You are deploying on ChainID", currentChainId); - require( - configChainId == currentChainId, - "You are on the wrong chain for this config" - ); - - // parse the addresses of permissioned roles - alignedLayerOwner = stdJson.readAddress( - config_data, - ".permissions.owner" - ); - alignedLayerUpgrader = stdJson.readAddress( - config_data, - ".permissions.upgrader" - ); - alignedLayerPauser = stdJson.readAddress( - config_data, - ".permissions.pauser" - ); - initalPausedStatus = stdJson.readUint( - config_data, - ".permissions.initalPausedStatus" - ); - - deployer = stdJson.readAddress(config_data, ".permissions.deployer"); - vm.startPrank(deployer); - - // deploy proxy admin for ability to upgrade proxy contracts - alignedLayerProxyAdmin = new ProxyAdmin(); - - //deploy pauser registry - { - address[] memory pausers = new address[](1); - pausers[0] = alignedLayerPauser; - pauserRegistry = new PauserRegistry(pausers, alignedLayerPauser); // (pausers, unpauser) - } - - //deploy service manager router - serviceManagerRouter = new ServiceManagerRouter(); - - /** - * First, deploy upgradeable proxy contracts that **will point** to the implementations. Since the implementation contracts are - * not yet deployed, we give these proxies an empty contract as the initial implementation, to act as if they have no code. - */ - alignedLayerServiceManager = AlignedLayerServiceManager( - payable( - new TransparentUpgradeableProxy( - address(emptyContract), - address(alignedLayerProxyAdmin), - "" - ) - ) - ); - registryCoordinator = RegistryCoordinator( - address( - new TransparentUpgradeableProxy( - address(emptyContract), - address(alignedLayerProxyAdmin), - "" - ) - ) - ); - indexRegistry = IndexRegistry( - address( - new TransparentUpgradeableProxy( - address(emptyContract), - address(alignedLayerProxyAdmin), - "" - ) - ) - ); - stakeRegistry = StakeRegistry( - address( - new TransparentUpgradeableProxy( - address(emptyContract), - address(alignedLayerProxyAdmin), - "" - ) - ) - ); - apkRegistry = BLSApkRegistry( - address( - new TransparentUpgradeableProxy( - address(emptyContract), - address(alignedLayerProxyAdmin), - "" - ) - ) - ); - - //deploy index registry implementation - indexRegistryImplementation = new IndexRegistry(registryCoordinator); - - //upgrade index registry proxy to implementation - alignedLayerProxyAdmin.upgrade( - TransparentUpgradeableProxy(payable(address(indexRegistry))), - address(indexRegistryImplementation) - ); - - //deploy stake registry implementation - stakeRegistryImplementation = new StakeRegistry( - registryCoordinator, - delegationManager - ); - - //upgrade stake registry proxy to implementation - alignedLayerProxyAdmin.upgrade( - TransparentUpgradeableProxy(payable(address(stakeRegistry))), - address(stakeRegistryImplementation) - ); - - //deploy apk registry implementation - apkRegistryImplementation = new BLSApkRegistry(registryCoordinator); - - //upgrade apk registry proxy to implementation - alignedLayerProxyAdmin.upgrade( - TransparentUpgradeableProxy(payable(address(apkRegistry))), - address(apkRegistryImplementation) - ); - - //deploy the registry coordinator implementation. - registryCoordinatorImplementation = new RegistryCoordinator( - IServiceManager(address(alignedLayerServiceManager)), - stakeRegistry, - apkRegistry, - indexRegistry - ); - - { - // parse initalization params and permissions from config data - ( - uint96[] memory minimumStakeForQuourm, - IStakeRegistry.StrategyParams[][] - memory strategyAndWeightingMultipliers - ) = _parseStakeRegistryParams(config_data); - ( - IRegistryCoordinator.OperatorSetParam[] - memory operatorSetParams, - address churner, - address ejector - ) = _parseRegistryCoordinatorParams(config_data); - - //upgrade the registry coordinator proxy to implementation - alignedLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy( - payable(address(registryCoordinator)) - ), - address(registryCoordinatorImplementation), - abi.encodeWithSelector( - RegistryCoordinator.initialize.selector, - alignedLayerOwner, - churner, - ejector, - pauserRegistry, - initalPausedStatus, - operatorSetParams, - minimumStakeForQuourm, - strategyAndWeightingMultipliers - ) - ); - } - - //deploy the alignedLayer service manager implementation - alignedLayerServiceManagerImplementation = new AlignedLayerServiceManager( - avsDirectory, - rewardsCoordinator, - registryCoordinator, - stakeRegistry - ); - - //upgrade the alignedLayer service manager proxy to implementation - alignedLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy( - payable(address(alignedLayerServiceManager)) - ), - address(alignedLayerServiceManagerImplementation), - abi.encodeWithSelector( - AlignedLayerServiceManager.initialize.selector, - deployer, - deployer, - pauserRegistry, - initalPausedStatus - ) - ); - - string memory metadataURI = stdJson.readString(config_data, ".uri"); - alignedLayerServiceManager.updateAVSMetadataURI(metadataURI); - alignedLayerServiceManager.transferOwnership(alignedLayerOwner); - - //deploy the operator state retriever - operatorStateRetriever = new OperatorStateRetriever(); - - // transfer ownership of proxy admin to upgrader - alignedLayerProxyAdmin.transferOwnership(alignedLayerUpgrader); - - vm.stopPrank(); - - // sanity checks - __verifyContractPointers( - apkRegistry, - alignedLayerServiceManager, - registryCoordinator, - indexRegistry, - stakeRegistry - ); - - __verifyContractPointers( - apkRegistryImplementation, - alignedLayerServiceManagerImplementation, - registryCoordinatorImplementation, - indexRegistryImplementation, - stakeRegistryImplementation - ); - - __verifyImplementations(); - __verifyInitalizations(config_data); - } +// function xtest( +// string memory existingDeploymentInfoPath, +// string memory deployConfigPath +// ) external { +// // get info on all the already-deployed contracts +// _parseDeployedContracts(existingDeploymentInfoPath); +// +// // READ JSON CONFIG DATA +// string memory config_data = vm.readFile(deployConfigPath); +// +// // check that the chainID matches the one in the config +// uint256 currentChainId = block.chainid; +// uint256 configChainId = stdJson.readUint( +// config_data, +// ".chainInfo.chainId" +// ); +// emit log_named_uint("You are deploying on ChainID", currentChainId); +// require( +// configChainId == currentChainId, +// "You are on the wrong chain for this config" +// ); +// +// // parse the addresses of permissioned roles +// alignedLayerOwner = stdJson.readAddress( +// config_data, +// ".permissions.owner" +// ); +// alignedLayerUpgrader = stdJson.readAddress( +// config_data, +// ".permissions.upgrader" +// ); +// alignedLayerPauser = stdJson.readAddress( +// config_data, +// ".permissions.pauser" +// ); +// initalPausedStatus = stdJson.readUint( +// config_data, +// ".permissions.initalPausedStatus" +// ); +// +// deployer = stdJson.readAddress(config_data, ".permissions.deployer"); +// vm.startPrank(deployer); +// +// // deploy proxy admin for ability to upgrade proxy contracts +// alignedLayerProxyAdmin = new ProxyAdmin(); +// +// //deploy pauser registry +// { +// address[] memory pausers = new address[](1); +// pausers[0] = alignedLayerPauser; +// pauserRegistry = new PauserRegistry(pausers, alignedLayerPauser); // (pausers, unpauser) +// } +// +// //deploy service manager router +// serviceManagerRouter = new ServiceManagerRouter(); +// +// /** +// * First, deploy upgradeable proxy contracts that **will point** to the implementations. Since the implementation contracts are +// * not yet deployed, we give these proxies an empty contract as the initial implementation, to act as if they have no code. +// */ +// alignedLayerServiceManager = AlignedLayerServiceManager( +// payable( +// new TransparentUpgradeableProxy( +// address(emptyContract), +// address(alignedLayerProxyAdmin), +// "" +// ) +// ) +// ); +// registryCoordinator = RegistryCoordinator( +// address( +// new TransparentUpgradeableProxy( +// address(emptyContract), +// address(alignedLayerProxyAdmin), +// "" +// ) +// ) +// ); +// indexRegistry = IndexRegistry( +// address( +// new TransparentUpgradeableProxy( +// address(emptyContract), +// address(alignedLayerProxyAdmin), +// "" +// ) +// ) +// ); +// stakeRegistry = StakeRegistry( +// address( +// new TransparentUpgradeableProxy( +// address(emptyContract), +// address(alignedLayerProxyAdmin), +// "" +// ) +// ) +// ); +// apkRegistry = BLSApkRegistry( +// address( +// new TransparentUpgradeableProxy( +// address(emptyContract), +// address(alignedLayerProxyAdmin), +// "" +// ) +// ) +// ); +// +// //deploy index registry implementation +// indexRegistryImplementation = new IndexRegistry(registryCoordinator); +// +// //upgrade index registry proxy to implementation +// alignedLayerProxyAdmin.upgrade( +// TransparentUpgradeableProxy(payable(address(indexRegistry))), +// address(indexRegistryImplementation) +// ); +// +// //deploy stake registry implementation +// stakeRegistryImplementation = new StakeRegistry( +// registryCoordinator, +// delegationManager +// ); +// +// //upgrade stake registry proxy to implementation +// alignedLayerProxyAdmin.upgrade( +// TransparentUpgradeableProxy(payable(address(stakeRegistry))), +// address(stakeRegistryImplementation) +// ); +// +// //deploy apk registry implementation +// apkRegistryImplementation = new BLSApkRegistry(registryCoordinator); +// +// //upgrade apk registry proxy to implementation +// alignedLayerProxyAdmin.upgrade( +// TransparentUpgradeableProxy(payable(address(apkRegistry))), +// address(apkRegistryImplementation) +// ); +// +// //deploy the registry coordinator implementation. +// registryCoordinatorImplementation = new RegistryCoordinator( +// IServiceManager(address(alignedLayerServiceManager)), +// stakeRegistry, +// apkRegistry, +// indexRegistry +// ); +// +// { +// // parse initalization params and permissions from config data +// ( +// uint96[] memory minimumStakeForQuourm, +// IStakeRegistry.StrategyParams[][] +// memory strategyAndWeightingMultipliers +// ) = _parseStakeRegistryParams(config_data); +// ( +// IRegistryCoordinator.OperatorSetParam[] +// memory operatorSetParams, +// address churner, +// address ejector +// ) = _parseRegistryCoordinatorParams(config_data); +// +// //upgrade the registry coordinator proxy to implementation +// alignedLayerProxyAdmin.upgradeAndCall( +// TransparentUpgradeableProxy( +// payable(address(registryCoordinator)) +// ), +// address(registryCoordinatorImplementation), +// abi.encodeWithSelector( +// RegistryCoordinator.initialize.selector, +// alignedLayerOwner, +// churner, +// ejector, +// pauserRegistry, +// initalPausedStatus, +// operatorSetParams, +// minimumStakeForQuourm, +// strategyAndWeightingMultipliers +// ) +// ); +// } +// +// //deploy the alignedLayer service manager implementation +// alignedLayerServiceManagerImplementation = new AlignedLayerServiceManager( +// avsDirectory, +// rewardsCoordinator, +// registryCoordinator, +// stakeRegistry +// ); +// +// //upgrade the alignedLayer service manager proxy to implementation +// alignedLayerProxyAdmin.upgradeAndCall( +// TransparentUpgradeableProxy( +// payable(address(alignedLayerServiceManager)) +// ), +// address(alignedLayerServiceManagerImplementation), +// abi.encodeWithSelector( +// AlignedLayerServiceManager.initialize.selector, +// deployer, +// deployer, +// pauserRegistry, +// initalPausedStatus +// ) +// ); +// +// string memory metadataURI = stdJson.readString(config_data, ".uri"); +// alignedLayerServiceManager.updateAVSMetadataURI(metadataURI); +// alignedLayerServiceManager.transferOwnership(alignedLayerOwner); +// +// //deploy the operator state retriever +// operatorStateRetriever = new OperatorStateRetriever(); +// +// // transfer ownership of proxy admin to upgrader +// alignedLayerProxyAdmin.transferOwnership(alignedLayerUpgrader); +// +// vm.stopPrank(); +// +// // sanity checks +// __verifyContractPointers( +// apkRegistry, +// alignedLayerServiceManager, +// registryCoordinator, +// indexRegistry, +// stakeRegistry +// ); +// +// __verifyContractPointers( +// apkRegistryImplementation, +// alignedLayerServiceManagerImplementation, +// registryCoordinatorImplementation, +// indexRegistryImplementation, +// stakeRegistryImplementation +// ); +// +// __verifyImplementations(); +// __verifyInitalizations(config_data); +// } function __verifyContractPointers( BLSApkRegistry _apkRegistry, diff --git a/contracts/script/deploy/AlignedProofAggregationServiceDeployer.s.sol b/contracts/script/deploy/AlignedProofAggregationServiceDeployer.s.sol new file mode 100644 index 0000000000..167ae11e2a --- /dev/null +++ b/contracts/script/deploy/AlignedProofAggregationServiceDeployer.s.sol @@ -0,0 +1,54 @@ +pragma solidity ^0.8.12; + +import {AlignedProofAggregationService} from "../../src/core/AlignedProofAggregationService.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import "forge-std/Script.sol"; +import "forge-std/StdJson.sol"; + +contract AlignedProofAggregationServiceDeployer is Script { + function run(string memory configPath, string memory outputPath) external returns (address, address) { + string memory config_data = vm.readFile(configPath); + + address alignedAggregatorAddress = stdJson.readAddress(config_data, ".address.alignedAggregatorAddress"); + address sp1VerifierAddress = stdJson.readAddress(config_data, ".address.sp1VerifierAddress"); + bytes32 sp1AggregationProgramVKHash = + stdJson.readBytes32(config_data, ".programs_id.sp1AggregationProgramVKHash"); + address risc0VerifierAddress = stdJson.readAddress(config_data, ".address.risc0VerifierAddress"); + bytes32 risc0AggregationProgramImageId = + stdJson.readBytes32(config_data, ".programs_id.risc0AggregationProgramImageId"); + + address ownerAddress = stdJson.readAddress(config_data, ".permissions.owner"); + + vm.startBroadcast(); + + AlignedProofAggregationService alignedProofAggregationService = new AlignedProofAggregationService(); + + ERC1967Proxy proxy = new ERC1967Proxy( + address(alignedProofAggregationService), + abi.encodeWithSignature( + "initialize(address,address,address,address,bytes32,bytes32)", + ownerAddress, + alignedAggregatorAddress, + sp1VerifierAddress, + risc0VerifierAddress, + risc0AggregationProgramImageId, + sp1AggregationProgramVKHash + ) + ); + + vm.stopBroadcast(); + + string memory addresses = "addresses"; + vm.serializeAddress(addresses, "alignedProofAggregationService", address(proxy)); + string memory addressesStr = vm.serializeAddress( + addresses, "alignedProofAggregationServiceImplementation", address(alignedProofAggregationService) + ); + + string memory parentObject = "parent"; + string memory finalJson = vm.serializeString(parentObject, "addresses", addressesStr); + vm.writeJson(finalJson, outputPath); + + return (address(proxy), address(alignedProofAggregationService)); + } +} diff --git a/contracts/script/deploy/EigenLayerDeployer.s.sol b/contracts/script/deploy/EigenLayerDeployer.s.sol deleted file mode 100644 index adf901df41..0000000000 --- a/contracts/script/deploy/EigenLayerDeployer.s.sol +++ /dev/null @@ -1,711 +0,0 @@ -// SPDX-License-Identifier: BUSL-1.1 -pragma solidity ^0.8.12; - -// The original script used as the base of this one is: -// https://github.com/Layr-Labs/eigenlayer-contracts/blob/7229f2b426b6f2a24c7795b1a4687a010eac8ef2/script/deploy/devnet/M2_Deploy_From_Scratch.s.sol - -// Delegation has been renamed to DelegationManager -// The following addresses has been added to serialization: beaconOracle, pauserMultisig -// The following additional data has been added: numStrategies - -import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol"; -import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; -import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; -import "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol"; - -import "eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol"; -import "eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol"; - -import "eigenlayer-contracts/src/contracts/core/StrategyManager.sol"; -import "eigenlayer-contracts/src/contracts/core/Slasher.sol"; -import "eigenlayer-contracts/src/contracts/core/DelegationManager.sol"; -import "eigenlayer-contracts/src/contracts/core/AVSDirectory.sol"; -import "eigenlayer-contracts/src/contracts/core/RewardsCoordinator.sol"; - -import "eigenlayer-contracts/src/contracts/strategies/StrategyBaseTVLLimits.sol"; - -import "eigenlayer-contracts/src/contracts/pods/EigenPod.sol"; -import "eigenlayer-contracts/src/contracts/pods/EigenPodManager.sol"; -import "eigenlayer-contracts/src/contracts/pods/DelayedWithdrawalRouter.sol"; - -import "eigenlayer-contracts/src/contracts/permissions/PauserRegistry.sol"; - -import "eigenlayer-contracts/src/test/mocks/EmptyContract.sol"; -import "eigenlayer-contracts/src/test/mocks/ETHDepositMock.sol"; -import "src/core/ERC20Mock.sol"; - -import "forge-std/Script.sol"; -import "forge-std/Test.sol"; -import {TransparentUpgradeableProxy} from "../../lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - -// # To load the variables in the .env file -// source .env - -// # To deploy and verify our contract -// forge script script/testing/M2_Deploy_From_Scratch.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast --sig "run(string memory configFile)" -- M2_deploy_from_scratch.anvil.config.json -contract EigenLayerDeployer is Script, Test { - Vm cheats = Vm(VM_ADDRESS); - - // struct used to encode token info in config file - struct StrategyConfig { - uint256 maxDeposits; - uint256 maxPerDeposit; - address tokenAddress; - string tokenSymbol; - } - - string public deployConfigPath; - - // EigenLayer Contracts - ProxyAdmin public eigenLayerProxyAdmin; - PauserRegistry public eigenLayerPauserReg; - Slasher public slasher; - Slasher public slasherImplementation; - DelegationManager public delegation; - DelegationManager public delegationImplementation; - StrategyManager public strategyManager; - StrategyManager public strategyManagerImplementation; - AVSDirectory public avsDirectory; - AVSDirectory public avsDirectoryImplementation; - RewardsCoordinator public rewardsCoordinator; - RewardsCoordinator public rewardsCoordinatorImplementation; - EigenPodManager public eigenPodManager; - EigenPodManager public eigenPodManagerImplementation; - DelayedWithdrawalRouter public delayedWithdrawalRouter; - DelayedWithdrawalRouter public delayedWithdrawalRouterImplementation; - UpgradeableBeacon public eigenPodBeacon; - EigenPod public eigenPodImplementation; - StrategyBase public baseStrategyImplementation; - - EmptyContract public emptyContract; - - address executorMultisig; - address operationsMultisig; - address pauserMultisig; - - // the ETH2 deposit contract -- if not on mainnet, we deploy a mock as stand-in - IETHPOSDeposit public ethPOSDeposit; - - // strategies deployed - StrategyBaseTVLLimits[] public deployedStrategyArray; - - // IMMUTABLES TO SET - uint64 MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR; - uint64 GOERLI_GENESIS_TIME = 1616508000; - - // OTHER DEPLOYMENT PARAMETERS - uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS; - uint256 SLASHER_INIT_PAUSED_STATUS; - uint256 DELEGATION_INIT_PAUSED_STATUS; - uint256 DELEGATION_WITHDRAWAL_DELAY_BLOCKS; - uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS; - uint256 DELAYED_WITHDRAWAL_ROUTER_INIT_PAUSED_STATUS; - // RewardsCoordinator - uint256 REWARDS_COORDINATOR_INIT_PAUSED_STATUS; - uint32 REWARDS_COORDINATOR_MAX_REWARDS_DURATION; - uint32 REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH; - uint32 REWARDS_COORDINATOR_MAX_FUTURE_LENGTH; - uint32 REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP; - address REWARDS_COORDINATOR_UPDATER; - uint32 REWARDS_COORDINATOR_ACTIVATION_DELAY; - uint32 REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS; - uint32 REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS; - - // one week in blocks -- 50400 - uint32 DELAYED_WITHDRAWAL_ROUTER_INIT_WITHDRAWAL_DELAY_BLOCKS; - - // ERC20 and Strategy: we need to deploy this erc20, create a strategy for it, and whitelist this strategy in the StrategyManager - ERC20Mock public erc20Mock; - StrategyBaseTVLLimits public erc20MockStrategy; - - function run(string memory configFileName) external { - // read and log the chainID - uint256 chainId = block.chainid; - emit log_named_uint("You are deploying on ChainID", chainId); - - // READ JSON CONFIG DATA - deployConfigPath = string(bytes(string.concat("script/deploy/config/devnet/", configFileName))); - string memory config_data = vm.readFile(deployConfigPath); - // bytes memory parsedData = vm.parseJson(config_data); - - STRATEGY_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".strategyManager.init_paused_status"); - SLASHER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".slasher.init_paused_status"); - DELEGATION_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".delegationManager.init_paused_status"); - DELEGATION_WITHDRAWAL_DELAY_BLOCKS = stdJson.readUint(config_data, ".delegationManager.init_minWithdrawalDelayBlocks"); - EIGENPOD_MANAGER_INIT_PAUSED_STATUS = stdJson.readUint(config_data, ".eigenPodManager.init_paused_status"); - DELAYED_WITHDRAWAL_ROUTER_INIT_PAUSED_STATUS = stdJson.readUint( - config_data, - ".delayedWithdrawalRouter.init_paused_status" - ); - - DELAYED_WITHDRAWAL_ROUTER_INIT_WITHDRAWAL_DELAY_BLOCKS = uint32( - stdJson.readUint(config_data, ".delegationManager.init_minWithdrawalDelayBlocks") - ); - - MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR = uint64( - stdJson.readUint(config_data, ".eigenPod.MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR") - ); - - // RewardsCoordinator - REWARDS_COORDINATOR_INIT_PAUSED_STATUS = stdJson.readUint( - config_data, - ".rewardsCoordinator.init_paused_status" - ); - REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS = uint32( - stdJson.readUint(config_data, ".rewardsCoordinator.CALCULATION_INTERVAL_SECONDS") - ); - REWARDS_COORDINATOR_MAX_REWARDS_DURATION = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_REWARDS_DURATION")); - REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_RETROACTIVE_LENGTH")); - REWARDS_COORDINATOR_MAX_FUTURE_LENGTH = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.MAX_FUTURE_LENGTH")); - REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.GENESIS_REWARDS_TIMESTAMP")); - REWARDS_COORDINATOR_UPDATER = stdJson.readAddress(config_data, ".rewardsCoordinator.rewards_updater_address"); - REWARDS_COORDINATOR_ACTIVATION_DELAY = uint32(stdJson.readUint(config_data, ".rewardsCoordinator.activation_delay")); - REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS = uint32( - stdJson.readUint(config_data, ".rewardsCoordinator.calculation_interval_seconds") - ); - REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS = uint32( - stdJson.readUint(config_data, ".rewardsCoordinator.global_operator_commission_bips") - ); - - // tokens to deploy strategies for - StrategyConfig[] memory strategyConfigs; - - executorMultisig = stdJson.readAddress(config_data, ".multisig_addresses.executorMultisig"); - operationsMultisig = stdJson.readAddress(config_data, ".multisig_addresses.operationsMultisig"); - pauserMultisig = stdJson.readAddress(config_data, ".multisig_addresses.pauserMultisig"); - // load token list - bytes memory strategyConfigsRaw = stdJson.parseRaw(config_data, ".strategies.strategiesToDeploy"); - strategyConfigs = abi.decode(strategyConfigsRaw, (StrategyConfig[])); - - require(executorMultisig != address(0), "executorMultisig address not configured correctly!"); - require(operationsMultisig != address(0), "operationsMultisig address not configured correctly!"); - - // START RECORDING TRANSACTIONS FOR DEPLOYMENT - vm.startBroadcast(); - - // deploy proxy admin for ability to upgrade proxy contracts - eigenLayerProxyAdmin = new ProxyAdmin(); - - //deploy pauser registry - { - address[] memory pausers = new address[](3); - pausers[0] = executorMultisig; - pausers[1] = operationsMultisig; - pausers[2] = pauserMultisig; - eigenLayerPauserReg = new PauserRegistry(pausers, executorMultisig); - } - - /** - * First, deploy upgradeable proxy contracts that **will point** to the implementations. Since the implementation contracts are - * not yet deployed, we give these proxies an empty contract as the initial implementation, to act as if they have no code. - */ - emptyContract = new EmptyContract(); - delegation = DelegationManager( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - strategyManager = StrategyManager( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - avsDirectory = AVSDirectory( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - rewardsCoordinator = RewardsCoordinator( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - slasher = Slasher( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - eigenPodManager = EigenPodManager( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - delayedWithdrawalRouter = DelayedWithdrawalRouter( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - - // if on mainnet, use the ETH2 deposit contract address - if (chainId == 1) { - ethPOSDeposit = IETHPOSDeposit(0x00000000219ab540356cBB839Cbe05303d7705Fa); - // if not on mainnet, deploy a mock - } else { - ethPOSDeposit = IETHPOSDeposit(stdJson.readAddress(config_data, ".ethPOSDepositAddress")); - } - eigenPodImplementation = new EigenPod( - ethPOSDeposit, - delayedWithdrawalRouter, - eigenPodManager, - MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR, - GOERLI_GENESIS_TIME - ); - - eigenPodBeacon = new UpgradeableBeacon(address(eigenPodImplementation)); - - // Second, deploy the *implementation* contracts, using the *proxy contracts* as inputs - - // AlignedLayerSpecific: Delegation has been renamed to DelegationManager - delegationImplementation = new DelegationManager(strategyManager, slasher, eigenPodManager); - strategyManagerImplementation = new StrategyManager(delegation, eigenPodManager, slasher); - avsDirectoryImplementation = new AVSDirectory(delegation); - rewardsCoordinatorImplementation = new RewardsCoordinator( - delegation, - strategyManager, - REWARDS_COORDINATOR_CALCULATION_INTERVAL_SECONDS, - REWARDS_COORDINATOR_MAX_REWARDS_DURATION, - REWARDS_COORDINATOR_MAX_RETROACTIVE_LENGTH, - REWARDS_COORDINATOR_MAX_FUTURE_LENGTH, - REWARDS_COORDINATOR_GENESIS_REWARDS_TIMESTAMP - ); - slasherImplementation = new Slasher(strategyManager, delegation); - eigenPodManagerImplementation = new EigenPodManager( - ethPOSDeposit, - eigenPodBeacon, - strategyManager, - slasher, - delegation - ); - delayedWithdrawalRouterImplementation = new DelayedWithdrawalRouter(eigenPodManager); - - // Third, upgrade the proxy contracts to use the correct implementation contracts and initialize them. - { - IStrategy[] memory _strategies; - uint256[] memory _withdrawalDelayBlocks; - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(delegation))), - address(delegationImplementation), - abi.encodeWithSelector( - DelegationManager.initialize.selector, - executorMultisig, - eigenLayerPauserReg, - DELEGATION_INIT_PAUSED_STATUS, - DELEGATION_WITHDRAWAL_DELAY_BLOCKS, - _strategies, - _withdrawalDelayBlocks - ) - ); - } - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(strategyManager))), - address(strategyManagerImplementation), - abi.encodeWithSelector( - StrategyManager.initialize.selector, - executorMultisig, - operationsMultisig, - eigenLayerPauserReg, - STRATEGY_MANAGER_INIT_PAUSED_STATUS - ) - ); - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(slasher))), - address(slasherImplementation), - abi.encodeWithSelector( - Slasher.initialize.selector, - executorMultisig, - eigenLayerPauserReg, - SLASHER_INIT_PAUSED_STATUS - ) - ); - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(avsDirectory))), - address(avsDirectoryImplementation), - abi.encodeWithSelector(AVSDirectory.initialize.selector, executorMultisig, eigenLayerPauserReg, 0) - ); - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(rewardsCoordinator))), - address(rewardsCoordinatorImplementation), - abi.encodeWithSelector( - RewardsCoordinator.initialize.selector, - executorMultisig, - eigenLayerPauserReg, - REWARDS_COORDINATOR_INIT_PAUSED_STATUS, - REWARDS_COORDINATOR_UPDATER, - REWARDS_COORDINATOR_ACTIVATION_DELAY, - REWARDS_COORDINATOR_GLOBAL_OPERATOR_COMMISSION_BIPS - ) - ); - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(eigenPodManager))), - address(eigenPodManagerImplementation), - abi.encodeWithSelector( - EigenPodManager.initialize.selector, - IBeaconChainOracle(address(0)), - executorMultisig, - eigenLayerPauserReg, - EIGENPOD_MANAGER_INIT_PAUSED_STATUS - ) - ); - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(delayedWithdrawalRouter))), - address(delayedWithdrawalRouterImplementation), - abi.encodeWithSelector( - DelayedWithdrawalRouter.initialize.selector, - executorMultisig, - eigenLayerPauserReg, - DELAYED_WITHDRAWAL_ROUTER_INIT_PAUSED_STATUS, - DELAYED_WITHDRAWAL_ROUTER_INIT_WITHDRAWAL_DELAY_BLOCKS - ) - ); - - // deploy StrategyBaseTVLLimits contract implementation - baseStrategyImplementation = new StrategyBaseTVLLimits(strategyManager); - - erc20Mock = new ERC20Mock(); - // Deploy and upgrade strategy - erc20MockStrategy = StrategyBaseTVLLimits( - address(new TransparentUpgradeableProxy(address(emptyContract), address(eigenLayerProxyAdmin), "")) - ); - eigenLayerProxyAdmin.upgradeAndCall( - TransparentUpgradeableProxy(payable(address(erc20MockStrategy))), - address(baseStrategyImplementation), - abi.encodeWithSelector( - StrategyBaseTVLLimits.initialize.selector, - 1 ether, // maxPerDeposit - 1000 ether, // maxDeposits - IERC20(erc20Mock), - eigenLayerPauserReg - ) - ); - - IStrategy[] memory strats = new IStrategy[](1); - strats[0] = erc20MockStrategy; - bool[] memory reject = new bool[](1); - reject[0] = false; - - strategyManager.addStrategiesToDepositWhitelist(strats, reject); - - eigenLayerProxyAdmin.transferOwnership(executorMultisig); - eigenPodBeacon.transferOwnership(executorMultisig); - - // STOP RECORDING TRANSACTIONS FOR DEPLOYMENT - vm.stopBroadcast(); - - // CHECK CORRECTNESS OF DEPLOYMENT - _verifyContractsPointAtOneAnother( - delegationImplementation, - strategyManagerImplementation, - slasherImplementation, - eigenPodManagerImplementation, - delayedWithdrawalRouterImplementation - ); - _verifyContractsPointAtOneAnother( - delegation, - strategyManager, - slasher, - eigenPodManager, - delayedWithdrawalRouter - ); - _verifyImplementationsSetCorrectly(); - _verifyInitialOwners(); - _checkPauserInitializations(); - _verifyInitializationParams(); - - // WRITE JSON DATA - string memory parent_object = "parent object"; - - string memory deployed_strategies = "strategies"; - string memory deployed_strategies_output = vm.serializeAddress( - deployed_strategies, - "MOCK", - address(erc20MockStrategy) - ); - - string memory deployed_addresses = "addresses"; - vm.serializeAddress(deployed_addresses, "eigenLayerProxyAdmin", address(eigenLayerProxyAdmin)); - vm.serializeAddress(deployed_addresses, "eigenLayerPauserReg", address(eigenLayerPauserReg)); - vm.serializeAddress(deployed_addresses, "slasher", address(slasher)); - vm.serializeAddress(deployed_addresses, "slasherImplementation", address(slasherImplementation)); - vm.serializeAddress(deployed_addresses, "delegationManager", address(delegation)); - vm.serializeAddress(deployed_addresses, "delegationManagerImplementation", address(delegationImplementation)); - vm.serializeAddress(deployed_addresses, "avsDirectory", address(avsDirectory)); - vm.serializeAddress(deployed_addresses, "avsDirectoryImplementation", address(avsDirectoryImplementation)); - vm.serializeAddress(deployed_addresses, "rewardsCoordinator", address(rewardsCoordinator)); - vm.serializeAddress( - deployed_addresses, - "rewardsCoordinatorImplementation", - address(rewardsCoordinatorImplementation) - ); - vm.serializeAddress(deployed_addresses, "strategyManager", address(strategyManager)); - vm.serializeAddress( - deployed_addresses, - "strategyManagerImplementation", - address(strategyManagerImplementation) - ); - vm.serializeAddress(deployed_addresses, "eigenPodManager", address(eigenPodManager)); - vm.serializeAddress( - deployed_addresses, - "eigenPodManagerImplementation", - address(eigenPodManagerImplementation) - ); - vm.serializeAddress(deployed_addresses, "delayedWithdrawalRouter", address(delayedWithdrawalRouter)); - vm.serializeAddress( - deployed_addresses, - "delayedWithdrawalRouterImplementation", - address(delayedWithdrawalRouterImplementation) - ); - vm.serializeAddress(deployed_addresses, "eigenPodBeacon", address(eigenPodBeacon)); - vm.serializeAddress(deployed_addresses, "eigenPodImplementation", address(eigenPodImplementation)); - vm.serializeAddress(deployed_addresses, "baseStrategyImplementation", address(baseStrategyImplementation)); - vm.serializeAddress(deployed_addresses, "emptyContract", address(emptyContract)); - - string memory parameters = "parameters"; - vm.serializeAddress(parameters, "executorMultisig", executorMultisig); - - vm.serializeAddress(parameters, "operationsMultisig", operationsMultisig); - - string memory chain_info = "chainInfo"; - vm.serializeUint(chain_info, "deploymentBlock", block.number); - string memory chain_info_output = vm.serializeUint(chain_info, "chainId", chainId); - - // AlignedLayerSpecific: This addresses weren't in the original deployer serialization of EigenLayerContracts. But we needed to use them - vm.serializeAddress(deployed_addresses, "beaconOracle", address(0)); - string memory parameters_output = vm.serializeAddress(parameters, "pauserMultisig", pauserMultisig); - vm.serializeUint(parent_object, "numStrategies", 1); - - // AlignedLayerSpecific: Now the rest of the final serialization steps continues - string memory deployed_addresses_output = vm.serializeString( - deployed_addresses, - "strategies", - deployed_strategies_output - ); - - // serialize all the data - vm.serializeString(parent_object, deployed_addresses, deployed_addresses_output); - vm.serializeString(parent_object, chain_info, chain_info_output); - - string memory finalJson = vm.serializeString(parent_object, parameters, parameters_output); - - // TODO: should output to different file depending on configFile passed to run() - // so that we don't override mainnet output by deploying to goerli for eg. - vm.writeJson(finalJson, "script/output/devnet/eigenlayer_deployment_output.json"); - } - - function _verifyContractsPointAtOneAnother( - DelegationManager delegationContract, - StrategyManager strategyManagerContract, - Slasher /*slasherContract*/, - EigenPodManager eigenPodManagerContract, - DelayedWithdrawalRouter delayedWithdrawalRouterContract - ) internal view { - require(delegationContract.slasher() == slasher, "delegation: slasher address not set correctly"); - require( - delegationContract.strategyManager() == strategyManager, - "delegation: strategyManager address not set correctly" - ); - - require(strategyManagerContract.slasher() == slasher, "strategyManager: slasher address not set correctly"); - require( - strategyManagerContract.delegation() == delegation, - "strategyManager: delegation address not set correctly" - ); - require( - strategyManagerContract.eigenPodManager() == eigenPodManager, - "strategyManager: eigenPodManager address not set correctly" - ); - - // removing slasher requirements because there is no slasher as part of m2-mainnet release - // require(slasherContract.strategyManager() == strategyManager, "slasher: strategyManager not set correctly"); - // require(slasherContract.delegation() == delegation, "slasher: delegation not set correctly"); - - require( - eigenPodManagerContract.ethPOS() == ethPOSDeposit, - " eigenPodManager: ethPOSDeposit contract address not set correctly" - ); - require( - eigenPodManagerContract.eigenPodBeacon() == eigenPodBeacon, - "eigenPodManager: eigenPodBeacon contract address not set correctly" - ); - require( - eigenPodManagerContract.strategyManager() == strategyManager, - "eigenPodManager: strategyManager contract address not set correctly" - ); - require( - eigenPodManagerContract.slasher() == slasher, - "eigenPodManager: slasher contract address not set correctly" - ); - - require( - delayedWithdrawalRouterContract.eigenPodManager() == eigenPodManager, - "delayedWithdrawalRouterContract: eigenPodManager address not set correctly" - ); - } - - function _verifyImplementationsSetCorrectly() internal view { - require( - eigenLayerProxyAdmin.getProxyImplementation(TransparentUpgradeableProxy(payable(address(delegation)))) == - address(delegationImplementation), - "delegation: implementation set incorrectly" - ); - require( - eigenLayerProxyAdmin.getProxyImplementation( - TransparentUpgradeableProxy(payable(address(strategyManager))) - ) == address(strategyManagerImplementation), - "strategyManager: implementation set incorrectly" - ); - require( - eigenLayerProxyAdmin.getProxyImplementation(TransparentUpgradeableProxy(payable(address(slasher)))) == - address(slasherImplementation), - "slasher: implementation set incorrectly" - ); - require( - eigenLayerProxyAdmin.getProxyImplementation( - TransparentUpgradeableProxy(payable(address(eigenPodManager))) - ) == address(eigenPodManagerImplementation), - "eigenPodManager: implementation set incorrectly" - ); - require( - eigenLayerProxyAdmin.getProxyImplementation( - TransparentUpgradeableProxy(payable(address(delayedWithdrawalRouter))) - ) == address(delayedWithdrawalRouterImplementation), - "delayedWithdrawalRouter: implementation set incorrectly" - ); - - for (uint256 i = 0; i < deployedStrategyArray.length; ++i) { - require( - eigenLayerProxyAdmin.getProxyImplementation( - TransparentUpgradeableProxy(payable(address(deployedStrategyArray[i]))) - ) == address(baseStrategyImplementation), - "strategy: implementation set incorrectly" - ); - } - - require( - eigenPodBeacon.implementation() == address(eigenPodImplementation), - "eigenPodBeacon: implementation set incorrectly" - ); - } - - function _verifyInitialOwners() internal view { - require(strategyManager.owner() == executorMultisig, "strategyManager: owner not set correctly"); - require(delegation.owner() == executorMultisig, "delegation: owner not set correctly"); - // removing slasher requirements because there is no slasher as part of m2-mainnet release - // require(slasher.owner() == executorMultisig, "slasher: owner not set correctly"); - require(eigenPodManager.owner() == executorMultisig, "eigenPodManager: owner not set correctly"); - - require(eigenLayerProxyAdmin.owner() == executorMultisig, "eigenLayerProxyAdmin: owner not set correctly"); - require(eigenPodBeacon.owner() == executorMultisig, "eigenPodBeacon: owner not set correctly"); - require( - delayedWithdrawalRouter.owner() == executorMultisig, - "delayedWithdrawalRouter: owner not set correctly" - ); - } - - function _checkPauserInitializations() internal view { - require(delegation.pauserRegistry() == eigenLayerPauserReg, "delegation: pauser registry not set correctly"); - require( - strategyManager.pauserRegistry() == eigenLayerPauserReg, - "strategyManager: pauser registry not set correctly" - ); - // removing slasher requirements because there is no slasher as part of m2-mainnet release - // require(slasher.pauserRegistry() == eigenLayerPauserReg, "slasher: pauser registry not set correctly"); - require( - eigenPodManager.pauserRegistry() == eigenLayerPauserReg, - "eigenPodManager: pauser registry not set correctly" - ); - require( - delayedWithdrawalRouter.pauserRegistry() == eigenLayerPauserReg, - "delayedWithdrawalRouter: pauser registry not set correctly" - ); - - require(eigenLayerPauserReg.isPauser(operationsMultisig), "pauserRegistry: operationsMultisig is not pauser"); - require(eigenLayerPauserReg.isPauser(executorMultisig), "pauserRegistry: executorMultisig is not pauser"); - require(eigenLayerPauserReg.isPauser(pauserMultisig), "pauserRegistry: pauserMultisig is not pauser"); - require(eigenLayerPauserReg.unpauser() == executorMultisig, "pauserRegistry: unpauser not set correctly"); - - for (uint256 i = 0; i < deployedStrategyArray.length; ++i) { - require( - deployedStrategyArray[i].pauserRegistry() == eigenLayerPauserReg, - "StrategyBaseTVLLimits: pauser registry not set correctly" - ); - require( - deployedStrategyArray[i].paused() == 0, - "StrategyBaseTVLLimits: init paused status set incorrectly" - ); - } - - // // pause *nothing* - // uint256 STRATEGY_MANAGER_INIT_PAUSED_STATUS = 0; - // // pause *everything* - // uint256 SLASHER_INIT_PAUSED_STATUS = type(uint256).max; - // // pause *everything* - // uint256 DELEGATION_INIT_PAUSED_STATUS = type(uint256).max; - // // pause *all of the proof-related functionality* (everything that can be paused other than creation of EigenPods) - // uint256 EIGENPOD_MANAGER_INIT_PAUSED_STATUS = (2**1) + (2**2) + (2**3) + (2**4); /* = 30 */ - // // pause *nothing* - // uint256 DELAYED_WITHDRAWAL_ROUTER_INIT_PAUSED_STATUS = 0; - // require(strategyManager.paused() == 0, "strategyManager: init paused status set incorrectly"); - // require(slasher.paused() == type(uint256).max, "slasher: init paused status set incorrectly"); - // require(delegation.paused() == type(uint256).max, "delegation: init paused status set incorrectly"); - // require(eigenPodManager.paused() == 30, "eigenPodManager: init paused status set incorrectly"); - // require(delayedWithdrawalRouter.paused() == 0, "delayedWithdrawalRouter: init paused status set incorrectly"); - } - - function _verifyInitializationParams() internal { - // // one week in blocks -- 50400 - // uint32 STRATEGY_MANAGER_INIT_WITHDRAWAL_DELAY_BLOCKS = 7 days / 12 seconds; - // uint32 DELAYED_WITHDRAWAL_ROUTER_INIT_WITHDRAWAL_DELAY_BLOCKS = 7 days / 12 seconds; - // require(strategyManager.withdrawalDelayBlocks() == 7 days / 12 seconds, - // "strategyManager: withdrawalDelayBlocks initialized incorrectly"); - // require(delayedWithdrawalRouter.withdrawalDelayBlocks() == 7 days / 12 seconds, - // "delayedWithdrawalRouter: withdrawalDelayBlocks initialized incorrectly"); - // uint256 MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR = 32 ether; - require( - eigenPodImplementation.MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR() == 32 gwei, - "eigenPod: MAX_RESTAKED_BALANCE_GWEI_PER_VALIDATOR initialized incorrectly" - ); - - require( - strategyManager.strategyWhitelister() == operationsMultisig, - "strategyManager: strategyWhitelister address not set correctly" - ); - - // assert erc20MockStrategy is whitelisted on strategyManager - require( - strategyManager.strategyIsWhitelistedForDeposit(erc20MockStrategy), - "erc20MockStrategy not whitelisted on strategyManager" - ); - require( - eigenPodManager.beaconChainOracle() == IBeaconChainOracle(address(0)), - "eigenPodManager: eigenPodBeacon contract address not set correctly" - ); - - require( - delayedWithdrawalRouter.eigenPodManager() == eigenPodManager, - "delayedWithdrawalRouter: eigenPodManager set incorrectly" - ); - - require( - baseStrategyImplementation.strategyManager() == strategyManager, - "baseStrategyImplementation: strategyManager set incorrectly" - ); - - require( - eigenPodImplementation.ethPOS() == ethPOSDeposit, - "eigenPodImplementation: ethPOSDeposit contract address not set correctly" - ); - require( - eigenPodImplementation.eigenPodManager() == eigenPodManager, - " eigenPodImplementation: eigenPodManager contract address not set correctly" - ); - require( - eigenPodImplementation.delayedWithdrawalRouter() == delayedWithdrawalRouter, - " eigenPodImplementation: delayedWithdrawalRouter contract address not set correctly" - ); - - - - - - string memory config_data = vm.readFile(deployConfigPath); - for (uint i = 0; i < deployedStrategyArray.length; i++) { - uint256 maxPerDeposit = stdJson.readUint( - config_data, - string.concat(".strategies[", vm.toString(i), "].max_per_deposit") - ); - uint256 maxDeposits = stdJson.readUint( - config_data, - string.concat(".strategies[", vm.toString(i), "].max_deposits") - ); - (uint256 setMaxPerDeposit, uint256 setMaxDeposits) = deployedStrategyArray[i].getTVLLimits(); - require(setMaxPerDeposit == maxPerDeposit, "setMaxPerDeposit not set correctly"); - require(setMaxDeposits == maxDeposits, "setMaxDeposits not set correctly"); - } - } -} diff --git a/contracts/script/deploy/Risc0Groth16VerifierDeployer.s.sol b/contracts/script/deploy/Risc0Groth16VerifierDeployer.s.sol new file mode 100644 index 0000000000..2a2308881f --- /dev/null +++ b/contracts/script/deploy/Risc0Groth16VerifierDeployer.s.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.20; + +import {Script} from "forge-std/Script.sol"; +import {console2} from "forge-std/console2.sol"; +import {IRiscZeroVerifier} from "@risc0-contracts/IRiscZeroVerifier.sol"; +import {ControlID, RiscZeroGroth16Verifier} from "@risc0-contracts/groth16/RiscZeroGroth16Verifier.sol"; + +contract Risc0VerifierRouterDeployer is Script { + function run() external { + uint256 deployerKey = uint256(vm.envBytes32("DEPLOYER_PRIVATE_KEY")); + + vm.startBroadcast(deployerKey); + + IRiscZeroVerifier verifier = new RiscZeroGroth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); + console2.log("Deployed RiscZeroGroth16Verifier to", address(verifier)); + + vm.stopBroadcast(); + } +} diff --git a/contracts/script/deploy/SP1VerifierGatewayGroth16Deployer.s.sol b/contracts/script/deploy/SP1VerifierGatewayGroth16Deployer.s.sol new file mode 100644 index 0000000000..dbe4c7a3c1 --- /dev/null +++ b/contracts/script/deploy/SP1VerifierGatewayGroth16Deployer.s.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import {BaseScript} from "../../lib/sp1-contracts/contracts/script/utils/Base.s.sol"; +import {SP1VerifierGateway} from "../../lib/sp1-contracts/contracts/src/SP1VerifierGateway.sol"; + +contract SP1VerifierGatewayScript is BaseScript { + string internal constant KEY = "SP1_VERIFIER_GATEWAY_GROTH16"; + + function run() external multichain(KEY) broadcaster { + // Read config + bytes32 CREATE2_SALT = readBytes32("CREATE2_SALT"); + address OWNER = readAddress("OWNER"); + + // Deploy contract + address gateway = address(new SP1VerifierGateway{salt: CREATE2_SALT}(OWNER)); + + // Write addresss + writeAddress(KEY, gateway); + } +} diff --git a/contracts/script/deploy/SP1VerifierGroth16Deployer.s.sol b/contracts/script/deploy/SP1VerifierGroth16Deployer.s.sol new file mode 100644 index 0000000000..481cbd8ef5 --- /dev/null +++ b/contracts/script/deploy/SP1VerifierGroth16Deployer.s.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import {BaseScript} from "../../lib/sp1-contracts/contracts/script/utils/Base.s.sol"; +import {SP1Verifier} from "../../lib/sp1-contracts/contracts/src/v5.0.0/SP1VerifierGroth16.sol"; +import {SP1VerifierGateway} from "../../lib/sp1-contracts/contracts/src/SP1VerifierGateway.sol"; +import {ISP1VerifierWithHash} from "../../lib/sp1-contracts/contracts/src/ISP1Verifier.sol"; + +contract SP1VerifierScript is BaseScript { + string internal constant KEY = "V5_0_0_SP1_VERIFIER_GROTH16"; + + function run() external multichain(KEY) broadcaster { + // Read config + bytes32 CREATE2_SALT = readBytes32("CREATE2_SALT"); + address SP1_VERIFIER_GATEWAY = readAddress("SP1_VERIFIER_GATEWAY_GROTH16"); + + // Deploy contract + address verifier = address(new SP1Verifier{salt: CREATE2_SALT}()); + + // Add the verifier to the gateway + SP1VerifierGateway gateway = SP1VerifierGateway(SP1_VERIFIER_GATEWAY); + gateway.addRoute(verifier); + + // Write address + writeAddress(KEY, verifier); + } + + function freeze() external multichain(KEY) broadcaster { + // Read config + address SP1_VERIFIER_GATEWAY = readAddress("SP1_VERIFIER_GATEWAY_GROTH16"); + address SP1_VERIFIER = readAddress(KEY); + + // Freeze the verifier on the gateway + SP1VerifierGateway gateway = SP1VerifierGateway(SP1_VERIFIER_GATEWAY); + bytes4 selector = bytes4(ISP1VerifierWithHash(SP1_VERIFIER).VERIFIER_HASH()); + gateway.freezeRoute(selector); + } +} diff --git a/contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.config.json b/contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.config.json new file mode 100644 index 0000000000..87d38f6c48 --- /dev/null +++ b/contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.config.json @@ -0,0 +1,15 @@ +{ + "address": { + "sp1VerifierAddress": "0x06530DD13aFB697B81E2d602a279EBAEC8Ca2E31", + "risc0VerifierAddress": "0x663F3ad617193148711d28f5334eE4Ed07016602", + "alignedAggregatorAddress": "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720", + "alignedAggregatorAddressPrivateKey": "0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955" + } +} diff --git a/contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.mock.config.json b/contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.mock.config.json new file mode 100644 index 0000000000..19df566f41 --- /dev/null +++ b/contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.mock.config.json @@ -0,0 +1,15 @@ +{ + "address": { + "sp1VerifierAddress": "0x00000000000000000000000000000000000000FF", + "risc0VerifierAddress": "0x00000000000000000000000000000000000000FF", + "alignedAggregatorAddress": "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720", + "alignedAggregatorAddressPrivateKey": "0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955" + } +} diff --git a/contracts/script/deploy/config/holesky/proof-aggregator-service.holesky.config.json b/contracts/script/deploy/config/holesky/proof-aggregator-service.holesky.config.json new file mode 100644 index 0000000000..3dc61c3ac4 --- /dev/null +++ b/contracts/script/deploy/config/holesky/proof-aggregator-service.holesky.config.json @@ -0,0 +1,14 @@ +{ + "address": { + "sp1VerifierAddress": "0x397A5f7f3dBd538f23DE225B51f532c34448dA9B", + "risc0VerifierAddress": "0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C", + "alignedAggregatorAddress": "0x9403dF48130621f87974a5A1d1d11d3aF1222A82" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "0x97aEC5F28181abe5d2aD40dBe7FbaEe014529b7D" + } +} diff --git a/contracts/script/deploy/config/holesky/proof-aggregator-service.holesky.config.stage.json b/contracts/script/deploy/config/holesky/proof-aggregator-service.holesky.config.stage.json new file mode 100644 index 0000000000..87a63f8317 --- /dev/null +++ b/contracts/script/deploy/config/holesky/proof-aggregator-service.holesky.config.stage.json @@ -0,0 +1,14 @@ +{ + "address": { + "sp1VerifierAddress": "0x397A5f7f3dBd538f23DE225B51f532c34448dA9B", + "risc0VerifierAddress": "0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C", + "alignedAggregatorAddress": "0x3595aa7d30f89f65933e7421dec77e4478d9fb01" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "0xE3C695b73dbe27106aF4530b152de3e57456B385" + } +} diff --git a/contracts/script/deploy/config/hoodi/aligned.hoodi.config.json b/contracts/script/deploy/config/hoodi/aligned.hoodi.config.json new file mode 100644 index 0000000000..97c2d80e61 --- /dev/null +++ b/contracts/script/deploy/config/hoodi/aligned.hoodi.config.json @@ -0,0 +1,42 @@ +{ + "chainInfo": { + "chainId": 560048 + }, + "permissions" : { + "aggregator": "0x30f21BE6E79a32dEee382AD47987d43B68a28244", + "deployer": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "owner": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "upgrader": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "churner": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "ejector": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "pauser": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "initalPausedStatus": 0 + }, + "minimumStakes": [ + 1 + ], + "strategyWeights": [ + [ + { + "0_strategy": "0x24579aD4fe83aC53546E5c2D3dF5F85D6383420d", + "1_multiplier": 1e+18 + }, + { + "0_strategy": "0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0", + "1_multiplier": 1e+18 + }, + { + "0_strategy": "0x19536FAd6Eb831e8211B316177979161BBdb2c2B", + "1_multiplier": 1e+18 + } + ] + ], + "operatorSetParams": [ + { + "0_maxOperatorCount": 200, + "1_kickBIPsOfOperatorStake": 11000, + "2_kickBIPsOfTotalStake": 50 + } + ], + "uri": "" + } diff --git a/contracts/script/deploy/config/hoodi/batcher-payment-service.hoodi.config.json b/contracts/script/deploy/config/hoodi/batcher-payment-service.hoodi.config.json new file mode 100644 index 0000000000..f320c89d3d --- /dev/null +++ b/contracts/script/deploy/config/hoodi/batcher-payment-service.hoodi.config.json @@ -0,0 +1,12 @@ +{ + "address": { + "batcherWallet": "0x03D284fDf9a80A71C98107B59c35A0E493D69Fae", + "alignedLayerServiceManager": "0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c" + }, + "permissions": { + "owner": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927" + }, + "eip712": { + "noncedVerificationDataTypeHash": "0x41817b5c5b0c3dcda70ccb43ba175fdcd7e586f9e0484422a2c6bba678fdf4a3" + } +} diff --git a/contracts/script/deploy/config/hoodi/proof-aggregator-service.hoodi.config.json b/contracts/script/deploy/config/hoodi/proof-aggregator-service.hoodi.config.json new file mode 100644 index 0000000000..212a895c7f --- /dev/null +++ b/contracts/script/deploy/config/hoodi/proof-aggregator-service.hoodi.config.json @@ -0,0 +1,14 @@ +{ + "address": { + "sp1VerifierAddress": "0xe1D19B93F2052d42967bCe42e6d4125A31A0e9ef", + "risc0VerifierAddress": "0x32Db7dc407AC886807277636a1633A1381748DD8", + "alignedAggregatorAddress": "0x7EB3B63A4F3e7810Cc9bbc346749E2491Da4D7Cc" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927" + } +} diff --git a/contracts/script/deploy/config/mainnet/proof-aggregator-service.mainnet.config.json b/contracts/script/deploy/config/mainnet/proof-aggregator-service.mainnet.config.json new file mode 100644 index 0000000000..dd94800c79 --- /dev/null +++ b/contracts/script/deploy/config/mainnet/proof-aggregator-service.mainnet.config.json @@ -0,0 +1,14 @@ +{ + "address": { + "sp1VerifierAddress": "0x397A5f7f3dBd538f23DE225B51f532c34448dA9B", + "risc0VerifierAddress": "0x8EaB2D97Dfce405A1692a21b3ff3A172d593D319", + "alignedAggregatorAddress": "" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "" + } +} diff --git a/contracts/script/deploy/config/mainnet_staging/aligned.mainnet.config.json b/contracts/script/deploy/config/mainnet_staging/aligned.mainnet.config.json new file mode 100644 index 0000000000..98e92924bc --- /dev/null +++ b/contracts/script/deploy/config/mainnet_staging/aligned.mainnet.config.json @@ -0,0 +1,82 @@ +{ + "chainInfo": { + "chainId": 1 + }, + "permissions" : { + "aggregator": "0xb72D98AB27EBCF86C96a53564135d3141bAAE398", + "deployer": "0xb72D98AB27EBCF86C96a53564135d3141bAAE398", + "owner": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "upgrader": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "churner": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "ejector": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "pauser": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "initalPausedStatus": 0 + }, + "minimumStakes": [ + 1 + ], + "strategyWeights": [ + [ + { + "0_strategy": "0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0", + "1_multiplier": 1000000000000000000 + }, + { + "0_strategy": "0x93c4b944D05dfe6df7645A86cd2206016c51564D", + "1_multiplier": 1030077629425962827 + }, + { + "0_strategy": "0x1BeE69b7dFFfA4E2d53C2a2Df135C388AD25dCD2", + "1_multiplier": 1102456657360376283 + }, + { + "0_strategy": "0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc", + "1_multiplier": 1067949170243902475 + }, + { + "0_strategy": "0x9d7eD45EE2E8FC5482fa2428f15C971e6369011d", + "1_multiplier": 1026158078493781538 + }, + { + "0_strategy": "0x13760F50a9d7377e4F20CB8CF9e4c26586c658ff", + "1_multiplier": 1152393415227598758 + }, + { + "0_strategy": "0xa4C637e0F704745D182e4D38cAb7E7485321d059", + "1_multiplier": 1011855761455017859 + }, + { + "0_strategy": "0x57ba429517c3473B6d34CA9aCd56c0e735b94c02", + "1_multiplier": 1012495275290785447 + }, + { + "0_strategy": "0x0Fe4F44beE93503346A3Ac9EE5A26b130a5796d6", + "1_multiplier": 1055446649335815388 + }, + { + "0_strategy": "0x7CA911E83dabf90C90dD3De5411a10F1A6112184", + "1_multiplier": 1035345726488000000 + }, + { + "0_strategy": "0x8CA7A5d6f3acd3A7A8bC468a8CD0FB14B6BD28b6", + "1_multiplier": 1081259809521793439 + }, + { + "0_strategy": "0xAe60d8180437b5C34bB956822ac2710972584473", + "1_multiplier": 1044315639811926396 + }, + { + "0_strategy": "0x298aFB19A105D59E74658C4C334Ff360BadE6dd2", + "1_multiplier": 1028802524926876401 + } + ] + ], + "operatorSetParams": [ + { + "0_maxOperatorCount": 200, + "1_kickBIPsOfOperatorStake": 11000, + "2_kickBIPsOfTotalStake": 50 + } + ], + "uri": "" + } diff --git a/contracts/script/deploy/config/mainnet_staging/batcher-payment-service.mainnet.config.json b/contracts/script/deploy/config/mainnet_staging/batcher-payment-service.mainnet.config.json new file mode 100644 index 0000000000..1047b6d0d1 --- /dev/null +++ b/contracts/script/deploy/config/mainnet_staging/batcher-payment-service.mainnet.config.json @@ -0,0 +1,16 @@ +{ + "address": { + "batcherWallet": "0xCA81D63e24C5C4E6C4fdB2859420e77c8aB565C2", + "alignedLayerServiceManager": "0x96b6a29D7B98519Ae66E6398BD27A76B30a5dC3f" + }, + "amounts": { + "gasForAggregator": "300000", + "gasPerProof": "21000" + }, + "permissions": { + "owner": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599" + }, + "eip712": { + "noncedVerificationDataTypeHash": "0x41817b5c5b0c3dcda70ccb43ba175fdcd7e586f9e0484422a2c6bba678fdf4a3" + } +} diff --git a/contracts/script/deploy/config/mainnet_staging/proof-aggregator-service.mainnet.config.json b/contracts/script/deploy/config/mainnet_staging/proof-aggregator-service.mainnet.config.json new file mode 100644 index 0000000000..dd94800c79 --- /dev/null +++ b/contracts/script/deploy/config/mainnet_staging/proof-aggregator-service.mainnet.config.json @@ -0,0 +1,14 @@ +{ + "address": { + "sp1VerifierAddress": "0x397A5f7f3dBd538f23DE225B51f532c34448dA9B", + "risc0VerifierAddress": "0x8EaB2D97Dfce405A1692a21b3ff3A172d593D319", + "alignedAggregatorAddress": "" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "" + } +} diff --git a/contracts/script/deploy/config/sepolia/aligned.sepolia.config.json b/contracts/script/deploy/config/sepolia/aligned.sepolia.config.json index 7e7784d565..9a4ced60c7 100644 --- a/contracts/script/deploy/config/sepolia/aligned.sepolia.config.json +++ b/contracts/script/deploy/config/sepolia/aligned.sepolia.config.json @@ -3,13 +3,13 @@ "chainId": 11155111 }, "permissions" : { - "aggregator": "", - "deployer": "", - "owner": "", - "upgrader": "", - "churner": "", - "ejector": "", - "pauser": "", + "aggregator": "0x1407a423FFaBcBC6ceEb0bbDf4cd093c860a3F62", + "deployer": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "owner": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "upgrader": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "churner": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "ejector": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "pauser": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", "initalPausedStatus": 0 }, "minimumStakes": [ @@ -18,7 +18,15 @@ "strategyWeights": [ [ { - "0_strategy": "0x80528D6e9A2BAbFc766965E0E26d5aB08D9CFaF9", + "0_strategy": "0x424246eF71b01ee33aA33aC590fd9a0855F5eFbc", + "1_multiplier": 1e+18 + }, + { + "0_strategy": "0x8b29d91e67b013e855EaFe0ad704aC4Ab086a574", + "1_multiplier": 1e+18 + }, + { + "0_strategy": "0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0", "1_multiplier": 1e+18 } ] diff --git a/contracts/script/deploy/config/sepolia/batcher-payment-service.sepolia.config.json b/contracts/script/deploy/config/sepolia/batcher-payment-service.sepolia.config.json index 0766c80724..8d454b2779 100644 --- a/contracts/script/deploy/config/sepolia/batcher-payment-service.sepolia.config.json +++ b/contracts/script/deploy/config/sepolia/batcher-payment-service.sepolia.config.json @@ -1,10 +1,10 @@ { "address": { - "batcherWallet": "", - "alignedLayerServiceManager": "" + "batcherWallet": "0xBd924Fd31b960C2a1fd261F952B304b13A6922F1", + "alignedLayerServiceManager": "0xFf731AB7b3653dc66878DC77E851D174f472d137" }, "permissions": { - "owner": "" + "owner": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106" }, "eip712": { "noncedVerificationDataTypeHash": "0x41817b5c5b0c3dcda70ccb43ba175fdcd7e586f9e0484422a2c6bba678fdf4a3" diff --git a/contracts/script/deploy/config/sepolia/proof-aggregator-service.sepolia.config.json b/contracts/script/deploy/config/sepolia/proof-aggregator-service.sepolia.config.json new file mode 100644 index 0000000000..ff122bd999 --- /dev/null +++ b/contracts/script/deploy/config/sepolia/proof-aggregator-service.sepolia.config.json @@ -0,0 +1,14 @@ +{ + "address": { + "sp1VerifierAddress": "0x397A5f7f3dBd538f23DE225B51f532c34448dA9B", + "risc0VerifierAddress": "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187", + "alignedAggregatorAddress": "0x3602fEF708644530Fef94f86b770c0603571e98B" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106" + } +} diff --git a/contracts/script/deploy/config/templates/aligned.template.config.json b/contracts/script/deploy/config/templates/aligned.template.config.json new file mode 100644 index 0000000000..5f672a233e --- /dev/null +++ b/contracts/script/deploy/config/templates/aligned.template.config.json @@ -0,0 +1,42 @@ +{ + "chainInfo": { + "chainId": 11155111 + }, + "permissions" : { + "aggregator": "", + "deployer": "", + "owner": "", + "upgrader": "", + "churner": "", + "ejector": "", + "pauser": "", + "initalPausedStatus": 0 + }, + "minimumStakes": [ + 1 + ], + "strategyWeights": [ + [ + { + "0_strategy": "", + "1_multiplier": 1e+18 + }, + { + "0_strategy": "", + "1_multiplier": 1e+18 + }, + { + "0_strategy": "", + "1_multiplier": 1e+18 + } + ] + ], + "operatorSetParams": [ + { + "0_maxOperatorCount": 200, + "1_kickBIPsOfOperatorStake": 11000, + "2_kickBIPsOfTotalStake": 50 + } + ], + "uri": "" + } diff --git a/contracts/script/deploy/config/templates/batcher-payment-service.template.config.json b/contracts/script/deploy/config/templates/batcher-payment-service.template.config.json new file mode 100644 index 0000000000..b9ec2b2600 --- /dev/null +++ b/contracts/script/deploy/config/templates/batcher-payment-service.template.config.json @@ -0,0 +1,12 @@ +{ + "address": { + "batcherWallet": "", + "alignedLayerServiceManager": "" + }, + "permissions": { + "owner": "" + }, + "eip712": { + "noncedVerificationDataTypeHash": "0x41817b5c5b0c3dcda70ccb43ba175fdcd7e586f9e0484422a2c6bba678fdf4a3" + } +} diff --git a/contracts/script/deploy/config/templates/proof-aggregator-service.template.config.json b/contracts/script/deploy/config/templates/proof-aggregator-service.template.config.json new file mode 100644 index 0000000000..2ca093e9c2 --- /dev/null +++ b/contracts/script/deploy/config/templates/proof-aggregator-service.template.config.json @@ -0,0 +1,14 @@ +{ + "address": { + "sp1VerifierAddress": "", + "risc0VerifierAddress": "", + "alignedAggregatorAddress": "" + }, + "programs_id": { + "sp1AggregationProgramVKHash": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "risc0AggregationProgramImageId": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97" + }, + "permissions": { + "owner": "" + } +} diff --git a/contracts/script/deploy/utils/ExistingDeploymentParser.sol b/contracts/script/deploy/utils/ExistingDeploymentParser.sol index 1801929768..742e466e18 100644 --- a/contracts/script/deploy/utils/ExistingDeploymentParser.sol +++ b/contracts/script/deploy/utils/ExistingDeploymentParser.sol @@ -68,8 +68,6 @@ contract ExistingDeploymentParser is Script, Test { // All eigenpods is just single array list of above eigenPods address[] public allEigenPods; - EmptyContract public emptyContract; - address executorMultisig; address operationsMultisig; address pauserMultisig; @@ -142,10 +140,6 @@ contract ExistingDeploymentParser is Script, Test { eigenLayerPauserReg = PauserRegistry( stdJson.readAddress(existingDeploymentData, ".addresses.eigenLayerPauserReg") ); - slasher = Slasher(stdJson.readAddress(existingDeploymentData, ".addresses.slasher")); - slasherImplementation = Slasher( - stdJson.readAddress(existingDeploymentData, ".addresses.slasherImplementation") - ); delegationManager = DelegationManager(stdJson.readAddress(existingDeploymentData, ".addresses.delegationManager")); delegationManagerImplementation = DelegationManager( stdJson.readAddress(existingDeploymentData, ".addresses.delegationManagerImplementation") @@ -168,15 +162,6 @@ contract ExistingDeploymentParser is Script, Test { eigenPodManagerImplementation = EigenPodManager( stdJson.readAddress(existingDeploymentData, ".addresses.eigenPodManagerImplementation") ); - delayedWithdrawalRouter = DelayedWithdrawalRouter( - stdJson.readAddress(existingDeploymentData, ".addresses.delayedWithdrawalRouter") - ); - delayedWithdrawalRouterImplementation = DelayedWithdrawalRouter( - stdJson.readAddress(existingDeploymentData, ".addresses.delayedWithdrawalRouterImplementation") - ); - beaconOracle = IBeaconChainOracle( - stdJson.readAddress(existingDeploymentData, ".addresses.beaconOracle") - ); eigenPodBeacon = UpgradeableBeacon(stdJson.readAddress(existingDeploymentData, ".addresses.eigenPodBeacon")); eigenPodImplementation = EigenPod( payable(stdJson.readAddress(existingDeploymentData, ".addresses.eigenPodImplementation")) @@ -184,7 +169,6 @@ contract ExistingDeploymentParser is Script, Test { baseStrategyImplementation = StrategyBase( stdJson.readAddress(existingDeploymentData, ".addresses.baseStrategyImplementation") ); - emptyContract = EmptyContract(stdJson.readAddress(existingDeploymentData, ".addresses.emptyContract")); } function _parseDeployedEigenPods(string memory existingDeploymentInfoPath) internal returns (DeployedEigenPods memory) { @@ -725,7 +709,6 @@ contract ExistingDeploymentParser is Script, Test { vm.serializeAddress(deployed_addresses, "eigenPodBeacon", address(eigenPodBeacon)); vm.serializeAddress(deployed_addresses, "eigenPodImplementation", address(eigenPodImplementation)); vm.serializeAddress(deployed_addresses, "baseStrategyImplementation", address(baseStrategyImplementation)); - vm.serializeAddress(deployed_addresses, "emptyContract", address(emptyContract)); string memory deployed_addresses_output = vm.serializeString( deployed_addresses, "strategies", diff --git a/contracts/script/output/devnet/alignedlayer_deployment_output.json b/contracts/script/output/devnet/alignedlayer_deployment_output.json index 4fb315743d..ad09d23a1e 100644 --- a/contracts/script/output/devnet/alignedlayer_deployment_output.json +++ b/contracts/script/output/devnet/alignedlayer_deployment_output.json @@ -19,7 +19,7 @@ }, "chainInfo": { "chainId": 31337, - "deploymentBlock": 0 + "deploymentBlock": 4 }, "permissions": { "alignedLayerAggregator": "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65", diff --git a/contracts/script/output/devnet/eigenlayer_deployment_output.json b/contracts/script/output/devnet/eigenlayer_deployment_output.json index 2d240a2e6e..bed6a31c7e 100644 --- a/contracts/script/output/devnet/eigenlayer_deployment_output.json +++ b/contracts/script/output/devnet/eigenlayer_deployment_output.json @@ -1,38 +1,50 @@ { "addresses": { + "TestToken": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", + "allocationManager": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + "allocationManagerImplementation": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", "avsDirectory": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", "avsDirectoryImplementation": "0x9A676e781A523b5d0C0e43731313A708CB607508", "baseStrategyImplementation": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", - "beaconOracle": "0x0000000000000000000000000000000000000000", - "delayedWithdrawalRouter": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "delayedWithdrawalRouterImplementation": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", "delegationManager": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", "delegationManagerImplementation": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", "eigenLayerPauserReg": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", "eigenLayerProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", "eigenPodBeacon": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", "eigenPodImplementation": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "eigenPodManager": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "eigenPodManagerImplementation": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE", + "eigenPodManager": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "eigenPodManagerImplementation": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", "emptyContract": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "rewardsCoordinator": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "rewardsCoordinatorImplementation": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "slasher": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "slasherImplementation": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", + "numStrategiesDeployed": 0, + "permissionController": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", + "permissionControllerImplementation": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "rewardsCoordinator": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", + "rewardsCoordinatorImplementation": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", "strategies": { - "MOCK": "0xc5a5C42992dECbae36851359345FE25997F5C42d" + "WETH": "0xc5a5C42992dECbae36851359345FE25997F5C42d" }, + "strategy": "0xc5a5C42992dECbae36851359345FE25997F5C42d", "strategyManager": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "strategyManagerImplementation": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82" + "strategyManagerImplementation": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + "token": { + "tokenProxyAdmin": "0x0000000000000000000000000000000000000000", + "EIGEN": "0x0000000000000000000000000000000000000000", + "bEIGEN": "0x0000000000000000000000000000000000000000", + "EIGENImpl": "0x0000000000000000000000000000000000000000", + "bEIGENImpl": "0x0000000000000000000000000000000000000000", + "eigenStrategy": "0x0000000000000000000000000000000000000000", + "eigenStrategyImpl": "0x0000000000000000000000000000000000000000" + } }, "chainInfo": { "chainId": 31337, "deploymentBlock": 0 }, - "numStrategies": 1, "parameters": { + "communityMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "executorMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "operationsMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "pauserMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + "pauserMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "timelock": "0x0000000000000000000000000000000000000000" } } \ No newline at end of file diff --git a/contracts/script/output/devnet/proof_aggregation_service_deployment_output.json b/contracts/script/output/devnet/proof_aggregation_service_deployment_output.json new file mode 100644 index 0000000000..ac677093af --- /dev/null +++ b/contracts/script/output/devnet/proof_aggregation_service_deployment_output.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "alignedProofAggregationService": "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc", + "alignedProofAggregationServiceImplementation": "0xFD471836031dc5108809D173A067e8486B9047A3" + } +} \ No newline at end of file diff --git a/contracts/script/output/devnet/proof_aggregation_service_deployment_output.mock.json b/contracts/script/output/devnet/proof_aggregation_service_deployment_output.mock.json new file mode 100644 index 0000000000..be628fc359 --- /dev/null +++ b/contracts/script/output/devnet/proof_aggregation_service_deployment_output.mock.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "alignedProofAggregationService": "0xB0D4afd8879eD9F52b28595d31B441D079B2Ca07", + "alignedProofAggregationServiceImplementation": "0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f" + } +} \ No newline at end of file diff --git a/contracts/script/output/holesky/alignedlayer_deployment_output.json b/contracts/script/output/holesky/alignedlayer_deployment_output.json index 663f7695ba..f3f63b5cc4 100644 --- a/contracts/script/output/holesky/alignedlayer_deployment_output.json +++ b/contracts/script/output/holesky/alignedlayer_deployment_output.json @@ -2,7 +2,7 @@ "addresses": { "alignedLayerProxyAdmin": "0x3eb924d928c138898FC089328f840105969bD6a0", "alignedLayerServiceManager": "0x58F280BeBE9B34c9939C3C39e0890C81f163B623", - "alignedLayerServiceManagerImplementation": "0x48d70037cC01c31039d476CbbbAe2Aa36F86Ef16", + "alignedLayerServiceManagerImplementation": "0xA13a945B5334038C8D1d63e4Bc6199929F3DDE97", "blsApkRegistry": "0xD0A725d82649f9e4155D7A60B638Fe33b3F25e3b", "blsApkRegistryImplementation": "0xB05BB98a966F58aDAB8dF58350b77fF2131A3b87", "indexRegistry": "0x4A7DE0a9fBBAa4fF0270d31852B363592F68B81F", @@ -14,7 +14,7 @@ "stakeRegistry": "0x51462D5511563A0F97Bb3Ce5475E1c3905b83F4b", "stakeRegistryImplementation": "0xd1555Be14931C061E06D3CE1D1Daadc1B3c6F8c7", "batcherPaymentService": "0x815aeCA64a974297942D2Bbf034ABEe22a38A003", - "batcherPaymentServiceImplementation": "0x07802Aa18a16E6F4d1a3411657a0f6b0a9Cb8Ea1", + "batcherPaymentServiceImplementation": "0x20e3D8D58B4AEAe3ec858825a6Ac5061AaDD53DF", "pauserRegistry": "0x0CBc10A1142465B2042f3804107A7283044dC6eD" }, "chainInfo": { diff --git a/contracts/script/output/holesky/alignedlayer_deployment_output.stage.json b/contracts/script/output/holesky/alignedlayer_deployment_output.stage.json index 85d255d793..01e4140ba1 100644 --- a/contracts/script/output/holesky/alignedlayer_deployment_output.stage.json +++ b/contracts/script/output/holesky/alignedlayer_deployment_output.stage.json @@ -2,7 +2,7 @@ "addresses": { "alignedLayerProxyAdmin": "0x7262d34478f8fB496a8feDfa0fdaBD1a0401d6cD", "alignedLayerServiceManager": "0x9C5231FC88059C086Ea95712d105A2026048c39B", - "alignedLayerServiceManagerImplementation": "0x87B8a7dbA67E5015BD24e3f2e1cDf1747819365b", + "alignedLayerServiceManagerImplementation": "0xd8653f06625bD975561D47e26BE0651AAbB60A7C", "blsApkRegistry": "0xEe1b6Dc663F17eC69987b6D56255a7282b358a09", "blsApkRegistryImplementation": "0x875f22C55D5363f7d1d1d63420298E89DcdB7bdF", "indexRegistry": "0xF12b82A933381391fE0e9a0270111f90FB10a810", @@ -14,7 +14,7 @@ "stakeRegistry": "0x1b0C9b87b094d821911500F91914B1A1D2856F14", "stakeRegistryImplementation": "0x52A9e264b98fe2d53805937Bc094a981E7eB6BeE", "batcherPaymentService": "0x7577Ec4ccC1E6C529162ec8019A49C13F6DAd98b", - "batcherPaymentServiceImplementation": "0x230FF8F073C188732856990b070485FD1A9b1039", + "batcherPaymentServiceImplementation": "0x9c95b11d04e0f1a72eEde033Cb2F687Fe0d79fB9", "pauserRegistry": "0xBCd09a605906a13F917230F82BdAC15B778A5B03" }, "chainInfo": { diff --git a/contracts/script/output/holesky/proof_aggregation_service_deployment_output.json b/contracts/script/output/holesky/proof_aggregation_service_deployment_output.json new file mode 100644 index 0000000000..774910185a --- /dev/null +++ b/contracts/script/output/holesky/proof_aggregation_service_deployment_output.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "alignedProofAggregationService": "0xe84CD4084d8131841CE6DC265361f81F4C59a1d4", + "alignedProofAggregationServiceImplementation": "0x76C76eC2cB9eDCE3327ecD4CbB6847ED10d26aA9" + } +} diff --git a/contracts/script/output/holesky/proof_aggregation_service_deployment_output.stage.json b/contracts/script/output/holesky/proof_aggregation_service_deployment_output.stage.json new file mode 100644 index 0000000000..f89ebf66de --- /dev/null +++ b/contracts/script/output/holesky/proof_aggregation_service_deployment_output.stage.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "alignedProofAggregationService": "0x7Eace34A8d4C4CacE633946C6F7CF4BeF3F33513", + "alignedProofAggregationServiceImplementation": "0x6454e81F80E9f45583F63cB1fCEbEc1cE3AB9559" + } +} diff --git a/contracts/script/output/hoodi/alignedlayer_deployment_output.json b/contracts/script/output/hoodi/alignedlayer_deployment_output.json new file mode 100644 index 0000000000..8df7e3e141 --- /dev/null +++ b/contracts/script/output/hoodi/alignedlayer_deployment_output.json @@ -0,0 +1,32 @@ +{ + "addresses": { + "alignedLayerProxyAdmin": "0xbE155aA8FE6beF3B473eEFC8040ca770C1198FC6", + "alignedLayerServiceManager": "0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c", + "alignedLayerServiceManagerImplementation": "0x3b78f5A2D31B72409CbEB1a07E2CB2Cd86936E56", + "blsApkRegistry": "0xa7Fc4D0Ad59593fB93B39c3353B4144Ea179f61e", + "blsApkRegistryImplementation": "0x808be4D75bc88258df049ad54A3a606c163CD817", + "indexRegistry": "0x85e972915Ca1FeDF6Ad8361cC1F78211bd3cA6a1", + "indexRegistryImplementation": "0x1437cae3bb5d07990B187458E49869a8be9311D3", + "operatorStateRetriever": "0x9B0062e85c7d5f7c195b7Ef351A377dd81e9E055", + "pauserRegistry": "0xeaD7fbc7d1A7fA6a9d324501A686871D3795232C", + "registryCoordinator": "0xD06AAf23d136ECBfb5Bdb349Dd7a87aDc74673Dd", + "registryCoordinatorImplementation": "0x59c3d46a9164dd5Bb6346eE3fb6A3a25F1D0B159", + "serviceManagerRouter": "0x2DAd030F48b35c50019a590858255518124d1589", + "stakeRegistry": "0xCe3DFA29Ce371ccE673E631213d827157cfe67e0", + "stakeRegistryImplementation": "0x9E30b5ADc48C8Ef4fcBc01e36BfCD01d329B3042", + "batcherPaymentService": "0x041af25Fce2413570aaa0029D36DeA1eFdeff083", + "batcherPaymentServiceImplementation": "0x30C0Df2DA0A4c5104D49f2861ea1DaAd2B03DaD0" + }, + "chainInfo": { + "chainId": 560048, + "deploymentBlock": 1093860 + }, + "permissions": { + "alignedLayerAggregator": "0x30f21BE6E79a32dEee382AD47987d43B68a28244", + "alignedLayerChurner": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "alignedLayerEjector": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "alignedLayerOwner": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "alignedLayerPauser": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927", + "alignedLayerUpgrader": "0xF138043AC49a0cbB1C8fF03433B51861eA0AE927" + } +} diff --git a/contracts/script/output/hoodi/batcher_deployment_output.json b/contracts/script/output/hoodi/batcher_deployment_output.json new file mode 100644 index 0000000000..3db1d25da1 --- /dev/null +++ b/contracts/script/output/hoodi/batcher_deployment_output.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "batcherPaymentService": "0x041af25Fce2413570aaa0029D36DeA1eFdeff083", + "batcherPaymentServiceImplementation": "0x30C0Df2DA0A4c5104D49f2861ea1DaAd2B03DaD0" + } +} \ No newline at end of file diff --git a/contracts/script/output/hoodi/eigenlayer_deployment_output.json b/contracts/script/output/hoodi/eigenlayer_deployment_output.json new file mode 100644 index 0000000000..b2ef21dd6a --- /dev/null +++ b/contracts/script/output/hoodi/eigenlayer_deployment_output.json @@ -0,0 +1,39 @@ +{ + "addresses": { + "avsDirectory": "0xD58f6844f79eB1fbd9f7091d05f7cb30d3363926", + "avsDirectoryImplementation": "0xd2905B858cA5Ded115B61dd9E98F7dcF9aEE2d5c", + "baseStrategyImplementation": "0x65147e9916152C1EbdBaD8A6f3e145b4BDeE2D6F", + "beaconOracle": "", + "delayedWithdrawalRouter": "", + "delayedWithdrawalRouterImplementation": "", + "delegationManager": "0x867837a9722C512e0862d8c2E15b8bE220E8b87d", + "delegationManagerImplementation": "0xcC305562B01bec562D13A40ef8781e313AFE7940", + "eigenLayerPauserReg": "0x64D78399B0fa32EA72959f33edCF313159F3c13D", + "eigenLayerProxyAdmin": "0xE7f4E30D2619273468afe9EC0Acf805E55532257", + "eigenPodBeacon": "0x5e1577f8efB21b229cD5Eb4C5Aa3d6C4b228f650", + "eigenPodImplementation": "0x2D6c7f9862BD80Cf0d9d93FC6b513D69E7Db7869", + "eigenPodManager": "0xcd1442415Fc5C29Aa848A49d2e232720BE07976c", + "eigenPodManagerImplementation": "0x59B11b191B572888703E150E45F5015e0fFcf525", + "emptyContract": "", + "rewardsCoordinator": "0x29e8572678e0c272350aa0b4B8f304E47EBcd5e7", + "rewardsCoordinatorImplementation": "0xe786FD0dE8a6001772386700318187Dc438a2832", + "strategies": "", + "strategyManager": "0xeE45e76ddbEDdA2918b8C7E3035cd37Eab3b5D41", + "strategyManagerImplementation": "0x742A228482701d693061BfE9C5B3Eb3959Ea927b", + "allocationManager": "0x95a7431400F362F3647a69535C5666cA0133CAA0", + "allocationManagerImplementation": "0x8b1DBbAa79507CD6b6e1d9FBe90E3FB18EFf11a0", + "permissionController": "0xdcCF401fD121d8C542E96BC1d0078884422aFAD2", + "permissionControllerImplementation": "0x2D731E7993a100afd19454B98eEEC7b90366eA27", + "keyRegistrar": "", + "keyRegistrarImplementation": "" + }, + "chainInfo": { + "chainId": 560048, + "deploymentBlock": 164921 + }, + "parameters": { + "executorMultisig": "0x58c468A9A50673693D0f0e1DfBf5DF280b99b36E", + "operationsMultisig": "0xfB7d94501E4d4ACC264833Ef4ede70a11517422B", + "pauserMultisig": "0x58c468A9A50673693D0f0e1DfBf5DF280b99b36E" + } +} \ No newline at end of file diff --git a/contracts/script/output/hoodi/proof_aggregation_service_deployment_output.json b/contracts/script/output/hoodi/proof_aggregation_service_deployment_output.json new file mode 100644 index 0000000000..ede09af82e --- /dev/null +++ b/contracts/script/output/hoodi/proof_aggregation_service_deployment_output.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "alignedProofAggregationService": "0xEFeD2fd949995BE1a1C7f61AbFC0A33412c37f95", + "alignedProofAggregationServiceImplementation": "0x11F1aB1521074868fC3c2EFf78c2cD228eA58EdC" + } +} \ No newline at end of file diff --git a/contracts/script/output/mainnet_staging/alignedlayer_deployment_output.json b/contracts/script/output/mainnet_staging/alignedlayer_deployment_output.json new file mode 100644 index 0000000000..81d939a26e --- /dev/null +++ b/contracts/script/output/mainnet_staging/alignedlayer_deployment_output.json @@ -0,0 +1,32 @@ +{ + "addresses": { + "alignedLayerProxyAdmin": "0x0D16a82be664c337c615499f8775Ef0431703daC", + "alignedLayerServiceManager": "0x96b6a29D7B98519Ae66E6398BD27A76B30a5dC3f", + "alignedLayerServiceManagerImplementation": "0x32112B2C1a2cd002a8468fCd556E9010cd817eA1", + "blsApkRegistry": "0x1c81a981bC1605f050C4D400415c7B68f3007053", + "blsApkRegistryImplementation": "0xd49879DD898dB153a9580627ED423832827730c2", + "indexRegistry": "0x4f71C1ab239C967Cb8F8F7f3A3ce6547c753b70B", + "indexRegistryImplementation": "0xd899b7280Cf05b3a802Fc5Cf3ABA55824a0be962", + "operatorStateRetriever": "0xf12De3271f2681Db6d5201F6CFe64d38A668ff34", + "pauserRegistry": "0x9A97Fa7c8b4F076b714F691E87816787aAaDa41D", + "registryCoordinator": "0x7bAF5135241D7D1F870AC6Dd6956BDB1FF55fc3D", + "registryCoordinatorImplementation": "0xB4eECf481fbe258eF0BE6c64C334Fd73896BEc7B", + "serviceManagerRouter": "0xDd7b2239aCb6FB660FE20136a4D2e8A04E15FE6A", + "stakeRegistry": "0x4d52a2289f9f1b126E96937193558fFD2F294DcC", + "stakeRegistryImplementation": "0x398Fe850c9c0B10CCAEe273Af68a526AB99278D2", + "batcherPaymentService": "0x88ad27EfBeF16b6fC5b2E40c5155d61876f847c5", + "batcherPaymentServiceImplementation": "0x184B4EBe526f18341D920E7b9A74B3F533bD6449" + }, + "chainInfo": { + "chainId": 1, + "deploymentBlock": 22124788 + }, + "permissions": { + "alignedLayerAggregator": "0xb72D98AB27EBCF86C96a53564135d3141bAAE398", + "alignedLayerChurner": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "alignedLayerEjector": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "alignedLayerOwner": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "alignedLayerPauser": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599", + "alignedLayerUpgrader": "0x2106AC6FE9599f8A0710643C75661aaf8d8B1599" + } +} \ No newline at end of file diff --git a/contracts/script/output/sepolia/alignedlayer_deployment_output.json b/contracts/script/output/sepolia/alignedlayer_deployment_output.json index 406321362d..6e4730ce64 100644 --- a/contracts/script/output/sepolia/alignedlayer_deployment_output.json +++ b/contracts/script/output/sepolia/alignedlayer_deployment_output.json @@ -1,32 +1,32 @@ { "addresses": { - "alignedLayerProxyAdmin": "0x6b0E241bFf4A1596E0E826E55Cc285D7E2E7A45D", - "alignedLayerServiceManager": "0xc3F9c9f9CABdCe9679F5Aa184b02369f1c2A4E16", - "alignedLayerServiceManagerImplementation": "0xEB59ae25809b5B20db43371f0ca7f135b862647E", - "blsApkRegistry": "0xBDdBd0869b10079c5B00B8Da9B6e22A2C4a99040", - "blsApkRegistryImplementation": "0xAf33669eb4c062c1cdc756d96a43a1e734d9BC35", - "indexRegistry": "0x77042702606eC5A3c9d49a550dEE400681691c08", - "indexRegistryImplementation": "0x4A89A4986c4cfeFb9e59DB0923851824E1C66013", - "operatorStateRetriever": "0xfe8009EfD51FCD1BCf09712C9719e6EB3796546a", - "pauserRegistry": "0x42a3879a99Ddfd56a763415a3a33529bd1699112", - "registryCoordinator": "0xFfe833f349bE163EFa2fAa39f0dA2Ac37dB04857", - "registryCoordinatorImplementation": "0xf0A6F3d339bE498d04fE00cD328D0B4f3b475409", - "serviceManagerRouter": "0x73D68e630b4aAa35f01c4735914c55c5c3181672", - "stakeRegistry": "0xB57FA20C97235dA95Cf8e83a15865a3eb659B24a", - "stakeRegistryImplementation": "0x809D99a4357667203cC06fBc7046C236085be843", - "batcherPaymentService": "0x206BfD26d368Fa6f4C8F9b1269bEA4A824286a5c", - "batcherPaymentServiceImplementation": "0x872102bA2030C0AB26427Be24de86E0dD7622C67" + "alignedLayerProxyAdmin": "0xD259905A51e99585fA5b44A696C9129Db36460C8", + "alignedLayerServiceManager": "0xFf731AB7b3653dc66878DC77E851D174f472d137", + "alignedLayerServiceManagerImplementation": "0x35cc2385B8F76332a7160e86E78894F7f0ab5259", + "blsApkRegistry": "0x33b541E0C2725eEa4FB61F5f0E40ef84e764A228", + "blsApkRegistryImplementation": "0xdFAdF9DCb5a69Da4466122A08E8fd3f0d5C87F63", + "indexRegistry": "0xA5EA732c82f51Bcbff4021c1F6EA3853B6565347", + "indexRegistryImplementation": "0x5709C66752789932C95b1EF7A516e97106AC67bB", + "operatorStateRetriever": "0xE4BDE5A267a44444E2808c60B4Abf89e74f552c6", + "pauserRegistry": "0x2C2a377F95F06c6b8F5a838244Cd7B0e8F680717", + "registryCoordinator": "0x0Ef1920F089DD02d3A28BF2e34342FD3E74160A3", + "registryCoordinatorImplementation": "0x7f7F66B3FbeaFeF6e7F4219F2fa807808d854125", + "serviceManagerRouter": "0xb30aD4Fe5Fc5424670828Ee0D1d740A588644210", + "stakeRegistry": "0xe87cB8f9C74264BD446835F899e15c3AE1209C34", + "stakeRegistryImplementation": "0x83286078696eE5F6833701c94Ba7E4B2A6bCddb6", + "batcherPaymentService": "0x403dE630751e148bD71BFFcE762E5667C0825399", + "batcherPaymentServiceImplementation": "0xCDafa6c553AFE700964Adf04B577517b2BAe8318" }, "chainInfo": { "chainId": 11155111, - "deploymentBlock": 7111030 + "deploymentBlock": 9062616 }, "permissions": { - "alignedLayerAggregator": "0x1Fa835Be4f67eA84617F16917FaF54A4e336F9b0", - "alignedLayerChurner": "0x1Fa835Be4f67eA84617F16917FaF54A4e336F9b0", - "alignedLayerEjector": "0x1Fa835Be4f67eA84617F16917FaF54A4e336F9b0", - "alignedLayerOwner": "0x1Fa835Be4f67eA84617F16917FaF54A4e336F9b0", - "alignedLayerPauser": "0x1Fa835Be4f67eA84617F16917FaF54A4e336F9b0", - "alignedLayerUpgrader": "0x1Fa835Be4f67eA84617F16917FaF54A4e336F9b0" + "alignedLayerAggregator": "0x1407a423FFaBcBC6ceEb0bbDf4cd093c860a3F62", + "alignedLayerChurner": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "alignedLayerEjector": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "alignedLayerOwner": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "alignedLayerPauser": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106", + "alignedLayerUpgrader": "0x771C1aB81C81A774B66C4386Eb50D6DFC8538106" } } diff --git a/contracts/script/output/sepolia/batcher_deployment_output.json b/contracts/script/output/sepolia/batcher_deployment_output.json new file mode 100644 index 0000000000..c32e7dfb00 --- /dev/null +++ b/contracts/script/output/sepolia/batcher_deployment_output.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "batcherPaymentService": "0x403dE630751e148bD71BFFcE762E5667C0825399", + "batcherPaymentServiceImplementation": "0xCDafa6c553AFE700964Adf04B577517b2BAe8318" + } +} diff --git a/contracts/script/output/sepolia/eigenlayer_deployment_output.json b/contracts/script/output/sepolia/eigenlayer_deployment_output.json index 3ded9a3c0f..8544bf9881 100644 --- a/contracts/script/output/sepolia/eigenlayer_deployment_output.json +++ b/contracts/script/output/sepolia/eigenlayer_deployment_output.json @@ -1,38 +1,39 @@ { "addresses": { - "avsDirectory": "0x2f1F293185c7b57E1E8e07B95C9f04D33418854c", - "avsDirectoryImplementation": "0x6DC4C39E3e6FC3bdbb054C6Cf87FEf8E33DBBCa9", - "baseStrategyImplementation": "0x942CfD2F80f517D6e6129277b027750D01Aa3Eb1", - "beaconOracle": "0x0000000000000000000000000000000000000000", - "delayedWithdrawalRouter": "0x02eE8752d9d6ee1B366BD04d24Bbaa3547ABc0c1", - "delayedWithdrawalRouterImplementation": "0x5FC324E99fb6db1859225C3E53b2688ce7FbF5E1", - "delegationManager": "0x7F250FA1f844Ae88eAdF919ca3a95e327B639d8F", - "delegationManagerImplementation": "0x77E8329dc5290Ef8BA61A997132316a39f731968", - "eigenLayerPauserReg": "0xC2316E03d0871f667e75C62181089988Eb4DB7Db", - "eigenLayerProxyAdmin": "0x3b9b847F251260d6681E2dF937E84Ae4Db1191e5", - "eigenPodBeacon": "0x879Fce476F58b5691a6AF29C2895e9fDF956642C", - "eigenPodImplementation": "0x953F32aE91ec538eBAD2110b3276dEDe9a886519", - "eigenPodManager": "0x1c49661c978c587d98a4dF730CfBaAeE8836d813", - "eigenPodManagerImplementation": "0xE3A2b29e35E878f24bcf46b3d53004aBD5105d99", - "emptyContract": "0xCf334DbB9bEefC53e3e9Fa0feb7319B702155408", - "rewardsCoordinator": "0x420324e8834D2bfF217319D497DDB2B221dea46C", - "rewardsCoordinatorImplementation": "0xF2Fdf5cDBd262DAE8aCF77f85fc1A7546B5FBa3D", - "slasher": "0xF953eDdb64b624FcEbb133f3D991BA05B122bEC8", - "slasherImplementation": "0xB4Fe2669dA4ee0A67E292F1f09d2b83E07C0fb26", - "strategies": { - "MOCK": "0x3eb924d928c138898FC089328f840105969bD6a0" - }, - "strategyManager": "0xAcd358E6CCdE1634A1e80F143cF467Bf40fac4BA", - "strategyManagerImplementation": "0x7A7122D7a5194217Be6181c76484dCc10E8BFf83" + "avsDirectory": "0xa789c91ECDdae96865913130B786140Ee17aF545", + "avsDirectoryImplementation": "0xD88b96998325c3e74A74a0B0938BBFeA1395C188", + "baseStrategyImplementation": "0x3BA4F6973D9ed2f0617C4b15d8CE06155fd6a43b", + "beaconOracle": "", + "delayedWithdrawalRouter": "", + "delayedWithdrawalRouterImplementation": "", + "delegationManager": "0xD4A7E1Bd8015057293f0D0A557088c286942e84b", + "delegationManagerImplementation": "0xa9821F0620D347648f375c597761C7FD16C1b823", + "eigenLayerPauserReg": "0x63AAe451780090f50Ad323aAEF155F63a29D20f3", + "eigenLayerProxyAdmin": "0x56E88cb4f0136fC27D95499dE4BE2acf47946Fa1", + "eigenPodBeacon": "0x0e19E56E41D42137d00dD4f51EC2F613E50cAcf4", + "eigenPodImplementation": "0x107339987a46F77598cB563bf63eb8a1C9f5b40e", + "eigenPodManager": "0x56BfEb94879F4543E756d26103976c567256034a", + "eigenPodManagerImplementation": "0x10848d61cE044bcAEE301a28A4C30Ad0a40e88Ae", + "emptyContract": "", + "rewardsCoordinator": "0x5ae8152fb88c26ff9ca5C014c94fca3c68029349", + "rewardsCoordinatorImplementation": "0xcC305562B01bec562D13A40ef8781e313AFE7940", + "strategies": "", + "strategyManager": "0x2E3D6c0744b10eb0A4e6F679F71554a39Ec47a5D", + "strategyManagerImplementation": "0xf0A8735c26121e6C488ebac65c8fa3fe37cBFCB3", + "allocationManager": "0x42583067658071247ec8CE0A516A58f682002d07", + "allocationManagerImplementation": "0xB87AeeA46BB3a3050D277272E33b011922537Db7", + "permissionController": "0x44632dfBdCb6D3E21EF613B0ca8A6A0c618F5a37", + "permissionControllerImplementation": "0x59B11b191B572888703E150E45F5015e0fFcf525", + "keyRegistrar": "0xA4dB30D08d8bbcA00D40600bee9F029984dB162a", + "keyRegistrarImplementation": "0xe61E638650DC91Fe0f59bBBf5315517337d687CD" }, "chainInfo": { "chainId": 11155111, "deploymentBlock": 6200286 }, - "numStrategies": 1, "parameters": { - "executorMultisig": "0x97aEC5F28181abe5d2aD40dBe7FbaEe014529b7D", - "operationsMultisig": "0x97aEC5F28181abe5d2aD40dBe7FbaEe014529b7D", - "pauserMultisig": "0x97aEC5F28181abe5d2aD40dBe7FbaEe014529b7D" + "executorMultisig": "0x4FDA8998EC3b7d4b4A612d45FeB8fB36734470f2", + "operationsMultisig": "0xb094Ba769b4976Dc37fC689A76675f31bc4923b0", + "pauserMultisig": "0x0B415f75980D863872C3eb8caa76E6eC8Bc81536" } -} \ No newline at end of file +} diff --git a/contracts/script/output/sepolia/proof_aggregation_service_deployment_output.json b/contracts/script/output/sepolia/proof_aggregation_service_deployment_output.json new file mode 100644 index 0000000000..b19b25162e --- /dev/null +++ b/contracts/script/output/sepolia/proof_aggregation_service_deployment_output.json @@ -0,0 +1,6 @@ +{ + "addresses": { + "alignedProofAggregationService": "0xb5D46304c30B1AeB3a8Da6ab599c336f7946C8A4", + "alignedProofAggregationServiceImplementation": "0x0Fc3e5639980BEd39016a3B34e4aa18857934BEb" + } +} diff --git a/contracts/script/upgrade/ProofAggregatorServiceUpgrader.s.sol b/contracts/script/upgrade/ProofAggregatorServiceUpgrader.s.sol new file mode 100644 index 0000000000..389762e68a --- /dev/null +++ b/contracts/script/upgrade/ProofAggregatorServiceUpgrader.s.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.12; + +import {AlignedProofAggregationService} from "../../src/core/AlignedProofAggregationService.sol"; + +import "forge-std/Script.sol"; +import "forge-std/StdJson.sol"; + +contract AlignedProofAggregationServiceUpgrader is Script { + function run(string memory alignedLayerDeploymentFilePath) external returns (address, address) { + string memory aligned_deployment_file = vm.readFile(alignedLayerDeploymentFilePath); + + vm.startBroadcast(); + + AlignedProofAggregationService proofAggregationServiceProxy = AlignedProofAggregationService( + payable(stdJson.readAddress(aligned_deployment_file, ".addresses.alignedProofAggregationService")) + ); + + AlignedProofAggregationService newProofAggregatorServiceImplementation = new AlignedProofAggregationService(); + + // Not link the new implementation to the proxy + // Because this must be executed in the multisig + + vm.stopBroadcast(); + + return (address(proofAggregationServiceProxy), address(newProofAggregatorServiceImplementation)); + } +} diff --git a/contracts/scripts/.env.holesky b/contracts/scripts/.env.holesky index f35d67dc9f..1b9ce860af 100644 --- a/contracts/scripts/.env.holesky +++ b/contracts/scripts/.env.holesky @@ -5,5 +5,7 @@ DEPLOY_CONFIG_PATH=./script/deploy/config/holesky/aligned.holesky.config.json BATCHER_PAYMENT_SERVICE_CONFIG_PATH=./script/deploy/config/holesky/batcher-payment-service.holesky.config.json BATCHER_PAYMENT_SERVICE_OUTPUT_PATH=./script/output/holesky/batcher_deployment_output.json OUTPUT_PATH=./script/output/holesky/alignedlayer_deployment_output.json +PROOF_AGGREGATOR_DEPLOY_CONFIG_PATH=./script/deploy/config/holesky/proof-aggregator-service.holesky.config.json +PROOF_AGGREGATOR_OUTPUT_PATH=./script/output/holesky/proof_aggregation_service_deployment_output.json ETHERSCAN_API_KEY= MULTISIG=false diff --git a/contracts/scripts/.env.hoodi b/contracts/scripts/.env.hoodi new file mode 100644 index 0000000000..d89bb007ab --- /dev/null +++ b/contracts/scripts/.env.hoodi @@ -0,0 +1,11 @@ +RPC_URL=https://ethereum-hoodi-rpc.publicnode.com +PRIVATE_KEY= +EXISTING_DEPLOYMENT_INFO_PATH=./script/output/hoodi/eigenlayer_deployment_output.json +DEPLOY_CONFIG_PATH=./script/deploy/config/hoodi/aligned.hoodi.config.json +BATCHER_PAYMENT_SERVICE_CONFIG_PATH=./script/deploy/config/hoodi/batcher-payment-service.hoodi.config.json +BATCHER_PAYMENT_SERVICE_OUTPUT_PATH=./script/output/hoodi/batcher_deployment_output.json +OUTPUT_PATH=./script/output/hoodi/alignedlayer_deployment_output.json +PROOF_AGGREGATOR_DEPLOY_CONFIG_PATH=./script/deploy/config/hoodi/proof-aggregator-service.hoodi.config.json +PROOF_AGGREGATOR_OUTPUT_PATH=./script/output/hoodi/proof_aggregation_service_deployment_output.json +ETHERSCAN_API_KEY= +MULTISIG=false diff --git a/contracts/scripts/.env.mainnet.staging b/contracts/scripts/.env.mainnet.staging new file mode 100644 index 0000000000..4caf4f82a2 --- /dev/null +++ b/contracts/scripts/.env.mainnet.staging @@ -0,0 +1,8 @@ +RPC_URL=https://ethereum-rpc.publicnode.com +PRIVATE_KEY= +EXISTING_DEPLOYMENT_INFO_PATH=./script/output/mainnet/eigenlayer_deployment_output.json +DEPLOY_CONFIG_PATH=./script/deploy/config/mainnet_staging/aligned.mainnet.config.json +BATCHER_PAYMENT_SERVICE_CONFIG_PATH=./script/deploy/config/mainnet_staging/batcher-payment-service.mainnet.config.json +OUTPUT_PATH=./script/output/mainnet_staging/alignedlayer_deployment_output.json +ETHERSCAN_API_KEY= +MULTISIG=false diff --git a/contracts/scripts/.env.sepolia b/contracts/scripts/.env.sepolia index dd14502516..59c518df64 100644 --- a/contracts/scripts/.env.sepolia +++ b/contracts/scripts/.env.sepolia @@ -5,5 +5,7 @@ DEPLOY_CONFIG_PATH=./script/deploy/config/sepolia/aligned.sepolia.config.json BATCHER_PAYMENT_SERVICE_CONFIG_PATH=./script/deploy/config/sepolia/batcher-payment-service.sepolia.config.json BATCHER_PAYMENT_SERVICE_OUTPUT_PATH=./script/output/sepolia/batcher_deployment_output.json OUTPUT_PATH=./script/output/sepolia/alignedlayer_deployment_output.json +PROOF_AGGREGATOR_DEPLOY_CONFIG_PATH=./script/deploy/config/sepolia/proof-aggregator-service.sepolia.config.json +PROOF_AGGREGATOR_OUTPUT_PATH=./script/output/sepolia/proof_aggregation_service_deployment_output.json ETHERSCAN_API_KEY= MULTISIG=false diff --git a/contracts/scripts/.env.stage b/contracts/scripts/.env.stage new file mode 100644 index 0000000000..c22d7a1e24 --- /dev/null +++ b/contracts/scripts/.env.stage @@ -0,0 +1,10 @@ +RPC_URL=https://ethereum-holesky-rpc.publicnode.com +PRIVATE_KEY= +EXISTING_DEPLOYMENT_INFO_PATH=./script/output/holesky/eigenlayer_deployment_output.json +DEPLOY_CONFIG_PATH=./script/deploy/config/holesky/aligned.holesky.config.stage.json +BATCHER_PAYMENT_SERVICE_CONFIG_PATH=./script/deploy/config/holesky/batcher-payment-service.holesky.config.stage.json +OUTPUT_PATH=./script/output/holesky/alignedlayer_deployment_output.stage.json +PROOF_AGGREGATOR_DEPLOY_CONFIG_PATH=./script/deploy/config/holesky/proof-aggregator-service.holesky.config.stage.json +PROOF_AGGREGATOR_OUTPUT_PATH=./script/output/holesky/proof_aggregation_service_deployment_output.stage.json +ETHERSCAN_API_KEY= +MULTISIG=false diff --git a/contracts/scripts/anvil/deploy_aligned_contracts.sh b/contracts/scripts/anvil/deploy_aligned_contracts.sh index 70f54d44c3..48e299c593 100755 --- a/contracts/scripts/anvil/deploy_aligned_contracts.sh +++ b/contracts/scripts/anvil/deploy_aligned_contracts.sh @@ -5,13 +5,11 @@ parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) # At this point we are in tests/integration cd "$parent_path" -# Start an empty anvil chain in the background and dump its state to a json file upon exit -anvil --load-state state/eigenlayer-deployed-anvil-state.json --dump-state state/alignedlayer-deployed-anvil-state.json & +# Start anvil chain in the background and dump its state to a json file upon exit +anvil --load-state state/sp1-deployed-anvil-state.json --dump-state state/alignedlayer-deployed-anvil-state.json & cd ../../ -ALIGNED_LAYER_SERVICE_MANAGER_ADDRESS=$(jq -r '.addresses.alignedLayerServiceManager' ./script/output/devnet/alignedlayer_deployment_output.json) - sleep 1 # Deploy the contracts @@ -65,5 +63,42 @@ rm -f "script/output/devnet/alignedlayer_deployment_output.temp1.json" rm -f "script/output/devnet/alignedlayer_deployment_output.temp2.json" +# Update Program IDs in anvil deployment +cd .. +make proof_aggregator_write_program_ids + +# Copy new values to config file +jq '.programs_id.risc0AggregationProgramImageId = $input[0].risc0_chunk_aggregator_image_id | .programs_id.sp1AggregationProgramVKHash = $input[0].sp1_chunk_aggregator_vk_hash' \ + --slurpfile input aggregation_mode/programs_ids.json \ + contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.config.json \ + > temp.json && mv temp.json contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.config.json + +jq '.programs_id.risc0AggregationProgramImageId = $input[0].risc0_chunk_aggregator_image_id | .programs_id.sp1AggregationProgramVKHash = $input[0].sp1_chunk_aggregator_vk_hash' \ + --slurpfile input aggregation_mode/programs_ids.json \ + contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.mock.config.json \ + > temp.json && mv temp.json contracts/script/deploy/config/devnet/proof-aggregator-service.devnet.mock.config.json + +cd contracts + +# Deploy proof aggregation service contract with SP1 Verifier +forge script script/deploy/AlignedProofAggregationServiceDeployer.s.sol \ + ./script/deploy/config/devnet/proof-aggregator-service.devnet.config.json \ + ./script/output/devnet/proof_aggregation_service_deployment_output.json \ + --rpc-url "http://localhost:8545" \ + --private-key "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" \ + --broadcast \ + --sig "run(string configPath, string outputPath)" \ + --via-ir + +# Deploy proof aggregation service contract with Mocked Verifier +forge script script/deploy/AlignedProofAggregationServiceDeployer.s.sol \ + ./script/deploy/config/devnet/proof-aggregator-service.devnet.mock.config.json \ + ./script/output/devnet/proof_aggregation_service_deployment_output.mock.json \ + --rpc-url "http://localhost:8545" \ + --private-key "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" \ + --broadcast \ + --sig "run(string configPath, string outputPath)" \ + --via-ir + # Kill the anvil process to save state pkill anvil diff --git a/contracts/scripts/anvil/deploy_eigen_contracts.sh b/contracts/scripts/anvil/deploy_eigen_contracts.sh index 432abed8b4..f455a4d229 100644 --- a/contracts/scripts/anvil/deploy_eigen_contracts.sh +++ b/contracts/scripts/anvil/deploy_eigen_contracts.sh @@ -1,19 +1,44 @@ #!/bin/bash +RPC_URL="http://localhost:8545" +PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" + # cd to the directory of this script so that this can be run from anywhere parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) -# At this point we are in tests/integration +# At this point we are in contracts/scripts/anvil/ cd "$parent_path" # Start an empty anvil chain in the background and dump its state to a json file upon exit anvil --dump-state state/eigenlayer-deployed-anvil-state.json & cd ../../ +# At this point we are in contracts/ + +cd eigenlayer_contracts/eigenlayer-contracts sleep 1 # Deploy the contracts -forge script script/deploy/EigenLayerDeployer.s.sol --rpc-url "http://localhost:8545" --private-key "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" --broadcast --sig "run(string memory configFile)" -- eigen.devnet.config.json +forge script script/deploy/local/deploy_from_scratch.slashing.s.sol \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY \ + --broadcast \ + --sig "run(string memory configFile)" -- local/deploy_from_scratch.slashing.anvil.config.json + +# Whitelist strategy into strategyManager +strategy_manager=$(jq -r '.addresses.strategyManager' script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json) +strategy=$(jq -r '.addresses.strategy' script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json) +echo "Whitelisting strategy ($strategy) into strategy manager ($strategy_manager)" +cast send "$strategy_manager" \ + "addStrategiesToDepositWhitelist(address[])" "[$strategy]" \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY \ + +# Copy the deployment data to Aligned output directory +cp script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json ../../script/output/devnet/eigenlayer_deployment_output.json + +# Restore the submodule repository +git restore script/output/devnet/SLASHING_deploy_from_scratch_deployment_data.json # Kill the anvil process to save state pkill anvil diff --git a/contracts/scripts/anvil/deploy_risc0_contracts.sh b/contracts/scripts/anvil/deploy_risc0_contracts.sh new file mode 100755 index 0000000000..8d0f7223ce --- /dev/null +++ b/contracts/scripts/anvil/deploy_risc0_contracts.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# cd to the directory of this script so that this can be run from anywhere +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) +# At this point we are in tests/integration +cd "$parent_path" + +# Start an empty anvil chain in the background and dump its state to a json file upon exit +anvil --load-state state/eigenlayer-deployed-anvil-state.json --dump-state state/risc0-deployed-anvil-state.json & + +# cd to /contracts +cd ../../ + +sleep 1 + +export RPC_DEVNET='http://localhost:8545' + +# Anvil account #2 +export DEPLOYER_PRIVATE_KEY='0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a' + +forge script script/deploy/Risc0Groth16VerifierDeployer.s.sol:Risc0VerifierRouterDeployer \ + --rpc-url $RPC_DEVNET \ + --private-key $DEPLOYER_PRIVATE_KEY \ + --broadcast \ + --via-ir + +# Kill the anvil process to save state +pkill anvil diff --git a/contracts/scripts/anvil/deploy_sp1_contracts.sh b/contracts/scripts/anvil/deploy_sp1_contracts.sh new file mode 100644 index 0000000000..37e8ad87df --- /dev/null +++ b/contracts/scripts/anvil/deploy_sp1_contracts.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# cd to the directory of this script so that this can be run from anywhere +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) +# At this point we are in tests/integration +cd "$parent_path" + +# Start an empty anvil chain in the background and dump its state to a json file upon exit +anvil --load-state state/risc0-deployed-anvil-state.json --dump-state state/sp1-deployed-anvil-state.json & + +# cd to /contracts +cd ../../ + +sleep 1 + +export CHAINS='DEVNET' +export RPC_DEVNET='http://localhost:8545' + +# Anvil account #2 +export OWNER='0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC' +export VERIFIER_PRIVATE_KEY="0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a" + +# Deploy Groth16 SP1 verifier gateway +forge script script/deploy/SP1VerifierGatewayGroth16Deployer.s.sol:SP1VerifierGatewayScript \ + --rpc-url $RPC_DEVNET \ + --private-key $VERIFIER_PRIVATE_KEY \ + --broadcast + +# Deploy Groth16 SP1 verifier +forge script ./script/deploy/SP1VerifierGroth16Deployer.s.sol:SP1VerifierScript \ + --rpc-url $RPC_DEVNET \ + --private-key $VERIFIER_PRIVATE_KEY \ + --broadcast + + +# Kill the anvil process to save state +pkill anvil diff --git a/contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json b/contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json index fd4e277d1b..30636332f5 100644 --- a/contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json +++ b/contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json @@ -1 +1 @@ -{"block":{"number":"0xf","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x67db1b07","gas_limit":"0x1c9c380","basefee":"0xb9daab2","difficulty":"0x0","prevrandao":"0xb6db88fde9c0417f329c5db0b54637d85285ed6976305f6a785322ce1b036584","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x36c044d","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000c9":"0x94af000f6f71feb2b8401e668d95fd208038580e89d240930f90ba827aa34858","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033","storage":{}},"0x0b306bf915c4d645ff596e518faf3f9669b97016":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f0000000000000000000000000000000000000000000000000000000065fb788081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000076a70081565b6103e97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f0000000000000000000000000000000000000000000000000000000000093a8081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f00000000000000000000000000000000000000000000000000000000005c490081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000007a69460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f00000000000000000000000000000000000000000000000000000000005c490016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000278d00164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f0000000000000000000000000000000000000000000000000000000000007a6946036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x0e801d84fa97b50751dbf25036d067dcf18858bf":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612bca565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612be5565b610597565b604051610217929190612c0f565b61025461024f366004612c49565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612cc4565b610632565b005b61029461028f366004612d85565b610959565b604051610217929190612e25565b6102b56102b0366004612e4a565b610c15565b6040516102179190612e76565b61020d6102d0366004612bca565b60ff1660009081526003602052604090205490565b61020d6102f3366004612e4a565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612e4a565b610cb4565b61020d670de0b6b3a764000081565b61027f610345366004612f7f565b610ccd565b61035d610358366004612d85565b6110e3565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc36600461303b565b611240565b604051610217919061308d565b61039c6103fc366004612be5565b6114f5565b61041461040f3660046130cb565b61152d565b60405161021791906130fe565b61043461042f366004612be5565b6115c5565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612be5565b61163f565b61027f61048236600461314a565b6116ce565b61027f610495366004613174565b6117c7565b6102546104a8366004612bca565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004613240565b6118e9565b6102546104e436600461328d565b6119dd565b6102546104f7366004612bca565b611a5b565b61050f61050a3660046132c9565b611aae565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610254610559366004613305565b611ac3565b61041461056c366004612e4a565b611b58565b61025461057f3660046132c9565b611c41565b61027f610592366004613347565b611ca2565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b8152600401610611906133a4565b60405180910390fd5b60006106268585611e0d565b509250505b5092915050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906133f5565b6001600160a01b0316336001600160a01b0316146106e45760405162461bcd60e51b815260040161061190613412565b846107008160ff16600090815260016020526040902054151590565b61071c5760405162461bcd60e51b8152600401610611906133a4565b8380610792576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108075760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561094e578585828181106108355761083561348e565b905060200201602081019061084a91906134a4565b8289898481811061085d5761085d61348e565b90506020020135815481106108745761087461348e565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108dd576108dd61348e565b90506020020135815481106108f4576108f461348e565b6000918252602090912001546001600160a01b031688888581811061091b5761091b61348e565b905060200201602081019061093091906134a4565b60405161093e929190612c0f565b60405180910390a260010161081b565b505050505050505050565b606080336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146109a45760405162461bcd60e51b8152600401610611906134bf565b6000836001600160401b038111156109be576109be612eee565b6040519080825280602002602001820160405280156109e7578160200160208202803683370190505b5090506000846001600160401b03811115610a0457610a04612eee565b604051908082528060200260200182016040528015610a2d578160200160208202803683370190505b50905060005b85811015610c07576000878783818110610a4f57610a4f61348e565b919091013560f81c60008181526001602052604090205490925015159050610ad75760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610ae4838d611e0d565b9150915080610b815760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b8e8c8585612001565b905082878681518110610ba357610ba361348e565b60200260200101906001600160601b031690816001600160601b031681525050610bcd8482612280565b868681518110610bdf57610bdf61348e565b6001600160601b0390921660209283029190910190910152505060019092019150610a339050565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610ca7576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c4e565b5050505090505b92915050565b600080610cc18484611b58565b60400151949350505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f91906133f5565b6001600160a01b0316336001600160a01b031614610d7f5760405162461bcd60e51b815260040161061190613412565b81610d9b8160ff16600090815260016020526040902054151590565b610db75760405162461bcd60e51b8152600401610611906133a4565b815180610e2c5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110da578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e8b57610e8b61348e565b602002602001015181548110610ea357610ea361348e565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f0157610f0161348e565b602002602001015181548110610f1957610f1961348e565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f5990600190613547565b81548110610f6957610f6961348e565b9060005260206000200183878381518110610f8657610f8661348e565b602002602001015181548110610f9e57610f9e61348e565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610ff157610ff161355a565b6000828152602081208201600019908101919091550190558154829061101990600190613547565b815481106110295761102961348e565b9060005260206000200160009054906101000a90046001600160a01b03168287838151811061105a5761105a61348e565b6020026020010151815481106110725761107261348e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110b0576110b061355a565b600082815260209020810160001990810180546001600160a01b0319169055019055600101610e4b565b50505050505050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461112d5760405162461bcd60e51b8152600401610611906134bf565b6000805b8381101561123657600085858381811061114d5761114d61348e565b919091013560f81c600081815260016020526040902054909250151590506111dd5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b6000806111ea838b611e0d565b915091508061120c5760009150600160ff84161b6001600160c01b0386161794505b60006112198a8585612001565b90506112258482612280565b505060019093019250611131915050565b5095945050505050565b60606000826001600160401b0381111561125c5761125c612eee565b604051908082528060200260200182016040528015611285578160200160208202803683370190505b50905060005b838110156114ea5760008585838181106112a7576112a761348e565b919091013560f81c600081815260016020526040902054909250151590506113465760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061136f5761136f61348e565b60009182526020909120015463ffffffff16111561141b5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156114df5760ff8316600090815260016020819052604090912063ffffffff8b169161145f8486613547565b6114699190613547565b815481106114795761147961348e565b60009182526020909120015463ffffffff16116114d757600161149c8284613547565b6114a69190613547565b8585815181106114b8576114b861348e565b602002602001019063ffffffff16908163ffffffff16815250506114df565b600101611430565b50505060010161128b565b5090505b9392505050565b6004602052816000526040600020818154811061151157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115725761157261348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115fd576115fd61348e565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600190529190912080548390811061167c5761167c61348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175091906133f5565b6001600160a01b0316336001600160a01b0316146117805760405162461bcd60e51b815260040161061190613412565b8161179c8160ff16600090815260016020526040902054151590565b6117b85760405162461bcd60e51b8152600401610611906133a4565b6117c283836123f7565b505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461180f5760405162461bcd60e51b8152600401610611906134bf565b60005b818110156118e357600083838381811061182e5761182e61348e565b919091013560f81c600081815260016020526040902054909250151590506118be5760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118cc86836000612001565b90506118d88282612280565b505050600101611812565b50505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b91906133f5565b6001600160a01b0316336001600160a01b03161461199b5760405162461bcd60e51b815260040161061190613412565b816119b78160ff16600090815260016020526040902054151590565b6119d35760405162461bcd60e51b8152600401610611906133a4565b6117c28383612460565b60ff83166000908152600160205260408120805482919084908110611a0457611a0461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cc1818561288e565b60ff81166000908152600160208190526040822080549091611a7c91613547565b81548110611a8c57611a8c61348e565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611abb848484612a08565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611af457611af461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b4b818661288e565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611bb5579150610cae9050565b600085815260026020908152604080832060ff881684529091529020611bdc600184613547565b81548110611bec57611bec61348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cae915050565b600083815260026020908152604080832060ff861684529091528120611c68858585612a08565b63ffffffff1681548110611c7e57611c7e61348e565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614611cea5760405162461bcd60e51b8152600401610611906134bf565b60ff831660009081526001602052604090205415611d685760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611d728382612460565b611d7c83836123f7565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e2c8660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91692639004134792611ea1928c9201613570565b600060405180830381865afa158015611ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee691908101906135d1565b905060005b83811015611fcd5760ff89166000908152600360205260409020805482908110611f1757611f1761348e565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f6557611f6561348e565b60200260200101511115611fc557670de0b6b3a764000083602001516001600160601b0316838381518110611f9c57611f9c61348e565b6020026020010151611fae9190613661565b611fb89190613678565b611fc2908661369a565b94505b600101611eeb565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908082036120c757600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612226565b600086815260026020908152604080832060ff8916845290915281206120ee600184613547565b815481106120fe576120fe61348e565b600091825260209091200180546001600160601b03600160401b909104811694509091508516830361213657600093505050506114ee565b805463ffffffff43811691160361216e578054600160401b600160a01b031916600160401b6001600160601b03871602178155612224565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122768285612b6e565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122a49084613547565b815481106122b4576122b461348e565b906000526020600020019050836000036122e25754600160401b90046001600160601b03169150610cae9050565b805460009061230190600160401b90046001600160601b031686612b86565b825490915063ffffffff43811691160361233c578154600160401b600160a01b031916600160401b6001600160601b038316021782556123ee565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124c55760405162461bcd60e51b8152602060048201526038602482015260008051602061374183398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906124e883836136ba565b11156125585760405162461bcd60e51b8152602060048201526045602482015260008051602061374183398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128875760005b61257082846136ba565b811015612646578482815181106125895761258961348e565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125c8576125c861348e565b6000918252602090912001546001600160a01b03160361263e5760405162461bcd60e51b815260206004820152603d602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b600101612566565b50600084828151811061265b5761265b61348e565b6020026020010151602001516001600160601b0316116126e05760405162461bcd60e51b8152602060048201526046602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff8516600090815260036020526040902084518590839081106127065761270661348e565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061276b5761276b61348e565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404908690849081106127e2576127e261348e565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061283f5761283f61348e565b60200260200101516000015186848151811061285d5761285d61348e565b602002602001015160200151604051612877929190612c0f565b60405180910390a260010161255b565b5050505050565b816000015163ffffffff168163ffffffff1610156129335760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129595750816020015163ffffffff168163ffffffff16105b612a045760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612aa957600086815260026020908152604080832060ff89168452909152902063ffffffff851690612a5c600184613547565b81548110612a6c57612a6c61348e565b60009182526020909120015463ffffffff1611612a9757612a8e600182613547565b925050506114ee565b80612aa1816136cd565b915050612a27565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006114ee6001600160601b038085169084166136e4565b600080821215612baa57612b9982613704565b612ba39084613720565b9050610cae565b612ba3828461369a565b803560ff81168114612bc557600080fd5b919050565b600060208284031215612bdc57600080fd5b6114ee82612bb4565b60008060408385031215612bf857600080fd5b612c0183612bb4565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612c4657600080fd5b50565b60008060408385031215612c5c57600080fd5b612c6583612bb4565b91506020830135612c7581612c31565b809150509250929050565b60008083601f840112612c9257600080fd5b5081356001600160401b03811115612ca957600080fd5b6020830191508360208260051b8501011115611ffa57600080fd5b600080600080600060608688031215612cdc57600080fd5b612ce586612bb4565b945060208601356001600160401b0380821115612d0157600080fd5b612d0d89838a01612c80565b90965094506040880135915080821115612d2657600080fd5b50612d3388828901612c80565b969995985093965092949392505050565b60008083601f840112612d5657600080fd5b5081356001600160401b03811115612d6d57600080fd5b602083019150836020828501011115611ffa57600080fd5b60008060008060608587031215612d9b57600080fd5b8435612da681612c31565b93506020850135925060408501356001600160401b03811115612dc857600080fd5b612dd487828801612d44565b95989497509550505050565b60008151808452602080850194506020840160005b83811015612e1a5781516001600160601b031687529582019590820190600101612df5565b509495945050505050565b604081526000612e386040830185612de0565b82810360208401526123ee8185612de0565b60008060408385031215612e5d57600080fd5b82359150612e6d60208401612bb4565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257612ecf83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612e92565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2657612f26612eee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612eee565b604052919050565b60006001600160401b03821115612f7557612f75612eee565b5060051b60200190565b60008060408385031215612f9257600080fd5b612f9b83612bb4565b91506020808401356001600160401b03811115612fb757600080fd5b8401601f81018613612fc857600080fd5b8035612fdb612fd682612f5c565b612f2c565b81815260059190911b82018301908381019088831115612ffa57600080fd5b928401925b8284101561301857833582529284019290840190612fff565b80955050505050509250929050565b803563ffffffff81168114612bc557600080fd5b60008060006040848603121561305057600080fd5b61305984613027565b925060208401356001600160401b0381111561307457600080fd5b61308086828701612d44565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257835163ffffffff16835292840192918401916001016130a9565b6000806000606084860312156130e057600080fd5b6130e984612bb4565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cae565b80356001600160601b0381168114612bc557600080fd5b6000806040838503121561315d57600080fd5b61316683612bb4565b9150612e6d60208401613133565b60008060006040848603121561318957600080fd5b8335925060208401356001600160401b0381111561307457600080fd5b600082601f8301126131b757600080fd5b813560206131c7612fd683612f5c565b82815260069290921b840181019181810190868411156131e657600080fd5b8286015b8481101561323557604081890312156132035760008081fd5b61320b612f04565b813561321681612c31565b8152613223828601613133565b818601528352918301916040016131ea565b509695505050505050565b6000806040838503121561325357600080fd5b61325c83612bb4565b915060208301356001600160401b0381111561327757600080fd5b613283858286016131a6565b9150509250929050565b6000806000606084860312156132a257600080fd5b6132ab84612bb4565b92506132b960208501613027565b9150604084013590509250925092565b6000806000606084860312156132de57600080fd5b833592506132ee60208501612bb4565b91506132fc60408501613027565b90509250925092565b6000806000806080858703121561331b57600080fd5b61332485612bb4565b935061333260208601613027565b93969395505050506040820135916060013590565b60008060006060848603121561335c57600080fd5b61336584612bb4565b925061337360208501613133565b915060408401356001600160401b0381111561338e57600080fd5b61339a868287016131a6565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561340757600080fd5b81516114ee81612c31565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156134b657600080fd5b6114ee82613133565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cae57610cae613531565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b038086168452602060406020860152828654808552606087019150876000526020600020945060005b818110156135c35785548516835260019586019592840192016135a5565b509098975050505050505050565b600060208083850312156135e457600080fd5b82516001600160401b038111156135fa57600080fd5b8301601f8101851361360b57600080fd5b8051613619612fd682612f5c565b81815260059190911b8201830190838101908783111561363857600080fd5b928401925b828410156136565783518252928401929084019061363d565b979650505050505050565b8082028115828204841417610cae57610cae613531565b60008261369557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160601b0381811683821601908082111561062b5761062b613531565b80820180821115610cae57610cae613531565b6000816136dc576136dc613531565b506000190190565b818103600083128015838313168383128216171561062b5761062b613531565b6000600160ff1b820161371957613719613531565b5060000390565b6001600160601b0382811682821603908082111561062b5761062b61353156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122086a228217be3aa4346ddc514699a0ca7893ec8b64cbf2023e3b1369fe2efcf1164736f6c63430008180033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610336565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead81600081518110610204576102046103fb565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b805161033181610226565b919050565b6000602080838503121561034957600080fd5b825167ffffffffffffffff8082111561036157600080fd5b818501915085601f83011261037557600080fd5b81518181111561038757610387610310565b8060051b604051601f19603f830116810181811085821117156103ac576103ac610310565b6040529182528482019250838101850191888311156103ca57600080fd5b938501935b828510156103ef576103e085610326565b845293850193928501926103cf565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d2a1dc3d5b3de166be22fce7e789ceac2302c613380087624652f3f48de1ed0864736f6c63430008180033","storage":{}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000097":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063bd90df701461003b578063fa534dc01461006b575b600080fd5b60005461004e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100793660046101b7565b61008e565b6040519015158152602001610062565b60008054604051829182916001600160a01b03909116906100bf908c908c908c908c908c908c908c906024016102ed565b60408051601f198184030181529181526020820180516001600160e01b03166303e94d3760e61b179052516100f4919061035c565b600060405180830381855afa9150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b50915091508161017f5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b604482015260640160405180910390fd5b808060200190518101906101939190610378565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a0312156101d257600080fd5b87359650602088013595506040880135945060608801356bffffffffffffffffffffffff198116811461020457600080fd5b93506080880135925060a088013567ffffffffffffffff8082111561022857600080fd5b818a0191508a601f83011261023c57600080fd5b81358181111561024e5761024e6101a1565b604051601f8201601f19908116603f01168101908382118183101715610276576102766101a1565b816040528281528d602084870101111561028f57600080fd5b82602086016020830137600060208483010152809650505050505060c0880135905092959891949750929550565b60005b838110156102d85781810151838201526020016102c0565b838111156102e7576000848401525b50505050565b8781528660208201528560408201526bffffffffffffffffffffffff198516606082015283608082015260e060a0820152600083518060e084015261010061033b82828601602089016102bd565b60c0840194909452601f01601f191691909101909101979650505050505050565b6000825161036e8184602087016102bd565b9190910192915050565b60006020828403121561038a57600080fd5b8151801515811461039a57600080fd5b939250505056fea2646970667358221220049cb1a9d093bf908d78fadd5abeac5e2ffa713794e5ee79f3d1ff78d06ce6c564736f6c634300080c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c"}},"0x36c02da8a0983159322a80ffe9f24b1acff8b570":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061035c5760003560e01c80635b0b829f116101d35780639e9923c211610104578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610897578063f2fde38b1461093a578063fabc1cbc1461094d578063fd39105a1461096057600080fd5b8063d72d8dd614610869578063d75b4c8814610871578063dd8283f31461088457600080fd5b8063a96f783e116100de578063a96f783e14610806578063c391425e1461080f578063ca0de8821461082f578063ca4f2d971461085657600080fd5b80639e9923c2146107a55780639feab859146107cc578063a50857bf146107f357600080fd5b8063715018a611610171578063886f11951161014b578063886f1195146107525780638da5cb5b1461076b5780639aa1653d146107735780639b5d177b1461079257600080fd5b8063715018a61461072457806384ca52131461072c578063871ef0491461073f57600080fd5b80636347c900116101ad5780636347c900146106c457806368304835146106d75780636c708904146106fe5780636e3b17db1461071157600080fd5b80635b0b829f146106825780635c975abb146106955780635df459461461069d57600080fd5b8063249a0c42116102ad5780633af32abf1161024b57806353abfad41161022557806353abfad4146106285780635865c60c1461063b578063595c6a671461065b5780635ac86ab71461066357600080fd5b80633af32abf146105c95780633c2a7f4c146105f55780635140a5481461061557600080fd5b8063296bb06411610287578063296bb0641461056957806329d1e0c31461057c5780632cdd1e861461058f5780633998fdd3146105a257600080fd5b8063249a0c421461052357806328f61b311461054357806329092d0e1461055657600080fd5b80630d3f21341161031a57806313542a4e116102f457806313542a4e1461046b578063136439dd146104945780631478851f146104a75780631eb812da146104da57600080fd5b80630d3f21341461042557806310d67a2f14610438578063125e05841461044b57600080fd5b8062cf2ab51461036157806303fd34921461037657806304ec6351146103a9578063054310e6146103d45780630a3b0a4f146103ff5780630cf4b76714610412575b600080fd5b61037461036f366004614613565b61099c565b005b610396610384366004614654565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6103bc6103b736600461467f565b610aaa565b6040516001600160c01b0390911681526020016103a0565b609d546103e7906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b61037461040d3660046146dc565b610bba565b6103746104203660046147e0565b610c0e565b610374610433366004614654565b610cb8565b6103746104463660046146dc565b610cc5565b6103966104593660046146dc565b609f6020526000908152604090205481565b6103966104793660046146dc565b6001600160a01b031660009081526099602052604090205490565b6103746104a2366004614654565b610d78565b6104ca6104b5366004614654565b609a6020526000908152604090205460ff1681565b60405190151581526020016103a0565b6104ed6104e8366004614830565b610eb5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016103a0565b610396610531366004614863565b609b6020526000908152604090205481565b609e546103e7906001600160a01b031681565b6103746105643660046146dc565b610f46565b6103e7610577366004614654565b610f97565b61037461058a3660046146dc565b611023565b61037461059d3660046146dc565b611034565b6103e77f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b6104ca6105d73660046146dc565b6001600160a01b0316600090815260c8602052604090205460ff1690565b6106086106033660046146dc565b611045565b6040516103a0919061487e565b6103746106233660046148d6565b6110c4565b610374610636366004614964565b61149a565b61064e6106493660046146dc565b611560565b6040516103a09190614a3a565b6103746115d4565b6104ca610671366004614863565b6001805460ff9092161b9081161490565b610374610690366004614abf565b6116a0565b600154610396565b6103e77f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b6103e76106d2366004614654565b6116fa565b6103e77f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b61037461070c366004614964565b611724565b61037461071f366004614af3565b6117e6565b61037461193b565b61039661073a366004614b87565b61194f565b6103bc61074d366004614654565b611999565b6000546103e7906201000090046001600160a01b031681565b6103e76119a4565b6096546107809060ff1681565b60405160ff90911681526020016103a0565b6103746107a0366004614d20565b6119bd565b6103e77f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377881565b6103967f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b610374610801366004614e19565b611cd6565b61039660a05481565b61082261081d366004614ec1565b611e3b565b6040516103a09190614f66565b6103967f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b610374610864366004614fb0565b611eea565b609c54610396565b61037461087f366004615096565b611f50565b610374610892366004615253565b611f63565b6109066108a5366004614863565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016103a0565b6103746109483660046146dc565b612223565b61037461095b366004614654565b612299565b61098f61096e3660046146dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103a09190615327565b6001546002906004908116036109cd5760405162461bcd60e51b81526004016109c490615335565b60405180910390fd5b60005b82811015610aa45760008484838181106109ec576109ec61536c565b9050602002016020810190610a0191906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610a4c57610a4c614a02565b6002811115610a5d57610a5d614a02565b90525080519091506000610a70826123f5565b90506000610a86826001600160c01b0316612460565b9050610a9385858361252c565b5050600190930192506109d0915050565b50505050565b6000838152609860205260408120805482919084908110610acd57610acd61536c565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610b535760405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b60448201526064016109c4565b602081015163ffffffff161580610b795750806020015163ffffffff168463ffffffff16105b610bae5760405162461bcd60e51b81526004016109c49060208082526004908201526331371e1960e11b604082015260600190565b60400151949350505050565b610bc2612619565b6001600160a01b038116600081815260c86020526040808220805460ff19166001179055517f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9190a250565b60013360009081526099602052604090206001015460ff166002811115610c3757610c37614a02565b14610c6c5760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610cad9084906153c8565b60405180910390a250565b610cc0612619565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c91906153db565b6001600160a01b0316336001600160a01b031614610d6c5760405162461bcd60e51b81526004016109c4906153f8565b610d7581612678565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190615442565b610e055760405162461bcd60e51b81526004016109c490615464565b60015481811614610e7e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610cad565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ef257610ef261536c565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b610f4e612619565b6001600160a01b038116600081815260c86020526040808220805460ff19169055517f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9190a250565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316906347b314e890602401602060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4091906153db565b61102b612619565b610d758161277d565b61103c612619565b610d75816127e6565b6040805180820190915260008082526020820152610f406110bf7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016110a49291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061284f565b61289d565b6001546002906004908116036110ec5760405162461bcd60e51b81526004016109c490615335565b600061113484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905084831461116e5760405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b60448201526064016109c4565b60005b8381101561149157600085858381811061118d5761118d61536c565b919091013560f81c915036905060008989858181106111ae576111ae61536c565b90506020028101906111c091906154ac565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03169063f341092290602401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154f5565b63ffffffff16811461128f5760405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b60448201526064016109c4565b6000805b828110156114365760008484838181106112af576112af61536c565b90506020020160208101906112c491906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561130f5761130f614a02565b600281111561132057611320614a02565b90525080519091506000611333826123f5565b905060016001600160c01b03821660ff8b161c8116146113805760405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b60448201526064016109c4565b856001600160a01b0316846001600160a01b0316116113cb5760405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b60448201526064016109c4565b5061142983838f8f8d908e60016113e29190615528565b926113ef9392919061553b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252c92505050565b5090925050600101611293565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611171565b50505050505050565b6114a2612619565b60005b815181101561155c57600060c860008484815181106114c6576114c661536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106115175761151761536c565b60200260200101516001600160a01b03167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc60405160405180910390a26001016114a5565b5050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115ba576115ba614a02565b60028111156115cb576115cb614a02565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116459190615442565b6116615760405162461bcd60e51b81526004016109c490615464565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a8612619565b609654829060ff908116908216106116eb5760405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b60448201526064016109c4565b6116f583836129bd565b505050565b609c818154811061170a57600080fd5b6000918252602090912001546001600160a01b0316905081565b61172c612619565b60005b815181101561155c57600160c860008484815181106117505761175061536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106117a1576117a161536c565b60200260200101516001600160a01b03167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f60405160405180910390a260010161172f565b609e546001600160a01b0316331461182d5760405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b60448201526064016109c4565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161189a9187908790819084018382808284376000920191909152505060965460ff16915061292c9050565b905060006118a7836123f5565b905060018085015460ff1660028111156118c3576118c3614a02565b1480156118d857506001600160c01b03821615155b80156118f657506118f66001600160c01b0383811690831681161490565b15611491576114918787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611943612619565b61194d6000612df2565b565b600061198f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a87878787876040516020016110a496959493929190615565565b9695505050505050565b6000610f40826123f5565b60006119b86064546001600160a01b031690565b905090565b60018054600091908116036119e45760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611a355760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b838914611a6d5760405162461bcd60e51b81526004016109c49060208082526004908201526338a632b760e11b604082015260600190565b6000611a793388612e44565b9050611ad933828888808060200260200160405190810160405280939291908181526020016000905b82821015611ace57611abf604083028601368190038101906155ed565b81526020019060010190611aa2565b505050505087612f79565b6000611b2033838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b90506000609760008e8e6000818110611b3b57611b3b61536c565b919091013560f81c825250602080820192909252604090810160009081208251606081018452905463ffffffff811680835261ffff600160201b8304811696840196909652600160301b909104909416928101929092528451805192945091611ba657611ba661536c565b602002602001015163ffffffff161115611cc757611c4b8d8d6000818110611bd057611bd061536c565b9050013560f81c60f81b60f81c8360400151600081518110611bf457611bf461536c565b6020026020010151338560200151600081518110611c1457611c1461536c565b60200260200101518c8c6000818110611c2f57611c2f61536c565b905060400201803603810190611c4591906155ed565b86613519565b611cc788886000818110611c6157611c6161536c565b9050604002016020016020810190611c7991906146dc565b8e8e600090600192611c8d9392919061553b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b50505050505050505050505050565b6001805460009190811603611cfd5760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611d4e5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b6000611d5a3385612e44565b90506000611da333838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b51600080805260976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c754825192935063ffffffff1691839190611deb57611deb61536c565b602002602001015163ffffffff161115611e305760405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b60448201526064016109c4565b505050505050505050565b6060600082516001600160401b03811115611e5857611e586146f9565b604051908082528060200260200182016040528015611e81578160200160208202803683370190505b50905060005b8351811015611ee257611eb385858381518110611ea657611ea661536c565b60200260200101516136e8565b828281518110611ec557611ec561536c565b63ffffffff90921660209283029190910190910152600101611e87565b509392505050565b60018054600290811603611f105760405162461bcd60e51b81526004016109c490615335565b6116f53384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611f58612619565b6116f58383836137a1565b600054610100900460ff1615808015611f835750600054600160ff909116105b80611f9d5750303b158015611f9d575060005460ff166001145b6120005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109c4565b6000805460ff191660011790558015612023576000805461ff0019166101001790555b82518451148015612035575081518351145b6120665760405162461bcd60e51b8152602060048201526002602482015261494560f01b60448201526064016109c4565b61206f89612df2565b6120798686613983565b6120828861277d565b61208b876127e6565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81166001600160a01b03199283161790925585548085018755850180547f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49841690831617905585549384019095559190920180547f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377890921691909316179091555b84518110156121d2576121ca8582815181106121895761218961536c565b60200260200101518583815181106121a3576121a361536c565b60200260200101518584815181106121bd576121bd61536c565b60200260200101516137a1565b60010161216b565b508015611e30576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61222b612619565b6001600160a01b0381166122905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c4565b610d7581612df2565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231091906153db565b6001600160a01b0316336001600160a01b0316146123405760405162461bcd60e51b81526004016109c4906153f8565b6001541981196001541916146123be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cad565b6000818152609860205260408120548082036124145750600092915050565b600083815260986020526040902061242d600183615609565b8154811061243d5761243d61536c565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061246e84613a6f565b61ffff166001600160401b03811115612489576124896146f9565b6040519080825280601f01601f1916602001820160405280156124b3576020820181803683370190505b5090506000805b8251821080156124cb575061010081105b15612522576001811b935085841615612512578060f81b8383815181106124f4576124f461536c565b60200101906001600160f81b031916908160001a9053508160010191505b61251b8161561c565b90506124ba565b5090949350505050565b60018260200151600281111561254457612544614a02565b1461254e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16906366acfefe906125a390889086908890600401615635565b6020604051808303816000875af11580156125c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e69190615665565b90506001600160c01b03811615612612576126128561260d836001600160c01b0316612460565b612a6a565b5050505050565b336126226119a4565b6001600160a01b03161461194d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c4565b6001600160a01b0381166127065760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016109c4565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f4061285c613a9a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806128cd600080516020615b01833981519152866156a4565b90505b6128d981613bc1565b9093509150600080516020615b018339815191528283098303612912576040805180820190915290815260208101919091529392505050565b600080516020615b018339815191526001820890506128d0565b60008061293884613c43565b9050808360ff166001901b116129b65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016109c4565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612a9e57612a9e614a02565b14612ad35760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b609654600090612ae790859060ff1661292c565b90506000612af4836123f5565b90506001600160c01b038216612b355760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b612b4c6001600160c01b0383811690831681161490565b612b815760405162461bcd60e51b81526004016109c49060208082526004908201526310a9bab160e11b604082015260600190565b6001600160c01b0382811619821616612b9a8482613dcb565b6001600160c01b038116612c695760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169063a364f4da90602401600060405180830381600087803b158015612c1a57600080fd5b505af1158015612c2e573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49169063f4e24fe590612cb7908a908a906004016156b8565b600060405180830381600087803b158015612cd157600080fd5b505af1158015612ce5573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16925063bd29b8cd9150612d379087908a906004016156dc565b600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377816925063bd29b8cd9150612db79087908a906004016156dc565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49909116906313542a4e90602401602060405180830381865afa158015612eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed391906156f5565b90506000819003610f40577f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031663bf79ce588484612f1887611045565b6040518463ffffffff1660e01b8152600401612f369392919061570e565b6020604051808303816000875af1158015612f55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b691906156f5565b6020808201516000908152609a909152604090205460ff1615612fc75760405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b60448201526064016109c4565b42816040015110156130035760405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b60448201526064016109c4565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610aa4926001600160a01b039092169161304e918891889188919061194f565b8351613f8c565b61307960405180606001604052806060815260200160608152602001606081525090565b60006130c186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905060006130ce886123f5565b90506001600160c01b03821661310f5760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b8082166001600160c01b0316156131515760405162461bcd60e51b81526004016109c49060208082526004908201526308509a5d60e21b604082015260600190565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b03838116908516179142916131899190615528565b106131be5760405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b60448201526064016109c4565b6131c88982613dcb565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131f891906153c8565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561323257613232614a02565b1461334b576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561328d5761328d614a02565b021790555050604051639926ee7d60e01b81526001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169150639926ee7d906132e2908d90899060040161577e565b600060405180830381600087803b1580156132fc57600080fd5b505af1158015613310573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc491690633fb279529061339b908d908c908c906004016157f2565b600060405180830381600087803b1580156133b557600080fd5b505af11580156133c9573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1692506325504777915061341f908d908d908d908d90600401615817565b6000604051808303816000875af115801561343e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346691908101906158a7565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778169062bff04d906134c3908c908c908c9060040161590a565b6000604051808303816000875af11580156134e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350a9190810190615924565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152600360248201526206368360ec1b60448201526064016109c4565b8760ff16846000015160ff16146135b15760405162461bcd60e51b815260206004820152600360248201526263683160e81b60448201526064016109c4565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690635401ed2790604401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364691906159b2565b90506136528185614146565b6001600160601b0316866001600160601b0316116136985760405162461bcd60e51b815260206004820152600360248201526231b41960e91b60448201526064016109c4565b6136a2888561416a565b6001600160601b0316816001600160601b031610611e305760405162461bcd60e51b815260206004820152600360248201526263683360e81b60448201526064016109c4565b600081815260986020526040812054815b8181101561377057600161370d8284615609565b6137179190615609565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061374a5761374a61536c565b60009182526020909120015463ffffffff1611613768575050610f40565b6001016136f9565b5060405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b60448201526064016109c4565b60965460ff1660c081106137e05760405162461bcd60e51b81526004016109c4906020808252600490820152630e29ac2f60e31b604082015260600190565b6137eb8160016159cf565b6096805460ff191660ff929092169190911790558061380a81866129bd565b60405160016296b58960e01b031981526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e169063ff694a779061385d908490889088906004016159e8565b600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561396f57600080fd5b505af1158015611e30573d6000803e3d6000fd5b6000546201000090046001600160a01b03161580156139aa57506001600160a01b03821615155b613a2c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261155c82612678565b6000805b8215610f4057613a84600184615609565b9092169180613a9281615a64565b915050613a73565b6000306001600160a01b037f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57016148015613af357507f0000000000000000000000000000000000000000000000000000000000007a6946145b15613b1d57507fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d11828401527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615b018339815191526003600080516020615b0183398151915286600080516020615b01833981519152888909090890506000613c37827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615b01833981519152614184565b91959194509092505050565b600061010082511115613ccc5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016109c4565b8151600003613cdd57506000919050565b60008083600081518110613cf357613cf361536c565b0160200151600160f89190911c81901b92505b8451811015613dc257848181518110613d2157613d2161536c565b0160200151600160f89190911c1b9150828211613db65760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016109c4565b91811791600101613d06565b50909392505050565b60008281526098602052604081205490819003613e73576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120613e8c600184615609565b81548110613e9c57613e9c61536c565b6000918252602090912001805490915063ffffffff438116911603613ede5780546001600160401b0316600160401b6001600160c01b03851602178155610aa4565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156140a657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613fcc90869086906004016156dc565b602060405180830381865afa158015613fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400d9190615a85565b6001600160e01b031916146116f55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016109c4565b826001600160a01b03166140ba838361422d565b6001600160a01b0316146116f55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016109c4565b6020810151600090612710906141609061ffff1685615aaf565b6129b69190615ada565b6040810151600090612710906141609061ffff1685615aaf565b60008061418f614593565b6141976145b1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806141d457fe5b50826142225760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016109c4565b505195945050505050565b600080600061423c8585614249565b91509150611ee2816142b7565b600080825160410361427f5760208301516040840151606085015160001a6142738782858561446d565b945094505050506142b0565b82516040036142a8576020830151604084015161429d86838361455a565b9350935050506142b0565b506000905060025b9250929050565b60008160048111156142cb576142cb614a02565b036142d35750565b60018160048111156142e7576142e7614a02565b036143345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109c4565b600281600481111561434857614348614a02565b036143955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109c4565b60038160048111156143a9576143a9614a02565b036144015760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109c4565b600481600481111561441557614415614a02565b03610d755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109c4565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144a45750600090506003614551565b8460ff16601b141580156144bc57508460ff16601c14155b156144cd5750600090506004614551565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614521573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661454a57600060019250925050614551565b9150600090505b94509492505050565b6000806001600160ff1b0383168161457760ff86901c601b615528565b90506145858782888561446d565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126145e157600080fd5b5081356001600160401b038111156145f857600080fd5b6020830191508360208260051b85010111156142b057600080fd5b6000806020838503121561462657600080fd5b82356001600160401b0381111561463c57600080fd5b614648858286016145cf565b90969095509350505050565b60006020828403121561466657600080fd5b5035919050565b63ffffffff81168114610d7557600080fd5b60008060006060848603121561469457600080fd5b8335925060208401356146a68161466d565b929592945050506040919091013590565b6001600160a01b0381168114610d7557600080fd5b80356146d7816146b7565b919050565b6000602082840312156146ee57600080fd5b81356129b6816146b7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614731576147316146f9565b60405290565b604080519081016001600160401b0381118282101715614731576147316146f9565b604051601f8201601f191681016001600160401b0381118282101715614781576147816146f9565b604052919050565b60006001600160401b038311156147a2576147a26146f9565b6147b5601f8401601f1916602001614759565b90508281528383830111156147c957600080fd5b828260208301376000602084830101529392505050565b6000602082840312156147f257600080fd5b81356001600160401b0381111561480857600080fd5b8201601f8101841361481957600080fd5b61482884823560208401614789565b949350505050565b6000806040838503121561484357600080fd5b50508035926020909101359150565b803560ff811681146146d757600080fd5b60006020828403121561487557600080fd5b6129b682614852565b815181526020808301519082015260408101610f40565b60008083601f8401126148a757600080fd5b5081356001600160401b038111156148be57600080fd5b6020830191508360208285010111156142b057600080fd5b600080600080604085870312156148ec57600080fd5b84356001600160401b038082111561490357600080fd5b61490f888389016145cf565b9096509450602087013591508082111561492857600080fd5b5061493587828801614895565b95989497509550505050565b60006001600160401b0382111561495a5761495a6146f9565b5060051b60200190565b6000602080838503121561497757600080fd5b82356001600160401b0381111561498d57600080fd5b8301601f8101851361499e57600080fd5b80356149b16149ac82614941565b614759565b81815260059190911b820183019083810190878311156149d057600080fd5b928401925b828410156149f75783356149e8816146b7565b825292840192908401906149d5565b979650505050505050565b634e487b7160e01b600052602160045260246000fd5b60038110614a3657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614a5590840182614a18565b5092915050565b803561ffff811681146146d757600080fd5b600060608284031215614a8057600080fd5b614a8861470f565b90508135614a958161466d565b8152614aa360208301614a5c565b6020820152614ab460408301614a5c565b604082015292915050565b60008060808385031215614ad257600080fd5b614adb83614852565b9150614aea8460208501614a6e565b90509250929050565b600080600060408486031215614b0857600080fd5b8335614b13816146b7565b925060208401356001600160401b03811115614b2e57600080fd5b614b3a86828701614895565b9497909650939450505050565b600060408284031215614b5957600080fd5b614b61614737565b9050614b6c82614852565b81526020820135614b7c816146b7565b602082015292915050565b600080600080600060a08688031215614b9f57600080fd5b8535614baa816146b7565b945060208681013594506040808801356001600160401b03811115614bce57600080fd5b8801601f81018a13614bdf57600080fd5b8035614bed6149ac82614941565b8082825260208201915060208360061b85010192508c831115614c0f57600080fd5b6020840193505b82841015614c3757614c288d85614b47565b82529284019290850190614c16565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614c6757600080fd5b50919050565b60008083601f840112614c7f57600080fd5b5081356001600160401b03811115614c9657600080fd5b6020830191508360208260061b85010111156142b057600080fd5b600060608284031215614cc357600080fd5b614ccb61470f565b905081356001600160401b03811115614ce357600080fd5b8201601f81018413614cf457600080fd5b614d0384823560208401614789565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614d3f57600080fd5b89356001600160401b0380821115614d5657600080fd5b614d628d838e01614895565b909b50995060208c0135915080821115614d7b57600080fd5b614d878d838e01614895565b9099509750879150614d9c8d60408e01614c54565b96506101408c0135915080821115614db357600080fd5b614dbf8d838e01614c6d565b90965094506101608c0135915080821115614dd957600080fd5b614de58d838e01614cb1565b93506101808c0135915080821115614dfc57600080fd5b50614e098c828d01614cb1565b9150509295985092959850929598565b6000806000806000806101608789031215614e3357600080fd5b86356001600160401b0380821115614e4a57600080fd5b614e568a838b01614895565b90985096506020890135915080821115614e6f57600080fd5b614e7b8a838b01614895565b9096509450849150614e908a60408b01614c54565b9350610140890135915080821115614ea757600080fd5b50614eb489828a01614cb1565b9150509295509295509295565b60008060408385031215614ed457600080fd5b8235614edf8161466d565b91506020838101356001600160401b03811115614efb57600080fd5b8401601f81018613614f0c57600080fd5b8035614f1a6149ac82614941565b81815260059190911b82018301908381019088831115614f3957600080fd5b928401925b82841015614f5757833582529284019290840190614f3e565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614fa457835163ffffffff1683529284019291840191600101614f82565b50909695505050505050565b60008060208385031215614fc357600080fd5b82356001600160401b03811115614fd957600080fd5b61464885828601614895565b6001600160601b0381168114610d7557600080fd5b600082601f83011261500b57600080fd5b8135602061501b6149ac83614941565b82815260069290921b8401810191818101908684111561503a57600080fd5b8286015b8481101561508b57604081890312156150575760008081fd5b61505f614737565b813561506a816146b7565b81528185013561507981614fe5565b8186015283529183019160400161503e565b509695505050505050565b600080600060a084860312156150ab57600080fd5b6150b58585614a6e565b925060608401356150c581614fe5565b915060808401356001600160401b038111156150e057600080fd5b6150ec86828701614ffa565b9150509250925092565b600082601f83011261510757600080fd5b813560206151176149ac83614941565b80838252602082019150606060206060860288010194508785111561513b57600080fd5b602087015b8581101561515f576151528982614a6e565b8452928401928101615140565b5090979650505050505050565b600082601f83011261517d57600080fd5b8135602061518d6149ac83614941565b8083825260208201915060208460051b8701019350868411156151af57600080fd5b602086015b8481101561508b5780356151c781614fe5565b83529183019183016151b4565b600082601f8301126151e557600080fd5b813560206151f56149ac83614941565b82815260059290921b8401810191818101908684111561521457600080fd5b8286015b8481101561508b5780356001600160401b038111156152375760008081fd5b6152458986838b0101614ffa565b845250918301918301615218565b600080600080600080600080610100898b03121561527057600080fd5b615279896146cc565b975061528760208a016146cc565b965061529560408a016146cc565b95506152a360608a016146cc565b94506080890135935060a08901356001600160401b03808211156152c657600080fd5b6152d28c838d016150f6565b945060c08b01359150808211156152e857600080fd5b6152f48c838d0161516c565b935060e08b013591508082111561530a57600080fd5b506153178b828c016151d4565b9150509295985092959890939650565b60208101610f408284614a18565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156153a85760208185018101518683018201520161538c565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006129b66020830184615382565b6000602082840312156153ed57600080fd5b81516129b6816146b7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561545457600080fd5b815180151581146129b657600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126154c357600080fd5b8301803591506001600160401b038211156154dd57600080fd5b6020019150600581901b36038213156142b057600080fd5b60006020828403121561550757600080fd5b81516129b68161466d565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f4057610f40615512565b6000808585111561554b57600080fd5b8386111561555857600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a166020860152604089604087015260c0606087015283895180865260e08801915060208b01955060005b818110156155cd578651805160ff16845286015185168684015295850195918301916001016155a3565b505060808701989098525050505060a09091019190915250949350505050565b6000604082840312156155ff57600080fd5b6129b68383614b47565b81810381811115610f4057610f40615512565b60006001820161562e5761562e615512565b5060010190565b60018060a01b038416815282602082015260606040820152600061565c6060830184615382565b95945050505050565b60006020828403121561567757600080fd5b81516001600160c01b03811681146129b657600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826156b3576156b361568e565b500690565b6001600160a01b038316815260406020820181905260009061482890830184615382565b8281526040602082015260006148286040830184615382565b60006020828403121561570757600080fd5b5051919050565b6001600160a01b03841681526101608101615736602083018580358252602090810135910152565b615750606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614828565b60018060a01b03831681526040602082015260008251606060408401526157a860a0840182615382565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061565c90830184866157c9565b60018060a01b038516815283602082015260606040820152600061198f6060830184866157c9565b600082601f83011261585057600080fd5b815160206158606149ac83614941565b8083825260208201915060208460051b87010193508684111561588257600080fd5b602086015b8481101561508b57805161589a81614fe5565b8352918301918301615887565b600080604083850312156158ba57600080fd5b82516001600160401b03808211156158d157600080fd5b6158dd8683870161583f565b935060208501519150808211156158f357600080fd5b506159008582860161583f565b9150509250929050565b83815260406020820152600061565c6040830184866157c9565b6000602080838503121561593757600080fd5b82516001600160401b0381111561594d57600080fd5b8301601f8101851361595e57600080fd5b805161596c6149ac82614941565b81815260059190911b8201830190838101908783111561598b57600080fd5b928401925b828410156149f75783516159a38161466d565b82529284019290840190615990565b6000602082840312156159c457600080fd5b81516129b681614fe5565b60ff8181168382160190811115610f4057610f40615512565b60006060820160ff8616835260206001600160601b03808716602086015260406060604087015283875180865260808801915060208901955060005b81811015615a5457865180516001600160a01b031684528601518516868401529585019591830191600101615a24565b50909a9950505050505050505050565b600061ffff808316818103615a7b57615a7b615512565b6001019392505050565b600060208284031215615a9757600080fd5b81516001600160e01b0319811681146129b657600080fd5b6001600160601b03818116838216028082169190828114615ad257615ad2615512565b505092915050565b60006001600160601b0380841680615af457615af461568e565b9216919091049291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207d5f90e3401cb54ad55455b7cbc4f8abf3101a8a6465b53d917fe6ec5da1e0c764736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4826533b4897376654bb4d4ad88b7fafd0c98528":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610eac565b610268565b6040516100d89190610f28565b60405180910390f35b6100f46100ef366004610f9c565b6103be565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fcf565b610404565b005b6100f4610138366004610fea565b610528565b6101647f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fcf565b6105ae565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610f9c565b6105f5565b6040516100d8919061102d565b61018f6101e1366004610f9c565b610754565b6101286101f4366004610eac565b6107cb565b610201600081565b6040519081526020016100d8565b61024061021d366004611065565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fcf565b6108d5565b6060336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146102bb5760405162461bcd60e51b81526004016102b29061108f565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d6611102565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103b357600085858381811061032157610321611118565b919091013560f81c60008181526003602052604081205491935090915081900361035d5760405162461bcd60e51b81526004016102b29061112e565b6000610368836108f4565b905061037f898461037a600185611199565b6109f1565b8085858151811061039257610392611118565b63ffffffff9290921660209283029190910190910152505050600101610305565b5090505b9392505050565b60408051808201909152600080825260208201526103dc8383610a7b565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461044c5760405162461bcd60e51b81526004016102b29061108f565b60ff8116600090815260036020526040902054156104c65760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061057557610575611118565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105cb82610ad3565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b606060006106038484610b15565b905060008163ffffffff1667ffffffffffffffff81111561062657610626611102565b60405190808252806020026020018201604052801561064f578160200160208202803683370190505b50905060005b8263ffffffff1681101561074b5761066e868287610c4a565b82828151811061068057610680611118565b6020026020010181815250506000801b8282815181106106a2576106a2611118565b6020026020010151036107435760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b600101610655565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff841690811061079257610792611118565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146108135760405162461bcd60e51b81526004016102b29061108f565b60005b818110156108cf57600083838381811061083257610832611118565b919091013560f81c60008181526003602052604081205491935090915081900361086e5760405162461bcd60e51b81526004016102b29061112e565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff169061089c84610d21565b905060006108aa8583610d5b565b90508089146108be576108be8186856109f1565b505060019093019250610816915050565b50505050565b60006108e082610ad3565b54600160201b900463ffffffff1692915050565b60008061090083610ad3565b805490915060009061092090600160201b900463ffffffff1660016111bd565b905061092d848383610d85565b60ff841660009081526002602052604081209061094b600184611199565b63ffffffff168152602081019190915260400160009081205490036103b75760ff8416600090815260026020526040812090610988600184611199565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b60006109fd8383610a7b565b9050610a0b83838387610e23565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610aac6001836111da565b81548110610abc57610abc611118565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610af36001836111da565b81548110610b0357610b03611118565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bbd5760ff85166000908152600360205260408120610b4d6001846111da565b81548110610b5d57610b5d611118565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610baa576020015192506103fe915050565b5080610bb5816111ed565b915050610b2a565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d155760ff8616600090815260026020908152604080832063ffffffff891684529091528120610ca46001846111da565b81548110610cb457610cb4611118565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d02576020015192506103b7915050565b5080610d0d816111ed565b915050610c70565b50600095945050505050565b600080610d2d83610ad3565b8054909150600090610d4e90600190600160201b900463ffffffff16611199565b90506103b7848383610d85565b600080610d688484610a7b565b6001810154909150610d7d8585846000610e23565b949350505050565b815463ffffffff438116911603610dba57815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e4057600182018190556108cf565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ec157600080fd5b83359250602084013567ffffffffffffffff80821115610ee057600080fd5b818601915086601f830112610ef457600080fd5b813581811115610f0357600080fd5b876020828501011115610f1557600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835163ffffffff1683529284019291840191600101610f44565b50909695505050505050565b803560ff81168114610f8357600080fd5b919050565b803563ffffffff81168114610f8357600080fd5b60008060408385031215610faf57600080fd5b610fb883610f72565b9150610fc660208401610f88565b90509250929050565b600060208284031215610fe157600080fd5b6103b782610f72565b600080600060608486031215610fff57600080fd5b61100884610f72565b925061101660208501610f88565b915061102460408501610f88565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835183529284019291840191600101611049565b6000806040838503121561107857600080fd5b61108183610f72565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156111b6576111b6611183565b5092915050565b63ffffffff8181168382160190808211156111b6576111b6611183565b818103818111156103fe576103fe611183565b6000816111fc576111fc611183565b50600019019056fea2646970667358221220af8de4d3486e0b797de225bb92c1953126cca4d69399c73bf6885ce4485dc52464736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x4c5859f0f772848b2d91f1d83e2fe57935348029":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061026b5760003560e01c8063886f119511610144578063df5cf723116100b6578063f7013ef61161007a578063f7013ef614610872578063f9120af614610892578063fabc1cbc146108b2578063fc299dee146108d2578063fce36c7d146108f2578063fd4c3b7c1461091257600080fd5b8063df5cf723146107c6578063e481af9d146107fa578063ea5ca34b1461080f578063f2fde38b14610825578063f474b5201461084557600080fd5b8063a98fb35511610108578063a98fb355146106cf578063ab21739a146106ef578063b099627e1461070f578063b753645e14610779578063b98d090814610799578063d66eaabd146107b357600080fd5b8063886f1195146106315780638da5cb5b1461065157806395c6d6041461066f5780639926ee7d1461068f578063a364f4da146106af57600080fd5b80634a5bf632116101dd5780635df45946116101a15780635df4594614610517578063683048351461054b5780636b3aa72e1461057f5780636d14a987146105b257806370a08231146105e6578063715018a61461061c57600080fd5b80634a5bf6321461044d5780634ae07c3714610485578063595c6a67146104b35780635ac86ab7146104c85780635c975abb146104f857600080fd5b806318daeeaf1161022f57806318daeeaf1461038d5780632e1a7d4d146103ad57806333cfb7b7146103cd5780633bc28c8c146103fa578063416c7e5e1461041a5780634223d5511461043a57600080fd5b806306045a91146102b257806310d67a2f146102e7578063136439dd14610307578063137122b514610327578063171f1d5b1461035657600080fd5b366102ad5760fc546005906020908116036102a15760405162461bcd60e51b81526004016102989061495a565b60405180910390fd5b6102ab3334610932565b005b600080fd5b3480156102be57600080fd5b506102d26102cd366004614ab5565b6109c2565b60405190151581526020015b60405180910390f35b3480156102f357600080fd5b506102ab610302366004614b56565b610ae4565b34801561031357600080fd5b506102ab610322366004614b73565b610b97565b34801561033357600080fd5b506102d2610342366004614b9b565b60cc54600160ff9092169190911b16151590565b34801561036257600080fd5b50610376610371366004614c78565b610cd6565b6040805192151583529015156020830152016102de565b34801561039957600080fd5b506102ab6103a8366004614b9b565b610e60565b3480156103b957600080fd5b506102ab6103c8366004614b73565b610ea8565b3480156103d957600080fd5b506103ed6103e8366004614b56565b610fa9565b6040516102de9190614cc9565b34801561040657600080fd5b506102ab610415366004614b56565b61145c565b34801561042657600080fd5b506102ab610435366004614d24565b61146d565b6102ab610448366004614b56565b6115a4565b34801561045957600080fd5b5060cb5461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561049157600080fd5b506104a56104a0366004614fff565b6115da565b6040516102de92919061509a565b3480156104bf57600080fd5b506102ab61250e565b3480156104d457600080fd5b506102d26104e3366004614b9b565b60fc54600160ff9092169190911b9081161490565b34801561050457600080fd5b5060fc545b6040519081526020016102de565b34801561052357600080fd5b5061046d7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b34801561055757600080fd5b5061046d7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b34801561058b57600080fd5b507f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570761046d565b3480156105be57600080fd5b5061046d7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b3480156105f257600080fd5b50610509610601366004614b56565b6001600160a01b0316600090815260ca602052604090205490565b34801561062857600080fd5b506102ab6125d5565b34801561063d57600080fd5b5060fb5461046d906001600160a01b031681565b34801561065d57600080fd5b506033546001600160a01b031661046d565b34801561067b57600080fd5b506102d261068a36600461512b565b6125e9565b34801561069b57600080fd5b506102ab6106aa366004615176565b61260e565b3480156106bb57600080fd5b506102ab6106ca366004614b56565b6126da565b3480156106db57600080fd5b506102ab6106ea366004615221565b6127a1565b3480156106fb57600080fd5b506102ab61070a366004615271565b6127f5565b34801561071b57600080fd5b5061075761072a366004614b73565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102de565b34801561078557600080fd5b506102ab610794366004614b73565b612bc7565b3480156107a557600080fd5b506097546102d29060ff1681565b6102ab6107c1366004615298565b612bd4565b3480156107d257600080fd5b5061046d7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561080657600080fd5b506103ed612db7565b34801561081b57600080fd5b5061050960cc5481565b34801561083157600080fd5b506102ab610840366004614b56565b613163565b34801561085157600080fd5b50610509610860366004614b56565b60ca6020526000908152604090205481565b34801561087e57600080fd5b506102ab61088d3660046152ea565b6131d9565b34801561089e57600080fd5b506102ab6108ad366004614b56565b6133f9565b3480156108be57600080fd5b506102ab6108cd366004614b73565b613423565b3480156108de57600080fd5b5060655461046d906001600160a01b031681565b3480156108fe57600080fd5b506102ab61090d36600461534e565b61357f565b34801561091e57600080fd5b506102ab61092d366004614b9b565b61392e565b8060000361095657604051632097692160e11b815260048101829052602401610298565b6001600160a01b038216600090815260ca60205260408120805483929061097e9084906153d8565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25050565b60fc546000906002906004908116036109ed5760405162461bcd60e51b81526004016102989061495a565b60006001600160a01b038416610a04575085610a30565b8684604051602001610a179291906153eb565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610a55576000925050610ad7565b600081815260c96020526040902054640100000000900460ff16610a7d576000925050610ad7565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610ad1888a838a613975565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615406565b6001600160a01b0316336001600160a01b031614610b8b5760405162461bcd60e51b815260040161029890615423565b610b948161398d565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c03919061546d565b610c1f5760405162461bcd60e51b81526004016102989061548a565b60fc5481811614610c985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d1e57610d1e6154d2565b60200201518951600160200201518a60200151600060028110610d4357610d436154d2565b60200201518b60200151600160028110610d5f57610d5f6154d2565b602090810291909101518c518d830151604051610dbc9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610ddf91906154e8565b9050610e52610df8610df18884613a84565b8690613b15565b610e00613baa565b610e48610e3985610e33604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613a84565b610e428c613c6a565b90613b15565b886201d4c0613cf9565b909890975095505050505050565b610e68613f13565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b60fc54600390600890811603610ed05760405162461bcd60e51b81526004016102989061495a565b33600090815260ca6020526040902054821115610f215733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018490526044820152606401610298565b33600090815260ca602052604081208054849290610f4090849061550a565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a2604051339083156108fc029084906000818181858888f19350505050158015610fa4573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616906313542a4e90602401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611039919061551d565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36169063871ef04990602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190615536565b90506001600160c01b038116158061116257507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d919061555f565b60ff16155b156111825760408051600080825260208201909252905b50949350505050565b6000611196826001600160c01b0316613f6d565b90506000805b8251811015611262577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316633ca5a5f58483815181106111e6576111e66154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e919061551d565b61125890836153d8565b915060010161119c565b506000816001600160401b0381111561127d5761127d614991565b6040519080825280602002602001820160405280156112a6578160200160208202803683370190505b5090506000805b845181101561144f5760008582815181106112ca576112ca6154d2565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1690633ca5a5f590602401602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611363919061551d565b905060005b81811015611444576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190615591565b60000151868681518110611417576114176154d2565b6001600160a01b039092166020928302919091019091015284611439816155d2565b955050600101611368565b5050506001016112ad565b5090979650505050505050565b611464613f13565b610b948161402f565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190615406565b6001600160a01b0316336001600160a01b03161461159b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610298565b610b9481614098565b60fc546004906010908116036115cc5760405162461bcd60e51b81526004016102989061495a565b6115d68234610932565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561163657508260a0015151604051806040016040528060018152602001600081525051145b801561165d57508260c0015151604051806040016040528060018152602001600081525051145b801561168457508260e0015151604051806040016040528060018152602001600081525051145b6116ee5760405162461bcd60e51b81526020600482015260416024820152600080516020615a5583398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610298565b825151602084015151146117665760405162461bcd60e51b815260206004820152604460248201819052600080516020615a55833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610298565b4363ffffffff168463ffffffff16106117d55760405162461bcd60e51b815260206004820152603c6024820152600080516020615a5583398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610298565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b0381111561189657611896614991565b6040519080825280602002602001820160405280156118bf578160200160208202803683370190505b5081526020860151516001600160401b038111156118df576118df614991565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50816020018190525060006119b460405180604001604052806001815260200160008152507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af919061555f565b6140df565b905060005b876020015151811015611c45576119fe886020015182815181106119df576119df6154d2565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611a1457611a146154d2565b60209081029190910101528015611ad4576020830151611a3560018361550a565b81518110611a4557611a456154d2565b602002602001015160001c83602001518281518110611a6657611a666154d2565b602002602001015160001c11611ad4576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a5583398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610298565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03166304ec635184602001518381518110611b1957611b196154d2565b60200260200101518b8b600001518581518110611b3857611b386154d2565b60200260200101516040518463ffffffff1660e01b8152600401611b759392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb69190615536565b6001600160c01b031683600001518281518110611bd557611bd56154d2565b602002602001018181525050611c3b610df1611c0f8486600001518581518110611c0157611c016154d2565b602002602001015116614172565b8a602001518481518110611c2557611c256154d2565b602002602001015161419d90919063ffffffff16565b94506001016119b9565b5050611c5083614280565b60975490935060ff16600081611c67576000611ce9565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce9919061551d565b905060005b6040518060400160405280600181526020016000815250518110156123df578215611e7a578963ffffffff16827f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611d7257611d726154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dda919061551d565b611de491906153d8565b11611e7a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a5583398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610298565b7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ed157611ed16154d2565b602001015160f81c60f81b60f81c8c8c60a001518581518110611ef657611ef66154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7691906155eb565b6001600160401b031916611f998a6040015183815181106119df576119df6154d2565b67ffffffffffffffff1916146120355760405162461bcd60e51b81526020600482015260616024820152600080516020615a5583398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610298565b6120658960400151828151811061204e5761204e6154d2565b602002602001015187613b1590919063ffffffff16565b95507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106120be576120be6154d2565b602001015160f81c60f81b60f81c8c8c60c0015185815181106120e3576120e36154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121639190615616565b85602001518281518110612179576121796154d2565b6001600160601b039092166020928302919091018201528501518051829081106121a5576121a56154d2565b6020026020010151856000015182815181106121c3576121c36154d2565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156123d5576122528660000151828151811061220d5761220d6154d2565b60200260200101516040518060400160405280600181526020016000815250858151811061223d5761223d6154d2565b016020015160f81c60ff161c60019081161490565b156123cd577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106122ae576122ae6154d2565b602001015160f81c60f81b60f81c8e896020015185815181106122d3576122d36154d2565b60200260200101518f60e0015188815181106122f1576122f16154d2565b6020026020010151878151811061230a5761230a6154d2565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123929190615616565b87518051859081106123a6576123a66154d2565b602002602001018181516123ba9190615633565b6001600160601b03169052506001909101905b6001016121e7565b5050600101611cee565b5050506000806123f98a868a606001518b60800151610cd6565b915091508161246a5760405162461bcd60e51b81526020600482015260436024820152600080516020615a5583398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610298565b806124cb5760405162461bcd60e51b81526020600482015260396024820152600080516020615a5583398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610298565b505060008782602001516040516020016124e692919061565a565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a919061546d565b6125965760405162461bcd60e51b81526004016102989061548a565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6125dd613f13565b6125e7600061431b565b565b60008184846040516125fc9291906156a2565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146126565760405162461bcd60e51b8152600401610298906156b2565b604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071690639926ee7d906126a49085908590600401615770565b600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146127225760405162461bcd60e51b8152600401610298906156b2565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a364f4da906024015b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050505050565b6127a9613f13565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a98fb3559061276c9084906004016157bb565b60cb546001600160a01b031633146128355760cb54604051632cbe419560e01b81523360048201526001600160a01b039091166024820152604401610298565b60fc5460019060029081160361285d5760405162461bcd60e51b81526004016102989061495a565b60005a9050600085856040516020016128779291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff90911690036128cc576040516311cb69a760e11b815260048101839052602401610298565b8054640100000000900460ff16156128fa57604051634e78d7f960e11b815260048101839052602401610298565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca6020526040902054101561297d5760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b8152600481019290925260248201929092526044810191909152606401610298565b805460009061299490849063ffffffff16886115da565b509050604360ff1681602001516000815181106129b3576129b36154d2565b60200260200101516129c591906157ce565b6001600160601b0316606482600001516000815181106129e7576129e76154d2565b60200260200101516001600160601b0316612a0291906157f1565b1015612a955760648160000151600081518110612a2157612a216154d2565b60200260200101516001600160601b0316612a3c91906157f1565b604360ff168260200151600081518110612a5857612a586154d2565b6020026020010151612a6a91906157ce565b60405163530f5c4560e11b815260048101929092526001600160601b03166024820152604401610298565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ae1908761550a565b612aee90620111706153d8565b612af891906157f1565b9050600083600101548210612b11578360010154612b13565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612b4090849061550a565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612bba573d6000803e3d6000fd5b5050505050505050505050565b612bcf613f13565b60cc55565b60fc54600090600190811603612bfc5760405162461bcd60e51b81526004016102989061495a565b60008533604051602001612c119291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612c6057604051630c40bc4360e21b815260048101829052602401610298565b3415612cbd5733600090815260ca602052604081208054349290612c859084906153d8565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25b33600090815260ca6020526040902054831115612d0e5733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018590526044820152606401610298565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612da6913391908b908b908b90615808565b60405180910390a250505050505050565b606060007f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d919061555f565b60ff16905080600003612e5e57505060408051600081526020810190915290565b6000805b82811015612f0957604051633ca5a5f560e01b815260ff821660048201527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef5919061551d565b612eff90836153d8565b9150600101612e62565b506000816001600160401b03811115612f2457612f24614991565b604051908082528060200260200182016040528015612f4d578160200160208202803683370190505b5090506000805b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd6919061555f565b60ff1681101561315957604051633ca5a5f560e01b815260ff821660048201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e919061551d565b905060005b8181101561314f576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190615591565b60000151858581518110613122576131226154d2565b6001600160a01b039092166020928302919091019091015283613144816155d2565b945050600101613073565b5050600101612f54565b5090949350505050565b61316b613f13565b6001600160a01b0381166131d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b610b948161431b565b600054610100900460ff16158080156131f95750600054600160ff909116105b806132135750303b158015613213575060005460ff166001145b6132765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff191660011790558015613299576000805461ff0019166101001790555b6001600160a01b0386166132df57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606401610298565b6001600160a01b03851661332957604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606401610298565b6001600160a01b03841661337457604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606401610298565b61337e868661436d565b60cb80546001600160a01b0319166001600160a01b0386161790556133a28661431b565b6133ac83836143ea565b80156126d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b613401613f13565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190615406565b6001600160a01b0316336001600160a01b0316146134ca5760405162461bcd60e51b815260040161029890615423565b60fc5419811960fc541916146135485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610ccb565b6065546001600160a01b031633146136145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610298565b60005b818110156138df57828282818110613631576136316154d2565b9050602002810190613643919061585f565b613654906040810190602001614b56565b6001600160a01b03166323b872dd3330868686818110613676576136766154d2565b9050602002810190613688919061585f565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613703919061546d565b506000838383818110613718576137186154d2565b905060200281019061372a919061585f565b61373b906040810190602001614b56565b604051636eb1769f60e11b81523060048201526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cd919061551d565b90508383838181106137e1576137e16154d2565b90506020028101906137f3919061585f565b613804906040810190602001614b56565b6001600160a01b031663095ea7b37f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f83878787818110613846576138466154d2565b9050602002810190613858919061585f565b6040013561386691906153d8565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d5919061546d565b5050600101613617565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fce36c7d906126a490859085906004016158e5565b613936613f13565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b6000836139838685856144d0565b1495945050505050565b6001600160a01b038116613a1b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610298565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613aa0614880565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613acf57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610298565b505092915050565b6040805180820190915260008082526020820152613b3161489e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613b6c57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610298565b613bb26148bc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613c9a600080516020615a15833981519152866154e8565b90505b613ca6816145cd565b9093509150600080516020615a158339815191528283098303613cdf576040805180820190915290815260208101919091529392505050565b600080516020615a15833981519152600182089050613c9d565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613d2b6148e1565b60005b6002811015613ee6576000613d448260066157f1565b9050848260028110613d5857613d586154d2565b60200201515183613d6a8360006153d8565b600c8110613d7a57613d7a6154d2565b6020020152848260028110613d9157613d916154d2565b60200201516020015183826001613da891906153d8565b600c8110613db857613db86154d2565b6020020152838260028110613dcf57613dcf6154d2565b6020020151515183613de28360026153d8565b600c8110613df257613df26154d2565b6020020152838260028110613e0957613e096154d2565b6020020151516001602002015183613e228360036153d8565b600c8110613e3257613e326154d2565b6020020152838260028110613e4957613e496154d2565b602002015160200151600060028110613e6457613e646154d2565b602002015183613e758360046153d8565b600c8110613e8557613e856154d2565b6020020152838260028110613e9c57613e9c6154d2565b602002015160200151600160028110613eb757613eb76154d2565b602002015183613ec88360056153d8565b600c8110613ed857613ed86154d2565b602002015250600101613d2e565b50613eef614900565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b031633146125e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610298565b6060600080613f7b84614172565b61ffff166001600160401b03811115613f9657613f96614991565b6040519080825280601f01601f191660200182016040528015613fc0576020820181803683370190505b5090506000805b825182108015613fd8575061010081105b15613159576001811b93508584161561401f578060f81b838381518110614001576140016154d2565b60200101906001600160f81b031916908160001a9053508160010191505b614028816155d2565b9050613fc7565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806140eb8461464f565b9050808360ff166001901b116141695760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610298565b90505b92915050565b6000805b821561416c5761418760018461550a565b9092169180614195816159f3565b915050614176565b60408051808201909152600080825260208201526102008261ffff16106141f95760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610298565b8161ffff1660010361420c57508161416c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061427557600161ffff871660ff83161c81169003614258576142558484613b15565b93505b6142628384613b15565b92506201fffe600192831b169101614228565b509195945050505050565b604080518082019091526000808252602082015281511580156142a557506020820151155b156142c3575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a1583398151915284602001516142f691906154e8565b61430e90600080516020615a1583398151915261550a565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166143d85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610298565b6143e18261431b565b6115d68161402f565b60fb546001600160a01b031615801561440b57506001600160a01b03821615155b61448d5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26115d68261398d565b6000602084516144e091906154e8565b156145675760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610298565b8260205b855181116111795761457e6002856154e8565b6000036145a2578160005280860151602052604060002091506002840493506145bb565b8086015160005281602052604060002091506002840493505b6145c66020826153d8565b905061456b565b60008080600080516020615a158339815191526003600080516020615a1583398151915286600080516020615a15833981519152888909090890506000614643827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a158339815191526147d7565b91959194509092505050565b6000610100825111156146d85760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610298565b81516000036146e957506000919050565b600080836000815181106146ff576146ff6154d2565b0160200151600160f89190911c81901b92505b84518110156147ce5784818151811061472d5761472d6154d2565b0160200151600160f89190911c1b91508282116147c25760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610298565b91811791600101614712565b50909392505050565b6000806147e2614900565b6147ea61491e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061482757fe5b50826148755760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610298565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148cf61493c565b81526020016148dc61493c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149c9576149c9614991565b60405290565b60405161010081016001600160401b03811182821017156149c9576149c9614991565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a614991565b604052919050565b60006001600160401b03831115614a3b57614a3b614991565b614a4e601f8401601f19166020016149f2565b9050828152838383011115614a6257600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a8a57600080fd5b614a9983833560208501614a22565b9392505050565b6001600160a01b0381168114610b9457600080fd5b600080600080600080600080610100898b031215614ad257600080fd5b88359750602089013596506040890135955060608901356001600160601b031981168114614aff57600080fd5b94506080890135935060a08901356001600160401b03811115614b2157600080fd5b614b2d8b828c01614a79565b93505060c0890135915060e0890135614b4581614aa0565b809150509295985092959890939650565b600060208284031215614b6857600080fd5b813561416981614aa0565b600060208284031215614b8557600080fd5b5035919050565b60ff81168114610b9457600080fd5b600060208284031215614bad57600080fd5b813561416981614b8c565b600060408284031215614bca57600080fd5b614bd26149a7565b9050813581526020820135602082015292915050565b600082601f830112614bf957600080fd5b614c016149a7565b806040840185811115614c1357600080fd5b845b81811015614c2d578035845260209384019301614c15565b509095945050505050565b600060808284031215614c4a57600080fd5b614c526149a7565b9050614c5e8383614be8565b8152614c6d8360408401614be8565b602082015292915050565b6000806000806101208587031215614c8f57600080fd5b84359350614ca08660208701614bb8565b9250614caf8660608701614c38565b9150614cbe8660e08701614bb8565b905092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015614d0a5783516001600160a01b031683529284019291840191600101614ce5565b50909695505050505050565b8015158114610b9457600080fd5b600060208284031215614d3657600080fd5b813561416981614d16565b803563ffffffff8116811461431657600080fd5b60006001600160401b03821115614d6e57614d6e614991565b5060051b60200190565b600082601f830112614d8957600080fd5b81356020614d9e614d9983614d55565b6149f2565b8083825260208201915060208460051b870101935086841115614dc057600080fd5b602086015b84811015614de357614dd681614d41565b8352918301918301614dc5565b509695505050505050565b600082601f830112614dff57600080fd5b81356020614e0f614d9983614d55565b8083825260208201915060208460061b870101935086841115614e3157600080fd5b602086015b84811015614de357614e488882614bb8565b835291830191604001614e36565b600082601f830112614e6757600080fd5b81356020614e77614d9983614d55565b82815260059290921b84018101918181019086841115614e9657600080fd5b8286015b84811015614de35780356001600160401b03811115614eb95760008081fd5b614ec78986838b0101614d78565b845250918301918301614e9a565b60006101808284031215614ee857600080fd5b614ef06149cf565b905081356001600160401b0380821115614f0957600080fd5b614f1585838601614d78565b83526020840135915080821115614f2b57600080fd5b614f3785838601614dee565b60208401526040840135915080821115614f5057600080fd5b614f5c85838601614dee565b6040840152614f6e8560608601614c38565b6060840152614f808560e08601614bb8565b6080840152610120840135915080821115614f9a57600080fd5b614fa685838601614d78565b60a0840152610140840135915080821115614fc057600080fd5b614fcc85838601614d78565b60c0840152610160840135915080821115614fe657600080fd5b50614ff384828501614e56565b60e08301525092915050565b60008060006060848603121561501457600080fd5b8335925061502460208501614d41565b915060408401356001600160401b0381111561503f57600080fd5b61504b86828701614ed5565b9150509250925092565b60008151808452602080850194506020840160005b8381101561508f5781516001600160601b03168752958201959082019060010161506a565b509495945050505050565b60408152600083516040808401526150b56080840182615055565b90506020850151603f198483030160608501526150d28282615055565b925050508260208301529392505050565b60008083601f8401126150f557600080fd5b5081356001600160401b0381111561510c57600080fd5b60208301915083602082850101111561512457600080fd5b9250929050565b60008060006040848603121561514057600080fd5b83356001600160401b0381111561515657600080fd5b615162868287016150e3565b909790965060209590950135949350505050565b6000806040838503121561518957600080fd5b823561519481614aa0565b915060208301356001600160401b03808211156151b057600080fd5b90840190606082870312156151c457600080fd5b6040516060810181811083821117156151df576151df614991565b6040528235828111156151f157600080fd5b6151fd88828601614a79565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561523357600080fd5b81356001600160401b0381111561524957600080fd5b8201601f8101841361525a57600080fd5b61526984823560208401614a22565b949350505050565b60008060006060848603121561528657600080fd5b83359250602084013561502481614aa0565b600080600080606085870312156152ae57600080fd5b8435935060208501356001600160401b038111156152cb57600080fd5b6152d7878288016150e3565b9598909750949560400135949350505050565b600080600080600060a0868803121561530257600080fd5b853561530d81614aa0565b9450602086013561531d81614aa0565b9350604086013561532d81614aa0565b9250606086013561533d81614aa0565b949793965091946080013592915050565b6000806020838503121561536157600080fd5b82356001600160401b038082111561537857600080fd5b818501915085601f83011261538c57600080fd5b81358181111561539b57600080fd5b8660208260051b85010111156153b057600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561416c5761416c6153c2565b91825260601b6001600160601b031916602082015260340190565b60006020828403121561541857600080fd5b815161416981614aa0565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561547f57600080fd5b815161416981614d16565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261550557634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561416c5761416c6153c2565b60006020828403121561552f57600080fd5b5051919050565b60006020828403121561554857600080fd5b81516001600160c01b038116811461416957600080fd5b60006020828403121561557157600080fd5b815161416981614b8c565b6001600160601b0381168114610b9457600080fd5b6000604082840312156155a357600080fd5b6155ab6149a7565b82516155b681614aa0565b815260208301516155c68161557c565b60208201529392505050565b6000600182016155e4576155e46153c2565b5060010190565b6000602082840312156155fd57600080fd5b815167ffffffffffffffff198116811461416957600080fd5b60006020828403121561562857600080fd5b81516141698161557c565b6001600160601b03828116828216039080821115615653576156536153c2565b5092915050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561569557815185529382019390820190600101615679565b5092979650505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b8181101561575057602081850181015186830182015201615734565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b038316815260406020820152600082516060604084015261579a60a084018261572a565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614a99602083018461572a565b6001600160601b03818116838216028082169190828114613b0d57613b0d6153c2565b808202811582820484141761416c5761416c6153c2565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60008235609e1983360301811261587557600080fd5b9190910192915050565b803561431681614aa0565b8183526000602080850194508260005b8581101561508f5781356158ad81614aa0565b6001600160a01b03168752818301356158c58161557c565b6001600160601b031687840152604096870196919091019060010161589a565b60208082528181018390526000906040808401600586901b8501820187855b888110156159e557878303603f190184528135368b9003609e1901811261592a57600080fd5b8a0160a0813536839003601e1901811261594357600080fd5b820188810190356001600160401b0381111561595e57600080fd5b8060061b360382131561597057600080fd5b828752615980838801828461588a565b9250505061598f88830161587f565b6001600160a01b031688860152818701358786015260606159b1818401614d41565b63ffffffff169086015260806159c8838201614d41565b63ffffffff16950194909452509285019290850190600101615904565b509098975050505050505050565b600061ffff808316818103615a0a57615a0a6153c2565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220cde428f3f88df95c90a1ec8fecb6c7eba0ec71b263a25efb19209458df8a2f3d64736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000097":"0x5bc5b424ff8db9bd8202cae3beb193c946b905d8ebddb990e36a723af40eb1c4","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe61614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000006059f46084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000006059f46061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000773594000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000007735940006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x68b1d87f95878fe05b998f19b66f4baba5de1aed":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x70e0ba845a1a0f2da3359c97e0285013525ffc49":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","storage":{"0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x0000000000000000000000000000000000000000000000000000000000000001","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x0000000000000008000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}},"0x7969c5ed335650692bc04293b07f5bf2e7a673c0":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101395760003560e01c806373e289d0116100ab578063a7d318091161006f578063a7d31809146103f1578063c0c53b8b14610411578063c392299e14610431578063c891091314610444578063f2fde38b1461049b578063f83d08ba146104bb57600080fd5b806373e289d0146103735780638456cb59146103895780638da5cb5b1461039e578063953ef807146103bc578063a69df4b5146103dc57600080fd5b80634d5431ea116100fd5780634d5431ea146102a25780634f1ef286146102db57806352d1902d146102ee57806358b96e27146103035780635c975abb1461033b578063715018a61461035e57600080fd5b806317d89c4e146101cb5780632df4e21e146102175780632e1a7d4d1461024d5780633659cfe61461026d5780633f4ba83a1461028d57600080fd5b366101c65760fb546001600160a01b031633146101c45733600090815260fd60205260408120805434929061016f908490611619565b909155505033600081815260fd602052604080822060010191909155517f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770906101bb9034815260200190565b60405180910390a25b005b600080fd5b3480156101d757600080fd5b506102046101e6366004611641565b6001600160a01b0316600090815260fd602052604090206002015490565b6040519081526020015b60405180910390f35b34801561022357600080fd5b50610204610232366004611641565b6001600160a01b0316600090815260fd602052604090205490565b34801561025957600080fd5b506101c461026836600461165e565b6104d0565b34801561027957600080fd5b506101c4610288366004611641565b61060d565b34801561029957600080fd5b506101c46106ec565b3480156102ae57600080fd5b506102046102bd366004611641565b6001600160a01b0316600090815260fd602052604090206001015490565b6101c46102e936600461168d565b6106fe565b3480156102fa57600080fd5b506102046107ce565b34801561030f57600080fd5b5060fc54610323906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b34801561034757600080fd5b5060655460ff16604051901515815260200161020e565b34801561036a57600080fd5b506101c4610881565b34801561037f57600080fd5b50610204610e1081565b34801561039557600080fd5b506101c4610893565b3480156103aa57600080fd5b506033546001600160a01b0316610323565b3480156103c857600080fd5b5060fb54610323906001600160a01b031681565b3480156103e857600080fd5b506101c46108a3565b3480156103fd57600080fd5b506101c461040c36600461179d565b61093a565b34801561041d57600080fd5b506101c461042c36600461185c565b610bd0565b6101c461043f3660046118a7565b610e1a565b34801561045057600080fd5b5061048061045f366004611641565b60fd6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161020e565b3480156104a757600080fd5b506101c46104b6366004611641565b610ebb565b3480156104c757600080fd5b506101c4610f31565b6104d8610fa7565b33600090815260fd60205260409020805482111561051b5780546040516321c3d50f60e01b81526004810191909152602481018390526044015b60405180910390fd5b6001810154158061052f5750428160010154115b1561055c576001810154604051635f6e272d60e11b81526004810191909152426024820152604401610512565b8181600001600082825461057091906118d7565b909155505060006001820181905560405133917fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd91a2604051339083156108fc029084906000818181858888f193505050501580156105d3573d6000803e3d6000fd5b5060405182815233907feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9060200160405180910390a25050565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036106555760405162461bcd60e51b8152600401610512906118ea565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b031661069e600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146106c45760405162461bcd60e51b815260040161051290611936565b6106cd81610fed565b604080516000808252602082019092526106e991839190610ff5565b50565b6106f4611160565b6106fc6111ba565b565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036107465760405162461bcd60e51b8152600401610512906118ea565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b031661078f600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146107b55760405162461bcd60e51b815260040161051290611936565b6107be82610fed565b6107ca82826001610ff5565b5050565b6000306001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0161461086e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610512565b50600080516020611b0383398151915290565b610889611160565b6106fc600061120c565b61089b611160565b6106fc61125e565b6108ab610fa7565b33600090815260fd602052604081205490036108dc5760405163b38340cf60e01b8152336004820152602401610512565b6108e8610e1042611619565b33600081815260fd6020526040908190206001018390555190917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439161093091815260200190565b60405180910390a2565b60fc546001600160a01b03163314610967576040516302a5785160e31b8152336004820152602401610512565b61096f610fa7565b83600081900361099257604051630c43ac2960e41b815260040160405180910390fd5b826000036109b3576040516351d432c560e11b815260040160405180910390fd5b836109be8285611982565b116109f057836109ce8285611982565b604051637899ec7160e01b815260048101929092526024820152604401610512565b60005b818163ffffffff161015610ad157600087878363ffffffff16818110610a1b57610a1b611999565b9050602002016020810190610a309190611641565b6001600160a01b038116600090815260fd60205260409020805491925090861115610a8a578054604051634f779ceb60e01b81526001600160a01b0384166004820152602481019190915260448101879052606401610512565b600281018054906000610a9c836119af565b919050555085816000016000828254610ab591906118d7565b9250508190555050508080610ac9906119c8565b9150506109f3565b5060fb5460405163d66eaabd60e01b81526001600160a01b039091169063d66eaabd908690610b0a908d908d908d9089906004016119eb565b6000604051808303818588803b158015610b2357600080fd5b505af1158015610b37573d6000803e3d6000fd5b505060408051878152602081018690528d94507f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c935001905060405180910390a260fc546001600160a01b03166108fc85610b928487611982565b610b9c91906118d7565b6040518115909202916000818181858888f19350505050158015610bc4573d6000803e3d6000fd5b50505050505050505050565b600054610100900460ff1615808015610bf05750600054600160ff909116105b80610c0a5750303b158015610c0a575060005460ff166001145b610c6d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610512565b6000805460ff191660011790558015610c90576000805461ff0019166101001790555b6001600160a01b038416610cdf57604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606401610512565b6001600160a01b038316610d3657604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606401610512565b6001600160a01b038216610d7d57604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606401610512565b610d8561129b565b610d8d6112ca565b610d956112f1565b610d9e8361120c565b60fb80546001600160a01b038087166001600160a01b03199283161790925560fc8054928516929091169190911790558015610e14576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610e22611160565b60fb54604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610e6857600080fd5b505af1158015610e7c573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f19350505050158015610eb6573d6000803e3d6000fd5b505050565b610ec3611160565b6001600160a01b038116610f285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610512565b6106e98161120c565b610f39610fa7565b33600090815260fd60205260408120549003610f6a5760405163366095e160e11b8152336004820152602401610512565b33600081815260fd6020526040808220600101829055517fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd9190a2565b60655460ff16156106fc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610512565b6106e9611160565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561102857610eb683611320565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611082575060408051601f3d908101601f1916820190925261107f91810190611a2b565b60015b6110e55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610512565b600080516020611b0383398151915281146111545760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610512565b50610eb68383836113bc565b6033546001600160a01b031633146106fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610512565b6111c26113e1565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611266610fa7565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111ef3390565b600054610100900460ff166112c25760405162461bcd60e51b815260040161051290611a44565b6106fc61142a565b600054610100900460ff166106fc5760405162461bcd60e51b815260040161051290611a44565b600054610100900460ff166113185760405162461bcd60e51b815260040161051290611a44565b6106fc61145a565b6001600160a01b0381163b61138d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610512565b600080516020611b0383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6113c58361148d565b6000825111806113d25750805b15610eb657610e1483836114cd565b60655460ff166106fc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610512565b600054610100900460ff166114515760405162461bcd60e51b815260040161051290611a44565b6106fc3361120c565b600054610100900460ff166114815760405162461bcd60e51b815260040161051290611a44565b6065805460ff19169055565b61149681611320565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6115355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610512565b600080846001600160a01b0316846040516115509190611ab3565b600060405180830381855af49150503d806000811461158b576040519150601f19603f3d011682016040523d82523d6000602084013e611590565b606091505b50915091506115b88282604051806060016040528060278152602001611b23602791396115c3565b925050505b92915050565b606083156115d25750816115fc565b8251156115e25782518084602001fd5b8160405162461bcd60e51b81526004016105129190611acf565b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156115bd576115bd611603565b6001600160a01b03811681146106e957600080fd5b60006020828403121561165357600080fd5b81356115fc8161162c565b60006020828403121561167057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156116a057600080fd5b82356116ab8161162c565b9150602083013567ffffffffffffffff808211156116c857600080fd5b818501915085601f8301126116dc57600080fd5b8135818111156116ee576116ee611677565b604051601f8201601f19908116603f0116810190838211818310171561171657611716611677565b8160405282815288602084870101111561172f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f84011261176357600080fd5b50813567ffffffffffffffff81111561177b57600080fd5b6020830191508360208260051b850101111561179657600080fd5b9250929050565b60008060008060008060008060c0898b0312156117b957600080fd5b88359750602089013567ffffffffffffffff808211156117d857600080fd5b818b0191508b601f8301126117ec57600080fd5b8135818111156117fb57600080fd5b8c602082850101111561180d57600080fd5b6020830199508098505060408b013591508082111561182b57600080fd5b506118388b828c01611751565b999c989b5096999698976060880135976080810135975060a0013595509350505050565b60008060006060848603121561187157600080fd5b833561187c8161162c565b9250602084013561188c8161162c565b9150604084013561189c8161162c565b809150509250925092565b600080604083850312156118ba57600080fd5b8235915060208301356118cc8161162c565b809150509250929050565b818103818111156115bd576115bd611603565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b80820281158282048414176115bd576115bd611603565b634e487b7160e01b600052603260045260246000fd5b6000600182016119c1576119c1611603565b5060010190565b600063ffffffff8083168181036119e1576119e1611603565b6001019392505050565b848152606060208201528260608201528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b600060208284031215611a3d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611aaa578181015183820152602001611a92565b50506000910152565b60008251611ac5818460208701611a8f565b9190910192915050565b6020815260008251806020840152611aee816040850160208701611a8f565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fe4d8620c34457d343e8ef7d48b551e27cee4fde238226317eb7e02cabac65a64736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x7bc06c482dead17c0e297afbc32f6e63d3846650":{"nonce":1,"balance":"0x0","code":"0x608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212201b5f899d9100d05ffd16b26a8e94bf20e28dd085fba06b911d8ef847c76d3bf864736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955","0x0000000000000000000000000000000000000000000000000000000000000065":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000fb":"0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c","0x00000000000000000000000000000000000000000000000000000000000000fc":"0x0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0"}},"0x851356ae760d987e095750cceb3bc6014560891c":{"nonce":1,"balance":"0xde0b6b3a7640000","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x00000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65","0x00000000000000000000000000000000000000000000000000000000000000fb":"0x000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","0x00000000000000000000000000000000000000000000000000000000000000fc":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042","0xf30de5dd89e866564a2ae4ccd6bce63a4b4930da9725a34e42ab718be7984ae8":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000097":"0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512","0x0000000000000000000000000000000000000000000000000000000000000098":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000c9":"0x000000000000000000000000000000000000000000000000000000000000000a","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x95401dc811bb5740090279ba06cfa8fcf6113778":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0x0000000000000000000000000000000000000000000000000000000000000008"}},"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x998abeb3e57409262ae5b751f60747921b33613e":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","storage":{"0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x0000000000000000000000000000000000000000000000000000000000000008","0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x0000000000000000000000000000000000000000000000000000000000000001","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x0000000000000000000000000000000000000000000000000000000000000001","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x0000000000000000000000000000000000000000000000000000000000000001","0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0x000000000de0b6b3a7640000c5a5c42992decbae36851359345fe25997f5c42d"}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9d4454b023096f34b160d6b654540c56a1f81688":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118e3565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118e3565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611916565b61045b565b005b6101ca6101b5366004611916565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119a1565b6105b4565b61021b610200366004611a47565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611916565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a60565b6102a261029d366004611a77565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611aa1565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b61034461033f366004611a77565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118e3565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611916565b6005602052600090815260409020805460019091015482565b6101846103da366004611ae9565b6109b8565b6103f26103ed366004611b46565b610e0b565b6040516101529190611bbe565b61018461040d3660046118e3565b60016020526000908152604090205481565b61021b61042d366004611a47565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119a1565b61101a565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146104ac5760405162461bcd60e51b81526004016104a390611c08565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146105fc5760405162461bcd60e51b81526004016104a390611c08565b6000610607836108eb565b50905061061482826110c3565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c7c565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614610a025760405162461bcd60e51b81526004016104a390611c08565b6000610a30610a1936869003860160408701611cf8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610ab7576040805162461bcd60e51b8152602060048201526024810191909152600080516020611eb283398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b415760405162461bcd60e51b81526020600482015260476024820152600080516020611eb283398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc55760405162461bcd60e51b81526020600482015260426024820152600080516020611eb283398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1e918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d2a565b6040516020818303038152906040528051906020012060001c610c419190611d6c565b9050610cdb610c7a610c6583610c5f368a90038a0160408b01611cf8565b90611307565b610c7436899003890189611cf8565b90611398565b610c8261142d565b610cc4610cb585610c5f604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c74368a90038a018a611cf8565b610cd6368a90038a0160808b01611dde565b6114ed565b610d765760405162461bcd60e51b815260206004820152606c6024820152600080516020611eb283398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfa9160808a0190611e1d565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2857610e28611931565b604051908082528060200260200182016040528015610e51578160200160208202803683370190505b50905060005b84811015611011576000868683818110610e7357610e73611ce2565b919091013560f81c6000818152600460205260409020549092509050801580610ed6575060ff821660009081526004602052604081208054909190610eba57610eba611ce2565b600091825260209091200154600160c01b900463ffffffff1686105b15610f635760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110065760ff831660009081526004602052604090208790610f8a600184611e5d565b81548110610f9a57610f9a611ce2565b600091825260209091200154600160c01b900463ffffffff1611610ff457610fc3600182611e5d565b858581518110610fd557610fd5611ce2565b602002602001019063ffffffff16908163ffffffff1681525050611006565b80610ffe81611e70565b915050610f65565b505050600101610e57565b50949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146110625760405162461bcd60e51b81526004016104a390611c08565b600061106d836108eb565b5090506110828261107d83611751565b6110c3565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b83518110156113015760008482815181106110f7576110f7611ce2565b0160209081015160f81c600081815260049092526040822054909250908190036111895760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111bd9086611398565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112069085611e5d565b8154811061121657611216611ce2565b6000918252602090912001805490915063ffffffff438116600160c01b90920416036112555780546001600160c01b031916604083901c1781556112f1565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110da9050565b50505050565b6040805180820190915260008082526020820152611323611810565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808061135257fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113b461182e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080806113ef57fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61143561184c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201825285815260208082018590528251808401909352858352820183905260009161151c611871565b60005b60028110156116d7576000611535826006611e87565b905084826002811061154957611549611ce2565b6020020151518361155b836000611e9e565b600c811061156b5761156b611ce2565b602002015284826002811061158257611582611ce2565b602002015160200151838260016115999190611e9e565b600c81106115a9576115a9611ce2565b60200201528382600281106115c0576115c0611ce2565b60200201515151836115d3836002611e9e565b600c81106115e3576115e3611ce2565b60200201528382600281106115fa576115fa611ce2565b6020020151516001602002015183611613836003611e9e565b600c811061162357611623611ce2565b602002015283826002811061163a5761163a611ce2565b60200201516020015160006002811061165557611655611ce2565b602002015183611666836004611e9e565b600c811061167657611676611ce2565b602002015283826002811061168d5761168d611ce2565b6020020151602001516001600281106116a8576116a8611ce2565b6020020151836116b9836005611e9e565b600c81106116c9576116c9611ce2565b60200201525060010161151f565b506116e0611890565b60006020826101808560086107d05a03fa905080806116fb57fe5b50806117415760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561177657506020820151155b15611794575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117d99190611d6c565b611803907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e5d565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061185f6118ae565b815260200161186c6118ae565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461180b57600080fd5b6000602082840312156118f557600080fd5b6118fe826118cc565b9392505050565b803560ff8116811461180b57600080fd5b60006020828403121561192857600080fd5b6118fe82611905565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196a5761196a611931565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199957611999611931565b604052919050565b600080604083850312156119b457600080fd5b6119bd836118cc565b915060208084013567ffffffffffffffff808211156119db57600080fd5b818601915086601f8301126119ef57600080fd5b813581811115611a0157611a01611931565b611a13601f8201601f19168501611970565b91508082528784828501011115611a2957600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a5957600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611a8a57600080fd5b611a9383611905565b946020939093013593505050565b600080600060608486031215611ab657600080fd5b611abf84611905565b9250602084013563ffffffff81168114611ad857600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b0057600080fd5b611b09856118cc565b9350610100601f1982011215611b1e57600080fd5b602085019250604061011f1982011215611b3757600080fd5b50610120840190509250925092565b600080600060408486031215611b5b57600080fd5b833567ffffffffffffffff80821115611b7357600080fd5b818601915086601f830112611b8757600080fd5b813581811115611b9657600080fd5b876020828501011115611ba857600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bfc57835163ffffffff1683529284019291840191600101611bda565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b03841681526000602084602084015260606040840152835180606085015260005b81811015611cbf57858101830151858201608001528201611ca3565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d0a57600080fd5b611d12611947565b82358152602083013560208201528091505092915050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b600082611d8957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d9f57600080fd5b611da7611947565b806040840185811115611db957600080fd5b845b81811015611dd3578035845260209384019301611dbb565b509095945050505050565b600060808284031215611df057600080fd5b611df8611947565b611e028484611d8e565b8152611e118460408501611d8e565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106ff576106ff611e47565b600081611e7f57611e7f611e47565b506000190190565b80820281158282048414176106ff576106ff611e47565b808201808211156106ff576106ff611e4756fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122032bb5054c7a2f6432e5be9a0f6a1c05e87838a89c3e8ae01d982bce76ffd2a6064736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9e545e3c0baab3e08cdfd552c960a1050f373042":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b03831681526000602060406020840152835180604085015260005b8181101561063c57858101830151858201606001528201610620565b506000606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212204991d74046566cb91b8d4cf7495532eedcea4124e157cfebcba924ceb7fba96464736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061103f5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806113bb5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082d0bf2d943ad14055e4e88fc955638b565f43d854afdcd3d6cd966fe8c2201a64736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788"}},"0xc5a5c42992decbae36851359345fe25997f5c42d":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x0000000000000000000000000000000000000000000000000000000000000001":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000032":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","0x0000000000000000000000000000000000000000000000000000000000000064":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000","0x0000000000000000000000000000000000000000000000000000000000000065":"0x00000000000000000000000000000000000000000000003635c9adc5dea00000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113b8565b610131565b60405161008791906114a7565b60405180910390f35b6100a361009e3660046114e3565b610245565b6040516100879190611641565b6100c36100be3660046116be565b6106c5565b604051610087919061170d565b6100e36100de3660046117a5565b6107d2565b604051610087919061189e565b6101036100fe366004611959565b610eea565b60405161008791906119bc565b61012361011e3660046119f4565b6110a8565b604051610087929190611a2b565b606081516001600160401b0381111561014c5761014c61134f565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b03166313542a4e8483815181106101a5576101a5611a4c565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a62565b82828151811061022b5761022b611a4c565b602090810291909101015260010161017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ab9190611a7b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190611a7b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190611a7b565b9050600086516001600160401b038111156103945761039461134f565b6040519080825280602002602001820160405280156103c757816020015b60608152602001906001900390816103b25790505b50905060005b87518110156106b95760008882815181106103ea576103ea611a4c565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa15801561044b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104739190810190611a98565b905080516001600160401b0381111561048e5761048e61134f565b6040519080825280602002602001820160405280156104d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104ac5790505b508484815181106104ec576104ec611a4c565b602002602001018190525060005b81518110156106ae576040518060600160405280876001600160a01b03166347b314e885858151811061052f5761052f611a4c565b60200260200101516040518263ffffffff1660e01b815260040161055591815260200190565b602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105969190611a7b565b6001600160a01b031681526020018383815181106105b6576105b6611a4c565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105e4576105e4611a4c565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611b28565b6001600160601b031681525085858151811061068257610682611a4c565b6020026020010151828151811061069b5761069b611a4c565b60209081029190910101526001016104fa565b5050506001016103cd565b50979650505050505050565b606081516001600160401b038111156106e0576106e061134f565b604051908082528060200260200182016040528015610709578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b031663296bb06484838151811061073957610739611a4c565b60200260200101516040518263ffffffff1660e01b815260040161075f91815260200190565b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611a7b565b8282815181106107b2576107b2611a4c565b6001600160a01b039092166020928302919091019091015260010161070f565b6107fd6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611a7b565b905061088e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108be908b9089908990600401611b51565b600060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109039190810190611b98565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290610935908b908b908b90600401611c4f565b600060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097a9190810190611b98565b6040820152856001600160401b038111156109975761099761134f565b6040519080825280602002602001820160405280156109ca57816020015b60608152602001906001900390816109b55790505b50606082015260005b60ff8116871115610dfb576000856001600160401b038111156109f8576109f861134f565b604051908082528060200260200182016040528015610a21578160200160208202803683370190505b5083606001518360ff1681518110610a3b57610a3b611a4c565b602002602001018190525060005b86811015610d055760008c6001600160a01b03166304ec63518a8a85818110610a7457610a74611a4c565b905060200201358e88600001518681518110610a9257610a92611a4c565b60200260200101516040518463ffffffff1660e01b8152600401610acf9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c78565b9050806001600160c01b0316600003610bbb5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bd057610bd0611a4c565b60016001600160c01b038516919093013560f81c1c82169091039050610cfc57856001600160a01b031663dd9846b98a8a85818110610c1157610c11611a4c565b905060200201358d8d8860ff16818110610c2d57610c2d611a4c565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ca1565b85606001518560ff1681518110610cc057610cc0611a4c565b60200260200101518481518110610cd957610cd9611a4c565b63ffffffff9092166020928302919091019091015282610cf881611cd4565b9350505b50600101610a49565b506000816001600160401b03811115610d2057610d2061134f565b604051908082528060200260200182016040528015610d49578160200160208202803683370190505b50905060005b82811015610dc05784606001518460ff1681518110610d7057610d70611a4c565b60200260200101518181518110610d8957610d89611a4c565b6020026020010151828281518110610da357610da3611a4c565b63ffffffff90921660209283029190910190910152600101610d4f565b508084606001518460ff1681518110610ddb57610ddb611a4c565b602002602001018190525050508080610df390611ced565b9150506109d3565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190611a7b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610e93908b908b908e90600401611d0c565b600060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed89190810190611b98565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f1c929190611d36565b600060405180830381865afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f619190810190611b98565b9050600084516001600160401b03811115610f7e57610f7e61134f565b604051908082528060200260200182016040528015610fa7578160200160208202803683370190505b50905060005b855181101561109e57866001600160a01b03166304ec6351878381518110610fd757610fd7611a4c565b602002602001015187868581518110610ff257610ff2611a4c565b60200260200101516040518463ffffffff1660e01b815260040161102f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c78565b6001600160c01b031682828151811061108b5761108b611a4c565b6020908102919091010152600101610fad565b5095945050505050565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106110e3576110e3611a4c565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e9061111f9088908690600401611d36565b600060405180830381865afa15801561113c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111649190810190611b98565b60008151811061117657611176611a4c565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190611c78565b6001600160c01b03169050600061121c8261123a565b90508161122a8a838a610245565b9550955050505050935093915050565b606060008061124884611306565b61ffff166001600160401b038111156112635761126361134f565b6040519080825280601f01601f19166020018201604052801561128d576020820181803683370190505b5090506000805b8251821080156112a5575061010081105b156112fc576001811b9350858416156112ec578060f81b8383815181106112ce576112ce611a4c565b60200101906001600160f81b031916908160001a9053508160010191505b6112f581611cd4565b9050611294565b5090949350505050565b6000805b82156113315761131b600184611d55565b909216918061132981611d68565b91505061130a565b92915050565b6001600160a01b038116811461134c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561138d5761138d61134f565b604052919050565b60006001600160401b038211156113ae576113ae61134f565b5060051b60200190565b600080604083850312156113cb57600080fd5b82356113d681611337565b91506020838101356001600160401b038111156113f257600080fd5b8401601f8101861361140357600080fd5b803561141661141182611395565b611365565b81815260059190911b8201830190838101908883111561143557600080fd5b928401925b8284101561145c57833561144d81611337565b8252928401929084019061143a565b80955050505050509250929050565b60008151808452602080850194506020840160005b8381101561149c57815187529582019590820190600101611480565b509495945050505050565b6020815260006114ba602083018461146b565b9392505050565b63ffffffff8116811461134c57600080fd5b80356114de816114c1565b919050565b6000806000606084860312156114f857600080fd5b833561150381611337565b92506020848101356001600160401b038082111561152057600080fd5b818701915087601f83011261153457600080fd5b8135818111156115465761154661134f565b611558601f8201601f19168501611365565b9150808252888482850101111561156e57600080fd5b8084840185840137600084828401015250809450505050611591604085016114d3565b90509250925092565b600082825180855260208086019550808260051b8401018186016000805b8581101561163357868403601f19018a52825180518086529086019086860190845b8181101561161e57835180516001600160a01b03168452898101518a8501526040908101516001600160601b031690840152928801926060909201916001016115da565b50509a86019a945050918401916001016115b8565b509198975050505050505050565b6020815260006114ba602083018461159a565b600082601f83011261166557600080fd5b8135602061167561141183611395565b8083825260208201915060208460051b87010193508684111561169757600080fd5b602086015b848110156116b3578035835291830191830161169c565b509695505050505050565b600080604083850312156116d157600080fd5b82356116dc81611337565b915060208301356001600160401b038111156116f757600080fd5b61170385828601611654565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561174e5783516001600160a01b031683529284019291840191600101611729565b50909695505050505050565b60008083601f84011261176c57600080fd5b5081356001600160401b0381111561178357600080fd5b6020830191508360208260051b850101111561179e57600080fd5b9250929050565b600080600080600080608087890312156117be57600080fd5b86356117c981611337565b955060208701356117d9816114c1565b945060408701356001600160401b03808211156117f557600080fd5b818901915089601f83011261180957600080fd5b81358181111561181857600080fd5b8a602082850101111561182a57600080fd5b60208301965080955050606089013591508082111561184857600080fd5b5061185589828a0161175a565b979a9699509497509295939492505050565b60008151808452602080850194506020840160005b8381101561149c57815163ffffffff168752958201959082019060010161187c565b6000602080835283516080828501526118ba60a0850182611867565b905081850151601f19808684030160408701526118d78383611867565b925060408701519150808684030160608701526118f48383611867565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561194b5784878303018452611939828751611867565b9588019593880193915060010161191f565b509998505050505050505050565b60008060006060848603121561196e57600080fd5b833561197981611337565b925060208401356001600160401b0381111561199457600080fd5b6119a086828701611654565b92505060408401356119b1816114c1565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561174e578351835292840192918401916001016119d8565b600080600060608486031215611a0957600080fd5b8335611a1481611337565b92506020840135915060408401356119b1816114c1565b828152604060208201526000611a44604083018461159a565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a7457600080fd5b5051919050565b600060208284031215611a8d57600080fd5b81516114ba81611337565b60006020808385031215611aab57600080fd5b82516001600160401b03811115611ac157600080fd5b8301601f81018513611ad257600080fd5b8051611ae061141182611395565b81815260059190911b82018301908381019087831115611aff57600080fd5b928401925b82841015611b1d57835182529284019290840190611b04565b979650505050505050565b600060208284031215611b3a57600080fd5b81516001600160601b03811681146114ba57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611b7e57600080fd5b8260051b8085606085013791909101606001949350505050565b60006020808385031215611bab57600080fd5b82516001600160401b03811115611bc157600080fd5b8301601f81018513611bd257600080fd5b8051611be061141182611395565b81815260059190911b82018301908381019087831115611bff57600080fd5b928401925b82841015611b1d578351611c17816114c1565b82529284019290840190611c04565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611c6f604083018486611c26565b95945050505050565b600060208284031215611c8a57600080fd5b81516001600160c01b03811681146114ba57600080fd5b600060208284031215611cb357600080fd5b81516114ba816114c1565b634e487b7160e01b600052601160045260246000fd5b600060018201611ce657611ce6611cbe565b5060010190565b600060ff821660ff8103611d0357611d03611cbe565b60010192915050565b604081526000611d20604083018587611c26565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a44604083018461146b565b8181038181111561133157611331611cbe565b600061ffff808316818103611d7f57611d7f611cbe565b600101939250505056fea26469706673582212202b3e36f430d5f7f12f8124a33676c0954c36bdaf4a71ac7e145cf85fb593480b64736f6c63430008180033","storage":{}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000097":"0x831f01b2aeb61d5d8c019704e62c25763057a8806c5c790bc8b4c99ee54ac8a7","0x000000000000000000000000000000000000000000000000000000000000009d":"0x000000000000000000000000000000000000000000000000000000000000000a","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000097":"0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512","0x0000000000000000000000000000000000000000000000000000000000000098":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000c9":"0xd65ac9700cec4e530497617d02afdf0d5de3ed18466aca1578edcbce0d40ee16","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82","0x3d2729dff03bf559da35a983e55814217363c2a44a7ea59bdf688ab8754ea49d":"0x0000000000000000000000000000000000000000000000000000000000000001","0x6e45a9ad53caf7293849c96e5070a246e20a7cc2986b7660b3fb63e30ab898fc":"0x0000000000000000000000000000000000000000000000000000000000000000","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":59,"balance":"0x21e0b9811a05e8a2e42","code":"0x","storage":{}},"0xf5059a5d33d5853360d16c683c16e67980206f36":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90001","0x0000000000000000000000000000000000000000000000000000000000000001":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000064":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000096":"0x0000000000000000000000000000000000000000000000000000000000000001","0x000000000000000000000000000000000000000000000000000000000000009c":"0x0000000000000000000000000000000000000000000000000000000000000003","0x000000000000000000000000000000000000000000000000000000000000009d":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000000000000000000000000000000000000000009e":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570","0x683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7":"0x00000000000000000000000000000000000000000000000000322af8000000c8","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c":"0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539d":"0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539e":"0x00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}}},"best_block_number":"0xf","blocks":[{"header":{"parentHash":"0x27a45216e52e1cce5ed8ba0bef0ff498a221b2a693ff03100f51390309e95a2c","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x8d84b6e57eea5cebd478c57565bc8e8556c60556da230df1887d170c27e90446","transactionsRoot":"0x7f64d28ebb635688fcb09945d9efa50f8e058df1d8806aba928b84f414abb468","receiptsRoot":"0x2abfbf241f9fd99bd314dd397107048bfd4461fe7f16f96ad609685bb8001921","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x8bf2e","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2462a14b","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x9","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x75f92751ed3d7537b5de53e3c0299383ac72b76e4a275e0fe031fa88fde7cf4e","s":"0x180b7ca9908cf48e1fcdfe0f76c20ef957de20eb35a2faf607e1430875f5370a","yParity":"0x1","hash":"0xece0fbed8cbdcfe3cf8a43c932bc41f5a9fe7f2dde7ab7cf4e99dc08ea3468f1"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x659d0a1c2c9b1aaa8dcd8df9a51c1ced49fc8d55bed17519f0c69bbbc6e471db","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x1e6af88237ba9d1d26619a87c55c1423fcd1d9bb46ed14871a504fb886710bd7","transactionsRoot":"0xb9725a655b3ed16e0857bddb0dd7791d82015cb79b02ade5afa7332e66caf989","receiptsRoot":"0x7b445d94dbda199096aa284c6fe0dddd8781d62c5a01e47a1123f39ac64a14c1","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002200040000000000100000000001000000000000000000000000040004000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000080000000000000000000000020000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0x1c0397","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x21073e5b","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2d","gas":"0x23a344","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60a06040523480156200001157600080fd5b506040516200208738038062002087833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f07620001806000396000818161030f01528181610466015281816105bf015281816109c501526110250152611f076000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118e3565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118e3565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611916565b61045b565b005b6101ca6101b5366004611916565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119a1565b6105b4565b61021b610200366004611a47565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611916565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a60565b6102a261029d366004611a77565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611aa1565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a77565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118e3565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611916565b6005602052600090815260409020805460019091015482565b6101846103da366004611ae9565b6109b8565b6103f26103ed366004611b46565b610e0b565b6040516101529190611bbe565b61018461040d3660046118e3565b60016020526000908152604090205481565b61021b61042d366004611a47565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119a1565b61101a565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c08565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c08565b6000610607836108eb565b50905061061482826110c3565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c7c565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c08565b6000610a30610a1936869003860160408701611cf8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610ab7576040805162461bcd60e51b8152602060048201526024810191909152600080516020611eb283398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b415760405162461bcd60e51b81526020600482015260476024820152600080516020611eb283398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc55760405162461bcd60e51b81526020600482015260426024820152600080516020611eb283398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1e918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d2a565b6040516020818303038152906040528051906020012060001c610c419190611d6c565b9050610cdb610c7a610c6583610c5f368a90038a0160408b01611cf8565b90611307565b610c7436899003890189611cf8565b90611398565b610c8261142d565b610cc4610cb585610c5f604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c74368a90038a018a611cf8565b610cd6368a90038a0160808b01611dde565b6114ed565b610d765760405162461bcd60e51b815260206004820152606c6024820152600080516020611eb283398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfa9160808a0190611e1d565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2857610e28611931565b604051908082528060200260200182016040528015610e51578160200160208202803683370190505b50905060005b84811015611011576000868683818110610e7357610e73611ce2565b919091013560f81c6000818152600460205260409020549092509050801580610ed6575060ff821660009081526004602052604081208054909190610eba57610eba611ce2565b600091825260209091200154600160c01b900463ffffffff1686105b15610f635760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110065760ff831660009081526004602052604090208790610f8a600184611e5d565b81548110610f9a57610f9a611ce2565b600091825260209091200154600160c01b900463ffffffff1611610ff457610fc3600182611e5d565b858581518110610fd557610fd5611ce2565b602002602001019063ffffffff16908163ffffffff1681525050611006565b80610ffe81611e70565b915050610f65565b505050600101610e57565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110625760405162461bcd60e51b81526004016104a390611c08565b600061106d836108eb565b5090506110828261107d83611751565b6110c3565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b83518110156113015760008482815181106110f7576110f7611ce2565b0160209081015160f81c600081815260049092526040822054909250908190036111895760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111bd9086611398565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112069085611e5d565b8154811061121657611216611ce2565b6000918252602090912001805490915063ffffffff438116600160c01b90920416036112555780546001600160c01b031916604083901c1781556112f1565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110da9050565b50505050565b6040805180820190915260008082526020820152611323611810565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808061135257fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113b461182e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080806113ef57fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61143561184c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201825285815260208082018590528251808401909352858352820183905260009161151c611871565b60005b60028110156116d7576000611535826006611e87565b905084826002811061154957611549611ce2565b6020020151518361155b836000611e9e565b600c811061156b5761156b611ce2565b602002015284826002811061158257611582611ce2565b602002015160200151838260016115999190611e9e565b600c81106115a9576115a9611ce2565b60200201528382600281106115c0576115c0611ce2565b60200201515151836115d3836002611e9e565b600c81106115e3576115e3611ce2565b60200201528382600281106115fa576115fa611ce2565b6020020151516001602002015183611613836003611e9e565b600c811061162357611623611ce2565b602002015283826002811061163a5761163a611ce2565b60200201516020015160006002811061165557611655611ce2565b602002015183611666836004611e9e565b600c811061167657611676611ce2565b602002015283826002811061168d5761168d611ce2565b6020020151602001516001600281106116a8576116a8611ce2565b6020020151836116b9836005611e9e565b600c81106116c9576116c9611ce2565b60200201525060010161151f565b506116e0611890565b60006020826101808560086107d05a03fa905080806116fb57fe5b50806117415760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561177657506020820151155b15611794575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117d99190611d6c565b611803907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e5d565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061185f6118ae565b815260200161186c6118ae565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461180b57600080fd5b6000602082840312156118f557600080fd5b6118fe826118cc565b9392505050565b803560ff8116811461180b57600080fd5b60006020828403121561192857600080fd5b6118fe82611905565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196a5761196a611931565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199957611999611931565b604052919050565b600080604083850312156119b457600080fd5b6119bd836118cc565b915060208084013567ffffffffffffffff808211156119db57600080fd5b818601915086601f8301126119ef57600080fd5b813581811115611a0157611a01611931565b611a13601f8201601f19168501611970565b91508082528784828501011115611a2957600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a5957600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611a8a57600080fd5b611a9383611905565b946020939093013593505050565b600080600060608486031215611ab657600080fd5b611abf84611905565b9250602084013563ffffffff81168114611ad857600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b0057600080fd5b611b09856118cc565b9350610100601f1982011215611b1e57600080fd5b602085019250604061011f1982011215611b3757600080fd5b50610120840190509250925092565b600080600060408486031215611b5b57600080fd5b833567ffffffffffffffff80821115611b7357600080fd5b818601915086601f830112611b8757600080fd5b813581811115611b9657600080fd5b876020828501011115611ba857600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bfc57835163ffffffff1683529284019291840191600101611bda565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b03841681526000602084602084015260606040840152835180606085015260005b81811015611cbf57858101830151858201608001528201611ca3565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d0a57600080fd5b611d12611947565b82358152602083013560208201528091505092915050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b600082611d8957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d9f57600080fd5b611da7611947565b806040840185811115611db957600080fd5b845b81811015611dd3578035845260209384019301611dbb565b509095945050505050565b600060808284031215611df057600080fd5b611df8611947565b611e028484611d8e565b8152611e118460408501611d8e565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106ff576106ff611e47565b600081611e7f57611e7f611e47565b506000190190565b80820281158282048414176106ff576106ff611e47565b808201808211156106ff576106ff611e4756fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122032bb5054c7a2f6432e5be9a0f6a1c05e87838a89c3e8ae01d982bce76ffd2a6064736f6c63430008180033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","r":"0x8cc81cb43ce2510e26207ab9a479eccc3d7516f64ad104862d887ee37365800a","s":"0x1ca67f4f4063f47de8e15457e8e9e12bade3529d045ba6355adfd0c6f9b818d6","yParity":"0x1","hash":"0xce5b5b87d690f0e404fbdbff7a168d4b80e353e0b6d9e8405858a895c302bcdf"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2e","gas":"0xd175","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x99a88ec400000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc490000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","r":"0xf6f8c1b7af5afdc924229a1a55b0a3aa38a97b3ce33b7a2d393ddab7bb1e40b6","s":"0x3774afb3268b01239ce98b6647801f7d320704d183ccc3adda235d903ec2b0a7","yParity":"0x1","hash":"0x0e82a05114b4f5500f0780cde6eb6db9ac17bed907d0bf541f1187d2c3d747f4"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x86f63f579b0459b5ac7667ae5594c6ca15ea0c9a8bcfa6fccccebf14b813f1f0","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xb8f750441a8747bad7912eacdae3a8746eaead7700d55acd1a45e62588d4b2eb","transactionsRoot":"0x80f433c61867b7e8969fca93fc188be65cfbf8764e33871a02fe914b60c73de4","receiptsRoot":"0xeafbb4ae0a016ba411da927630611cde1a13a965750116322399a0064f78d2f2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00002000000000000000000000000000400000000000000000000000020000000000000000000000000400000000000080400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000100000000000100000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000080000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x117c36","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e9959dd","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x26","gas":"0xb5c61","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xb66fc3f16156b377b16a95e4ea551ae0aaf62e9fbe1313de94c4c63027d37c66","s":"0x54fb14f5ae3312862147a0b3d4316765f93edf41862b17526fb436b08f31fda0","yParity":"0x1","hash":"0xbd7d5d3864c8406f75b4c00be61882ed8ea14af686ec047a447f9a3e6248d2fd"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x27","gas":"0xb5c61","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xb27c55378bf01e7d79ce7588dc2db3c194399cec863c2dc9152f49262d930e1c","s":"0x626e3afd84414562018828947ffb0dd903bd1f7942e68731b0d3473cb4f15e5","yParity":"0x1","hash":"0x035e03a62da66d8142ad00924a2580943aa598f94e17ea62d19cbf8b0d149f5d"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x67db1afa","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x60216db37c48029a8f153a732e8ce645a284a4bc0c9b52e52db91e73a255b3f4","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xa9cf2879da6d37e71d693bd1385bc651362580c8f5e5ac870b472ff4a8220485","transactionsRoot":"0x9e17f4e91d109ee558e254fcb31c56fa60d69632e4b472879c3e83637d61b963","receiptsRoot":"0x6193b1bab62c50d49e00132c6500726ec7726b982dc46349fe52157303fb9261","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000100000000000000000000000400080000000000400000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000100000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0xb","gasLimit":"0x1c9c380","gasUsed":"0x2247c","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x14842a3b","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x16","gas":"0x2f597","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x81984eadf6fa11b2fe04df40da0ededf673dc4ebd2f43a8f2dbb921b42352465","s":"0x203bdf4c4e3f2d641859308083f40e6e0a654b04aecc27dcaf0cdb166ff1e5f8","yParity":"0x1","hash":"0xe405e21ba26d4a3b0a72c85452048c4f59cb45eff93e20f4008c71fda12766b8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe0e1967d8b4b1396e060b1c509cd17e051183b57b7db7583079a50988dd92adc","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x565d96ef3c20a0fb41dbb2905e27ad03b917548e1c5ca7a6735b10830305efad","transactionsRoot":"0x76f76bfa4783e815b1ea9c749b356d1b2aef6c41c7427bc4d4b30e6aad834322","receiptsRoot":"0xf1fbe0e9be522e6a02e22330de7f182c63f415903e4d304cde617a52d11d5a52","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xc","gasLimit":"0x1c9c380","gasUsed":"0x46d01","timestamp":"0x67db1b05","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x10fe707c","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x37","gas":"0x5c087","maxFeePerGas":"0x26d56b1f","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5060405161046a38038061046a83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6103d7806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063bd90df701461003b578063fa534dc01461006b575b600080fd5b60005461004e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100793660046101b7565b61008e565b6040519015158152602001610062565b60008054604051829182916001600160a01b03909116906100bf908c908c908c908c908c908c908c906024016102ed565b60408051601f198184030181529181526020820180516001600160e01b03166303e94d3760e61b179052516100f4919061035c565b600060405180830381855afa9150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b50915091508161017f5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b604482015260640160405180910390fd5b808060200190518101906101939190610378565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a0312156101d257600080fd5b87359650602088013595506040880135945060608801356bffffffffffffffffffffffff198116811461020457600080fd5b93506080880135925060a088013567ffffffffffffffff8082111561022857600080fd5b818a0191508a601f83011261023c57600080fd5b81358181111561024e5761024e6101a1565b604051601f8201601f19908116603f01168101908382118183101715610276576102766101a1565b816040528281528d602084870101111561028f57600080fd5b82602086016020830137600060208483010152809650505050505060c0880135905092959891949750929550565b60005b838110156102d85781810151838201526020016102c0565b838111156102e7576000848401525b50505050565b8781528660208201528560408201526bffffffffffffffffffffffff198516606082015283608082015260e060a0820152600083518060e084015261010061033b82828601602089016102bd565b60c0840194909452601f01601f191691909101909101979650505050505050565b6000825161036e8184602087016102bd565b9190910192915050565b60006020828403121561038a57600080fd5b8151801515811461039a57600080fd5b939250505056fea2646970667358221220049cb1a9d093bf908d78fadd5abeac5e2ffa713794e5ee79f3d1ff78d06ce6c564736f6c634300080c0033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c","r":"0x27aa8c9412a69e596986e0efd189fe9052990b75fd3470d2282560f70a0b3bd4","s":"0x341938906137a8d5df82df33bf8dcbd88cdcb1aadc238f214a1fcf6471d84311","yParity":"0x1","hash":"0x59d8ae869d275f36dffcf34886dd30d19647d3d340a0fb658b5a19987679814e"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x3b70507ddbfe427c187f3f10d8792339a2d8cfaf82e4d19867cebab15a805d10","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xa4eb864e78b03ce111fd01ae5096a76ae33defcf5bf0cbd94a66f85a82f59c8d","transactionsRoot":"0x8a0ba81e5be3d9ea8b67e4aedec3e7ad97baf97f3dbd47df8e7b05762ec3acca","receiptsRoot":"0xaaeb737a4331fe7c15e217057a3fce283a796ddf656cbf536d1bfa9244b35077","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000040000000010000000400400000000000000000000000000000000000000000000000400000000000000c00010000000000000000000100000000000000000000000000000000002000000000000000010000000000000400000000000000000000000200000000020000080800000000000000000000000000400000000000000000000000000000000000000000000000000002000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000010000000400000000000000000000000000000000000000000000000000000000000000000004001000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x1afe99","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x345fa48b","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x22","gas":"0x69cc5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5060405161074538038061074583398101604081905261002f91610259565b60005b825181101561006d576100658382815181106100505761005061032f565b6020026020010151600161007e60201b60201c565b600101610032565b5061007781610150565b5050610345565b6001600160a01b0382166100ef5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101be5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e6565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025457600080fd5b919050565b6000806040838503121561026c57600080fd5b82516001600160401b038082111561028357600080fd5b818501915085601f83011261029757600080fd5b81516020828211156102ab576102ab610227565b8160051b604051601f19603f830116810181811086821117156102d0576102d0610227565b6040529283528183019350848101820192898411156102ee57600080fd5b948201945b83861015610313576103048661023d565b855294820194938201936102f3565b9650610322905087820161023d565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6103f1806103546000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082d0bf2d943ad14055e4e88fc955638b565f43d854afdcd3d6cd966fe8c2201a64736f6c634300081800330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x8f0738a5f373b54eaa9ed9862e003b6504f68211a538b0b868a0be6dd8c667f3","s":"0x351a06fbd02dfc6dbe37f3e41f48da1e19baa9807dbd36dc7863dfa66f5d6346","yParity":"0x1","hash":"0x80ad60ea39051d4db7ecd3383a51651b4017c9c2c7613e87784190be41ab3dc5"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x23","gas":"0x5beec","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b50610447806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610336565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead81600081518110610204576102046103fb565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b805161033181610226565b919050565b6000602080838503121561034957600080fd5b825167ffffffffffffffff8082111561036157600080fd5b818501915085601f83011261037557600080fd5b81518181111561038757610387610310565b8060051b604051601f19603f830116810181811085821117156103ac576103ac610310565b6040529182528482019250838101850191888311156103ca57600080fd5b938501935b828510156103ef576103e085610326565b845293850193928501926103cf565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d2a1dc3d5b3de166be22fce7e789ceac2302c613380087624652f3f48de1ed0864736f6c63430008180033","r":"0x1aa8b9851c142daa520d32aa356116c7beec667c4193c37cc7c74f962ea785fc","s":"0xdf78319ef53c71005a1be9e8c96295b0984f8f704edee8e6f85ce8d5e3a12dd","yParity":"0x0","hash":"0xf0aa3a0f536457cd460fd21d384d403fe8d176fdc3a797da7ec3d0ba7a43594a"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x24","gas":"0xb5c61","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x36608299fd01b85ce31bcb4fcc5bc7574b7604c6abab5de64a9e7757fe895a06","s":"0x4c94375d1bc0de220c08aec78c77b95f069f55de601b1cec7d17b49983e9dc60","yParity":"0x1","hash":"0x1d15ae6b01cf50f6bdf794782572de5debf9cb020716eec546a5c1a6694dd6d5"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x25","gas":"0xb5c61","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xaa92bdc2fea27caffa5c9ac432fc1736596e6871e184c56e09d7c594e4e8da43","s":"0x781a342dde8da23234b676c1fa520729863e5439cab876b6881ac3a35f82040f","yParity":"0x0","hash":"0x5dead20b4c3f813eda86ad0db00804216aad53392b85ccdd5cd198703ebdb975"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xee339008ac871962afd5a7e160bb491675bf7c59db2fcc55b3aeec9e3a53daa9","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xee354031feb1bf068341a19d9a593dcd042a3452fbb54823031054235114be37","transactionsRoot":"0x61500e3f4603ed215ca78fb848e44f63a0589bdf0e5668f45a0b15120ee78255","receiptsRoot":"0x2bb2403f19597d172b2cc8aa1599893e87e720894fcbc5e61d614f615aefd879","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x6c389","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x8ca6a","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007a6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033","r":"0x363c7f14241cdfc26b710a503266f0cc236dcfaa041c0a45ab3a72335504c51d","s":"0x351be9499103db1ea7cb3d1ca934c1ccd2ea035669a26d272fcf7f883fd82d72","yParity":"0x1","hash":"0x51e3b6ec5dce1003f9129d8ba4e6e8efe484f2334549a0618ce1c15d7e357f5f"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x81783d9d97c1968230d9d30cfdaa4670bb20c462f55b2c8713d06d119b5de3f7","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xf6854b16cb6f651e97a01205399601aaf0f3e1e13009e5467548c986747072f7","transactionsRoot":"0x01ace2e56ddb3a8bd5ac3d6b852eef1bcd21094286aa4b697194cb7cc3f27a65","receiptsRoot":"0xa68a67dce4aaa04d6edf9c1ac958dbcb7e48099173e10cf31b7f97c3ab596fc5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000400004000000000000000000000000000000000000000000000400000000000000400000000000000004000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020080000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xf","gasLimit":"0x1c9c380","gasUsed":"0x8bf2e","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xc51389c","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1c","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xef20cbe4386a5e2c3a61dea0f1bc86a5dafb9af35a2ba65f20ff3d604c92dc81","s":"0x7023303ac677b33a3199e9e5d77edd07b3bfc09895dbd6e01c41d21fdaf8672e","yParity":"0x0","hash":"0x2c639a7ffaf188e645bdd0f62c0f0b303593a3b144b04842affe5a3b4f3f4eef"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x48c9fcfff615bea7f00fb189309cc24c83bfcf62a57700ae85174e0d43903e4f","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x136b2bd83f8584246c69c32fb3ee0c3f482b2eb53f64fbc84c32614c533fbf7c","transactionsRoot":"0x5854846dae326eb2177335a3603957dd93898b2d4c0daa7ccd90f16668aa1687","receiptsRoot":"0xc87c8eeaba1ea83f582f32dcea095f087d84db1ca1026e2a16daf253f761a642","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000100080001000000000000000000000000000000000000004000000020000010000000000000002000000000000000000000200000400000001008008000010040000000000000000000000004000000001000000000000000000000000008000000000c0004000000000000000002000000000000000000000008440000000000000000000000000000000008000000020400000200000000000040000050000002008000001000000000020000000000000000001000000000000000000000000000000020000000000400000","difficulty":"0x0","number":"0xd","gasLimit":"0x1c9c380","gasUsed":"0x40605","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xfc10e3f","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x18","gas":"0x2b83f","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x8a45120d596e8b8ca8db2ecee7e4c0a7ad2aa5efcdd1e669d300be5f88f5b8ee","s":"0x79257c8c420e081280f3232c031d4ec00ae37acf61d3606f86b08d780ce31500","yParity":"0x1","hash":"0x915e9f826dc9f67ede8161a0b96a52b57472804f5d53d99568b80d3cdf6546ec"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x19","gas":"0x2fd25","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084eb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000","r":"0x8e742eeb3501951f3637ef8abf577c12b775568e211ef0dfbe56d2fb89698a02","s":"0x1a316d4767931d39813d98ddcf17a38c0889b59f73dd964d86c784d658734b48","yParity":"0x0","hash":"0xa1e0398c2dde583fe8c57690419d4f2ec2dee733e02fd823bd1dd6bdb141f9db"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x3460ed4e668313d51c98997b446741676477fab351d852f4b5790aa39abdb5a2","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xbc58ccbc1392da48435697f89fa6b2fe3ad0523fed1f40ccd7e3dffc0dbad682","transactionsRoot":"0xc8f7066a6e5c76697b3cbc5bb46916551757a86b0fc3d4b42189be42d4d6896d","receiptsRoot":"0x6a875adc6a5daab18b715d9b3131c68d0a25ac3427d19b0fdc4de81f06f5eaeb","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0x19e847","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x15d669b1","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x35","gas":"0x21ab88","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b50611dbf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113b8565b610131565b60405161008791906114a7565b60405180910390f35b6100a361009e3660046114e3565b610245565b6040516100879190611641565b6100c36100be3660046116be565b6106c5565b604051610087919061170d565b6100e36100de3660046117a5565b6107d2565b604051610087919061189e565b6101036100fe366004611959565b610eea565b60405161008791906119bc565b61012361011e3660046119f4565b6110a8565b604051610087929190611a2b565b606081516001600160401b0381111561014c5761014c61134f565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b03166313542a4e8483815181106101a5576101a5611a4c565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a62565b82828151811061022b5761022b611a4c565b602090810291909101015260010161017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ab9190611a7b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190611a7b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190611a7b565b9050600086516001600160401b038111156103945761039461134f565b6040519080825280602002602001820160405280156103c757816020015b60608152602001906001900390816103b25790505b50905060005b87518110156106b95760008882815181106103ea576103ea611a4c565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa15801561044b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104739190810190611a98565b905080516001600160401b0381111561048e5761048e61134f565b6040519080825280602002602001820160405280156104d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104ac5790505b508484815181106104ec576104ec611a4c565b602002602001018190525060005b81518110156106ae576040518060600160405280876001600160a01b03166347b314e885858151811061052f5761052f611a4c565b60200260200101516040518263ffffffff1660e01b815260040161055591815260200190565b602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105969190611a7b565b6001600160a01b031681526020018383815181106105b6576105b6611a4c565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105e4576105e4611a4c565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611b28565b6001600160601b031681525085858151811061068257610682611a4c565b6020026020010151828151811061069b5761069b611a4c565b60209081029190910101526001016104fa565b5050506001016103cd565b50979650505050505050565b606081516001600160401b038111156106e0576106e061134f565b604051908082528060200260200182016040528015610709578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b031663296bb06484838151811061073957610739611a4c565b60200260200101516040518263ffffffff1660e01b815260040161075f91815260200190565b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611a7b565b8282815181106107b2576107b2611a4c565b6001600160a01b039092166020928302919091019091015260010161070f565b6107fd6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611a7b565b905061088e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108be908b9089908990600401611b51565b600060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109039190810190611b98565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290610935908b908b908b90600401611c4f565b600060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097a9190810190611b98565b6040820152856001600160401b038111156109975761099761134f565b6040519080825280602002602001820160405280156109ca57816020015b60608152602001906001900390816109b55790505b50606082015260005b60ff8116871115610dfb576000856001600160401b038111156109f8576109f861134f565b604051908082528060200260200182016040528015610a21578160200160208202803683370190505b5083606001518360ff1681518110610a3b57610a3b611a4c565b602002602001018190525060005b86811015610d055760008c6001600160a01b03166304ec63518a8a85818110610a7457610a74611a4c565b905060200201358e88600001518681518110610a9257610a92611a4c565b60200260200101516040518463ffffffff1660e01b8152600401610acf9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c78565b9050806001600160c01b0316600003610bbb5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bd057610bd0611a4c565b60016001600160c01b038516919093013560f81c1c82169091039050610cfc57856001600160a01b031663dd9846b98a8a85818110610c1157610c11611a4c565b905060200201358d8d8860ff16818110610c2d57610c2d611a4c565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ca1565b85606001518560ff1681518110610cc057610cc0611a4c565b60200260200101518481518110610cd957610cd9611a4c565b63ffffffff9092166020928302919091019091015282610cf881611cd4565b9350505b50600101610a49565b506000816001600160401b03811115610d2057610d2061134f565b604051908082528060200260200182016040528015610d49578160200160208202803683370190505b50905060005b82811015610dc05784606001518460ff1681518110610d7057610d70611a4c565b60200260200101518181518110610d8957610d89611a4c565b6020026020010151828281518110610da357610da3611a4c565b63ffffffff90921660209283029190910190910152600101610d4f565b508084606001518460ff1681518110610ddb57610ddb611a4c565b602002602001018190525050508080610df390611ced565b9150506109d3565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190611a7b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610e93908b908b908e90600401611d0c565b600060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed89190810190611b98565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f1c929190611d36565b600060405180830381865afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f619190810190611b98565b9050600084516001600160401b03811115610f7e57610f7e61134f565b604051908082528060200260200182016040528015610fa7578160200160208202803683370190505b50905060005b855181101561109e57866001600160a01b03166304ec6351878381518110610fd757610fd7611a4c565b602002602001015187868581518110610ff257610ff2611a4c565b60200260200101516040518463ffffffff1660e01b815260040161102f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c78565b6001600160c01b031682828151811061108b5761108b611a4c565b6020908102919091010152600101610fad565b5095945050505050565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106110e3576110e3611a4c565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e9061111f9088908690600401611d36565b600060405180830381865afa15801561113c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111649190810190611b98565b60008151811061117657611176611a4c565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190611c78565b6001600160c01b03169050600061121c8261123a565b90508161122a8a838a610245565b9550955050505050935093915050565b606060008061124884611306565b61ffff166001600160401b038111156112635761126361134f565b6040519080825280601f01601f19166020018201604052801561128d576020820181803683370190505b5090506000805b8251821080156112a5575061010081105b156112fc576001811b9350858416156112ec578060f81b8383815181106112ce576112ce611a4c565b60200101906001600160f81b031916908160001a9053508160010191505b6112f581611cd4565b9050611294565b5090949350505050565b6000805b82156113315761131b600184611d55565b909216918061132981611d68565b91505061130a565b92915050565b6001600160a01b038116811461134c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561138d5761138d61134f565b604052919050565b60006001600160401b038211156113ae576113ae61134f565b5060051b60200190565b600080604083850312156113cb57600080fd5b82356113d681611337565b91506020838101356001600160401b038111156113f257600080fd5b8401601f8101861361140357600080fd5b803561141661141182611395565b611365565b81815260059190911b8201830190838101908883111561143557600080fd5b928401925b8284101561145c57833561144d81611337565b8252928401929084019061143a565b80955050505050509250929050565b60008151808452602080850194506020840160005b8381101561149c57815187529582019590820190600101611480565b509495945050505050565b6020815260006114ba602083018461146b565b9392505050565b63ffffffff8116811461134c57600080fd5b80356114de816114c1565b919050565b6000806000606084860312156114f857600080fd5b833561150381611337565b92506020848101356001600160401b038082111561152057600080fd5b818701915087601f83011261153457600080fd5b8135818111156115465761154661134f565b611558601f8201601f19168501611365565b9150808252888482850101111561156e57600080fd5b8084840185840137600084828401015250809450505050611591604085016114d3565b90509250925092565b600082825180855260208086019550808260051b8401018186016000805b8581101561163357868403601f19018a52825180518086529086019086860190845b8181101561161e57835180516001600160a01b03168452898101518a8501526040908101516001600160601b031690840152928801926060909201916001016115da565b50509a86019a945050918401916001016115b8565b509198975050505050505050565b6020815260006114ba602083018461159a565b600082601f83011261166557600080fd5b8135602061167561141183611395565b8083825260208201915060208460051b87010193508684111561169757600080fd5b602086015b848110156116b3578035835291830191830161169c565b509695505050505050565b600080604083850312156116d157600080fd5b82356116dc81611337565b915060208301356001600160401b038111156116f757600080fd5b61170385828601611654565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561174e5783516001600160a01b031683529284019291840191600101611729565b50909695505050505050565b60008083601f84011261176c57600080fd5b5081356001600160401b0381111561178357600080fd5b6020830191508360208260051b850101111561179e57600080fd5b9250929050565b600080600080600080608087890312156117be57600080fd5b86356117c981611337565b955060208701356117d9816114c1565b945060408701356001600160401b03808211156117f557600080fd5b818901915089601f83011261180957600080fd5b81358181111561181857600080fd5b8a602082850101111561182a57600080fd5b60208301965080955050606089013591508082111561184857600080fd5b5061185589828a0161175a565b979a9699509497509295939492505050565b60008151808452602080850194506020840160005b8381101561149c57815163ffffffff168752958201959082019060010161187c565b6000602080835283516080828501526118ba60a0850182611867565b905081850151601f19808684030160408701526118d78383611867565b925060408701519150808684030160608701526118f48383611867565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561194b5784878303018452611939828751611867565b9588019593880193915060010161191f565b509998505050505050505050565b60008060006060848603121561196e57600080fd5b833561197981611337565b925060208401356001600160401b0381111561199457600080fd5b6119a086828701611654565b92505060408401356119b1816114c1565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561174e578351835292840192918401916001016119d8565b600080600060608486031215611a0957600080fd5b8335611a1481611337565b92506020840135915060408401356119b1816114c1565b828152604060208201526000611a44604083018461159a565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a7457600080fd5b5051919050565b600060208284031215611a8d57600080fd5b81516114ba81611337565b60006020808385031215611aab57600080fd5b82516001600160401b03811115611ac157600080fd5b8301601f81018513611ad257600080fd5b8051611ae061141182611395565b81815260059190911b82018301908381019087831115611aff57600080fd5b928401925b82841015611b1d57835182529284019290840190611b04565b979650505050505050565b600060208284031215611b3a57600080fd5b81516001600160601b03811681146114ba57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611b7e57600080fd5b8260051b8085606085013791909101606001949350505050565b60006020808385031215611bab57600080fd5b82516001600160401b03811115611bc157600080fd5b8301601f81018513611bd257600080fd5b8051611be061141182611395565b81815260059190911b82018301908381019087831115611bff57600080fd5b928401925b82841015611b1d578351611c17816114c1565b82529284019290840190611c04565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611c6f604083018486611c26565b95945050505050565b600060208284031215611c8a57600080fd5b81516001600160c01b03811681146114ba57600080fd5b600060208284031215611cb357600080fd5b81516114ba816114c1565b634e487b7160e01b600052601160045260246000fd5b600060018201611ce657611ce6611cbe565b5060010190565b600060ff821660ff8103611d0357611d03611cbe565b60010192915050565b604081526000611d20604083018587611c26565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a44604083018461146b565b8181038181111561133157611331611cbe565b600061ffff808316818103611d7f57611d7f611cbe565b600101939250505056fea26469706673582212202b3e36f430d5f7f12f8124a33676c0954c36bdaf4a71ac7e145cf85fb593480b64736f6c63430008180033","r":"0xdd14982b8da9e51d4f4dfdf14005ecff4763b68950b3fbfa160cc6054354c563","s":"0x1676a8d2b0520745b1ef1e6721aee1a27f51af37c20907104639ade1d922c449","yParity":"0x0","hash":"0x9d63d02dcfd8e6a02a790d9642c049e0c622089ff1dc818e8f3c4bffb2c9da06"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x37780f8f8331e8d2be2d6824e211856bb4b85c19d1af3a2e097b73e757a721c4","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xeab3f3145b5a50f2c83a49cd9dd08f69e0107451461ea428513e0855b4178721","transactionsRoot":"0xcb17daa3e9d4c1d07a569dd2b7fafd4b2986dd1e054e7c97321e97c5dc86c5ee","receiptsRoot":"0xe72d4ed8032af8cf0212e484472e7615c1788116d114ebca480588d4776efe41","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00002000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000080000200000000000000000000000000400000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100000000000000000000000400000000000000000080008000002000000080000000000000000000000000000400000000000000000000000000000000000000000020000000000000020000040000000000000000000000000000000000000000000000000080080000008000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x418634","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x244377f1","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x29","gas":"0x159870","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60a060405234801561001057600080fd5b506040516113a63803806113a683398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161123a61016c60003960008181610142015281816102750152818161040f01526107d6015261123a6000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610eac565b610268565b6040516100d89190610f28565b60405180910390f35b6100f46100ef366004610f9c565b6103be565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fcf565b610404565b005b6100f4610138366004610fea565b610528565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fcf565b6105ae565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610f9c565b6105f5565b6040516100d8919061102d565b61018f6101e1366004610f9c565b610754565b6101286101f4366004610eac565b6107cb565b610201600081565b6040519081526020016100d8565b61024061021d366004611065565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fcf565b6108d5565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b29061108f565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d6611102565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103b357600085858381811061032157610321611118565b919091013560f81c60008181526003602052604081205491935090915081900361035d5760405162461bcd60e51b81526004016102b29061112e565b6000610368836108f4565b905061037f898461037a600185611199565b6109f1565b8085858151811061039257610392611118565b63ffffffff9290921660209283029190910190910152505050600101610305565b5090505b9392505050565b60408051808201909152600080825260208201526103dc8383610a7b565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461044c5760405162461bcd60e51b81526004016102b29061108f565b60ff8116600090815260036020526040902054156104c65760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061057557610575611118565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105cb82610ad3565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b606060006106038484610b15565b905060008163ffffffff1667ffffffffffffffff81111561062657610626611102565b60405190808252806020026020018201604052801561064f578160200160208202803683370190505b50905060005b8263ffffffff1681101561074b5761066e868287610c4a565b82828151811061068057610680611118565b6020026020010181815250506000801b8282815181106106a2576106a2611118565b6020026020010151036107435760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b600101610655565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff841690811061079257610792611118565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108135760405162461bcd60e51b81526004016102b29061108f565b60005b818110156108cf57600083838381811061083257610832611118565b919091013560f81c60008181526003602052604081205491935090915081900361086e5760405162461bcd60e51b81526004016102b29061112e565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff169061089c84610d21565b905060006108aa8583610d5b565b90508089146108be576108be8186856109f1565b505060019093019250610816915050565b50505050565b60006108e082610ad3565b54600160201b900463ffffffff1692915050565b60008061090083610ad3565b805490915060009061092090600160201b900463ffffffff1660016111bd565b905061092d848383610d85565b60ff841660009081526002602052604081209061094b600184611199565b63ffffffff168152602081019190915260400160009081205490036103b75760ff8416600090815260026020526040812090610988600184611199565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b60006109fd8383610a7b565b9050610a0b83838387610e23565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610aac6001836111da565b81548110610abc57610abc611118565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610af36001836111da565b81548110610b0357610b03611118565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bbd5760ff85166000908152600360205260408120610b4d6001846111da565b81548110610b5d57610b5d611118565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610baa576020015192506103fe915050565b5080610bb5816111ed565b915050610b2a565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d155760ff8616600090815260026020908152604080832063ffffffff891684529091528120610ca46001846111da565b81548110610cb457610cb4611118565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d02576020015192506103b7915050565b5080610d0d816111ed565b915050610c70565b50600095945050505050565b600080610d2d83610ad3565b8054909150600090610d4e90600190600160201b900463ffffffff16611199565b90506103b7848383610d85565b600080610d688484610a7b565b6001810154909150610d7d8585846000610e23565b949350505050565b815463ffffffff438116911603610dba57815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e4057600182018190556108cf565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ec157600080fd5b83359250602084013567ffffffffffffffff80821115610ee057600080fd5b818601915086601f830112610ef457600080fd5b813581811115610f0357600080fd5b876020828501011115610f1557600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835163ffffffff1683529284019291840191600101610f44565b50909695505050505050565b803560ff81168114610f8357600080fd5b919050565b803563ffffffff81168114610f8357600080fd5b60008060408385031215610faf57600080fd5b610fb883610f72565b9150610fc660208401610f88565b90509250929050565b600060208284031215610fe157600080fd5b6103b782610f72565b600080600060608486031215610fff57600080fd5b61100884610f72565b925061101660208501610f88565b915061102460408501610f88565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835183529284019291840191600101611049565b6000806040838503121561107857600080fd5b61108183610f72565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156111b6576111b6611183565b5092915050565b63ffffffff8181168382160190808211156111b6576111b6611183565b818103818111156103fe576103fe611183565b6000816111fc576111fc611183565b50600019019056fea2646970667358221220af8de4d3486e0b797de225bb92c1953126cca4d69399c73bf6885ce4485dc52464736f6c63430008180033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","r":"0xc6dca5dd860e8720658be71db2141d7c525cc30e8b80d9d8f3bbe62bc7642410","s":"0x345fe864507e17cf05bbc98546759080bdb4de5de7f0a0e55f7f8362cac0f64f","yParity":"0x1","hash":"0xbeced7d5f4e7a504b477c9fd0098a017da0c8e5b69cd0c85f79710fc40857447"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2a","gas":"0xd175","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x99a88ec400000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137780000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","r":"0x48b6c5435e09e45fc2ba3923e96f1579246e0b0cfb335fe229585b5e342746e7","s":"0x15741ad5c0ad3b3abd2ad71d46552f3ec131dc417eb92382f8f3e3ea5bdc58c1","yParity":"0x1","hash":"0x827ffa4ca4cea822e05fb27b290eee847860bb15431bdace00adf814eaed3bac"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2b","gas":"0x3e0583","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60c06040523480156200001157600080fd5b506040516200389f3803806200389f833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a051613796620001096000396000818161037a015281816106340152818161096701528181610ccf015281816110f0015281816116d0015281816117d2015281816118eb0152611cad0152600081816105290152611e6e01526137966000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612bca565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612be5565b610597565b604051610217929190612c0f565b61025461024f366004612c49565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612cc4565b610632565b005b61029461028f366004612d85565b610959565b604051610217929190612e25565b6102b56102b0366004612e4a565b610c15565b6040516102179190612e76565b61020d6102d0366004612bca565b60ff1660009081526003602052604090205490565b61020d6102f3366004612e4a565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612e4a565b610cb4565b61020d670de0b6b3a764000081565b61027f610345366004612f7f565b610ccd565b61035d610358366004612d85565b6110e3565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc36600461303b565b611240565b604051610217919061308d565b61039c6103fc366004612be5565b6114f5565b61041461040f3660046130cb565b61152d565b60405161021791906130fe565b61043461042f366004612be5565b6115c5565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612be5565b61163f565b61027f61048236600461314a565b6116ce565b61027f610495366004613174565b6117c7565b6102546104a8366004612bca565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004613240565b6118e9565b6102546104e436600461328d565b6119dd565b6102546104f7366004612bca565b611a5b565b61050f61050a3660046132c9565b611aae565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613305565b611ac3565b61041461056c366004612e4a565b611b58565b61025461057f3660046132c9565b611c41565b61027f610592366004613347565b611ca2565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b8152600401610611906133a4565b60405180910390fd5b60006106268585611e0d565b509250505b5092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906133f5565b6001600160a01b0316336001600160a01b0316146106e45760405162461bcd60e51b815260040161061190613412565b846107008160ff16600090815260016020526040902054151590565b61071c5760405162461bcd60e51b8152600401610611906133a4565b8380610792576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108075760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561094e578585828181106108355761083561348e565b905060200201602081019061084a91906134a4565b8289898481811061085d5761085d61348e565b90506020020135815481106108745761087461348e565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108dd576108dd61348e565b90506020020135815481106108f4576108f461348e565b6000918252602090912001546001600160a01b031688888581811061091b5761091b61348e565b905060200201602081019061093091906134a4565b60405161093e929190612c0f565b60405180910390a260010161081b565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109a45760405162461bcd60e51b8152600401610611906134bf565b6000836001600160401b038111156109be576109be612eee565b6040519080825280602002602001820160405280156109e7578160200160208202803683370190505b5090506000846001600160401b03811115610a0457610a04612eee565b604051908082528060200260200182016040528015610a2d578160200160208202803683370190505b50905060005b85811015610c07576000878783818110610a4f57610a4f61348e565b919091013560f81c60008181526001602052604090205490925015159050610ad75760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610ae4838d611e0d565b9150915080610b815760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b8e8c8585612001565b905082878681518110610ba357610ba361348e565b60200260200101906001600160601b031690816001600160601b031681525050610bcd8482612280565b868681518110610bdf57610bdf61348e565b6001600160601b0390921660209283029190910190910152505060019092019150610a339050565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610ca7576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c4e565b5050505090505b92915050565b600080610cc18484611b58565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f91906133f5565b6001600160a01b0316336001600160a01b031614610d7f5760405162461bcd60e51b815260040161061190613412565b81610d9b8160ff16600090815260016020526040902054151590565b610db75760405162461bcd60e51b8152600401610611906133a4565b815180610e2c5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110da578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e8b57610e8b61348e565b602002602001015181548110610ea357610ea361348e565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f0157610f0161348e565b602002602001015181548110610f1957610f1961348e565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f5990600190613547565b81548110610f6957610f6961348e565b9060005260206000200183878381518110610f8657610f8661348e565b602002602001015181548110610f9e57610f9e61348e565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610ff157610ff161355a565b6000828152602081208201600019908101919091550190558154829061101990600190613547565b815481106110295761102961348e565b9060005260206000200160009054906101000a90046001600160a01b03168287838151811061105a5761105a61348e565b6020026020010151815481106110725761107261348e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110b0576110b061355a565b600082815260209020810160001990810180546001600160a01b0319169055019055600101610e4b565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461112d5760405162461bcd60e51b8152600401610611906134bf565b6000805b8381101561123657600085858381811061114d5761114d61348e565b919091013560f81c600081815260016020526040902054909250151590506111dd5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b6000806111ea838b611e0d565b915091508061120c5760009150600160ff84161b6001600160c01b0386161794505b60006112198a8585612001565b90506112258482612280565b505060019093019250611131915050565b5095945050505050565b60606000826001600160401b0381111561125c5761125c612eee565b604051908082528060200260200182016040528015611285578160200160208202803683370190505b50905060005b838110156114ea5760008585838181106112a7576112a761348e565b919091013560f81c600081815260016020526040902054909250151590506113465760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061136f5761136f61348e565b60009182526020909120015463ffffffff16111561141b5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156114df5760ff8316600090815260016020819052604090912063ffffffff8b169161145f8486613547565b6114699190613547565b815481106114795761147961348e565b60009182526020909120015463ffffffff16116114d757600161149c8284613547565b6114a69190613547565b8585815181106114b8576114b861348e565b602002602001019063ffffffff16908163ffffffff16815250506114df565b600101611430565b50505060010161128b565b5090505b9392505050565b6004602052816000526040600020818154811061151157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115725761157261348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115fd576115fd61348e565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600190529190912080548390811061167c5761167c61348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175091906133f5565b6001600160a01b0316336001600160a01b0316146117805760405162461bcd60e51b815260040161061190613412565b8161179c8160ff16600090815260016020526040902054151590565b6117b85760405162461bcd60e51b8152600401610611906133a4565b6117c283836123f7565b505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461180f5760405162461bcd60e51b8152600401610611906134bf565b60005b818110156118e357600083838381811061182e5761182e61348e565b919091013560f81c600081815260016020526040902054909250151590506118be5760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118cc86836000612001565b90506118d88282612280565b505050600101611812565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b91906133f5565b6001600160a01b0316336001600160a01b03161461199b5760405162461bcd60e51b815260040161061190613412565b816119b78160ff16600090815260016020526040902054151590565b6119d35760405162461bcd60e51b8152600401610611906133a4565b6117c28383612460565b60ff83166000908152600160205260408120805482919084908110611a0457611a0461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cc1818561288e565b60ff81166000908152600160208190526040822080549091611a7c91613547565b81548110611a8c57611a8c61348e565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611abb848484612a08565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611af457611af461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b4b818661288e565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611bb5579150610cae9050565b600085815260026020908152604080832060ff881684529091529020611bdc600184613547565b81548110611bec57611bec61348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cae915050565b600083815260026020908152604080832060ff861684529091528120611c68858585612a08565b63ffffffff1681548110611c7e57611c7e61348e565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611cea5760405162461bcd60e51b8152600401610611906134bf565b60ff831660009081526001602052604090205415611d685760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611d728382612460565b611d7c83836123f7565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e2c8660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611ea1928c9201613570565b600060405180830381865afa158015611ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee691908101906135d1565b905060005b83811015611fcd5760ff89166000908152600360205260409020805482908110611f1757611f1761348e565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f6557611f6561348e565b60200260200101511115611fc557670de0b6b3a764000083602001516001600160601b0316838381518110611f9c57611f9c61348e565b6020026020010151611fae9190613661565b611fb89190613678565b611fc2908661369a565b94505b600101611eeb565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908082036120c757600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612226565b600086815260026020908152604080832060ff8916845290915281206120ee600184613547565b815481106120fe576120fe61348e565b600091825260209091200180546001600160601b03600160401b909104811694509091508516830361213657600093505050506114ee565b805463ffffffff43811691160361216e578054600160401b600160a01b031916600160401b6001600160601b03871602178155612224565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122768285612b6e565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122a49084613547565b815481106122b4576122b461348e565b906000526020600020019050836000036122e25754600160401b90046001600160601b03169150610cae9050565b805460009061230190600160401b90046001600160601b031686612b86565b825490915063ffffffff43811691160361233c578154600160401b600160a01b031916600160401b6001600160601b038316021782556123ee565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124c55760405162461bcd60e51b8152602060048201526038602482015260008051602061374183398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906124e883836136ba565b11156125585760405162461bcd60e51b8152602060048201526045602482015260008051602061374183398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128875760005b61257082846136ba565b811015612646578482815181106125895761258961348e565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125c8576125c861348e565b6000918252602090912001546001600160a01b03160361263e5760405162461bcd60e51b815260206004820152603d602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b600101612566565b50600084828151811061265b5761265b61348e565b6020026020010151602001516001600160601b0316116126e05760405162461bcd60e51b8152602060048201526046602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff8516600090815260036020526040902084518590839081106127065761270661348e565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061276b5761276b61348e565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404908690849081106127e2576127e261348e565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061283f5761283f61348e565b60200260200101516000015186848151811061285d5761285d61348e565b602002602001015160200151604051612877929190612c0f565b60405180910390a260010161255b565b5050505050565b816000015163ffffffff168163ffffffff1610156129335760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129595750816020015163ffffffff168163ffffffff16105b612a045760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612aa957600086815260026020908152604080832060ff89168452909152902063ffffffff851690612a5c600184613547565b81548110612a6c57612a6c61348e565b60009182526020909120015463ffffffff1611612a9757612a8e600182613547565b925050506114ee565b80612aa1816136cd565b915050612a27565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006114ee6001600160601b038085169084166136e4565b600080821215612baa57612b9982613704565b612ba39084613720565b9050610cae565b612ba3828461369a565b803560ff81168114612bc557600080fd5b919050565b600060208284031215612bdc57600080fd5b6114ee82612bb4565b60008060408385031215612bf857600080fd5b612c0183612bb4565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612c4657600080fd5b50565b60008060408385031215612c5c57600080fd5b612c6583612bb4565b91506020830135612c7581612c31565b809150509250929050565b60008083601f840112612c9257600080fd5b5081356001600160401b03811115612ca957600080fd5b6020830191508360208260051b8501011115611ffa57600080fd5b600080600080600060608688031215612cdc57600080fd5b612ce586612bb4565b945060208601356001600160401b0380821115612d0157600080fd5b612d0d89838a01612c80565b90965094506040880135915080821115612d2657600080fd5b50612d3388828901612c80565b969995985093965092949392505050565b60008083601f840112612d5657600080fd5b5081356001600160401b03811115612d6d57600080fd5b602083019150836020828501011115611ffa57600080fd5b60008060008060608587031215612d9b57600080fd5b8435612da681612c31565b93506020850135925060408501356001600160401b03811115612dc857600080fd5b612dd487828801612d44565b95989497509550505050565b60008151808452602080850194506020840160005b83811015612e1a5781516001600160601b031687529582019590820190600101612df5565b509495945050505050565b604081526000612e386040830185612de0565b82810360208401526123ee8185612de0565b60008060408385031215612e5d57600080fd5b82359150612e6d60208401612bb4565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257612ecf83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612e92565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2657612f26612eee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612eee565b604052919050565b60006001600160401b03821115612f7557612f75612eee565b5060051b60200190565b60008060408385031215612f9257600080fd5b612f9b83612bb4565b91506020808401356001600160401b03811115612fb757600080fd5b8401601f81018613612fc857600080fd5b8035612fdb612fd682612f5c565b612f2c565b81815260059190911b82018301908381019088831115612ffa57600080fd5b928401925b8284101561301857833582529284019290840190612fff565b80955050505050509250929050565b803563ffffffff81168114612bc557600080fd5b60008060006040848603121561305057600080fd5b61305984613027565b925060208401356001600160401b0381111561307457600080fd5b61308086828701612d44565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257835163ffffffff16835292840192918401916001016130a9565b6000806000606084860312156130e057600080fd5b6130e984612bb4565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cae565b80356001600160601b0381168114612bc557600080fd5b6000806040838503121561315d57600080fd5b61316683612bb4565b9150612e6d60208401613133565b60008060006040848603121561318957600080fd5b8335925060208401356001600160401b0381111561307457600080fd5b600082601f8301126131b757600080fd5b813560206131c7612fd683612f5c565b82815260069290921b840181019181810190868411156131e657600080fd5b8286015b8481101561323557604081890312156132035760008081fd5b61320b612f04565b813561321681612c31565b8152613223828601613133565b818601528352918301916040016131ea565b509695505050505050565b6000806040838503121561325357600080fd5b61325c83612bb4565b915060208301356001600160401b0381111561327757600080fd5b613283858286016131a6565b9150509250929050565b6000806000606084860312156132a257600080fd5b6132ab84612bb4565b92506132b960208501613027565b9150604084013590509250925092565b6000806000606084860312156132de57600080fd5b833592506132ee60208501612bb4565b91506132fc60408501613027565b90509250925092565b6000806000806080858703121561331b57600080fd5b61332485612bb4565b935061333260208601613027565b93969395505050506040820135916060013590565b60008060006060848603121561335c57600080fd5b61336584612bb4565b925061337360208501613133565b915060408401356001600160401b0381111561338e57600080fd5b61339a868287016131a6565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561340757600080fd5b81516114ee81612c31565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156134b657600080fd5b6114ee82613133565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cae57610cae613531565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b038086168452602060406020860152828654808552606087019150876000526020600020945060005b818110156135c35785548516835260019586019592840192016135a5565b509098975050505050505050565b600060208083850312156135e457600080fd5b82516001600160401b038111156135fa57600080fd5b8301601f8101851361360b57600080fd5b8051613619612fd682612f5c565b81815260059190911b8201830190838101908783111561363857600080fd5b928401925b828410156136565783518252928401929084019061363d565b979650505050505050565b8082028115828204841417610cae57610cae613531565b60008261369557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160601b0381811683821601908082111561062b5761062b613531565b80820180821115610cae57610cae613531565b6000816136dc576136dc613531565b506000190190565b818103600083128015838313168383128216171561062b5761062b613531565b6000600160ff1b820161371957613719613531565b5060000390565b6001600160601b0382811682821603908082111561062b5761062b61353156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122086a228217be3aa4346ddc514699a0ca7893ec8b64cbf2023e3b1369fe2efcf1164736f6c63430008180033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","r":"0x8b4fca287610e6c3e85240d8ccf96fcb6da0ecf9378aacd71d7d7a9c3459bf0d","s":"0x7510ebad4a5aa84ae69db3414b19276ba9f6e98d9387ceb879129f5e744dce2","yParity":"0x0","hash":"0x914c677dfbce44318a8d1f66bef4630efcb602922d825efb7e5157825f9212c7"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2c","gas":"0xd175","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x99a88ec4000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","r":"0xa4d013f0108ebfb04eb65ee2c2d40cf1fffc0696411b19edb7b0c0eeb8ee77da","s":"0x2d6852cff2ebd2fe11605d3a2e04e90006b57364168b979c56a1c5e845f104b3","yParity":"0x1","hash":"0x313a5f29df26d29135513cf0d64515eca7e96216e2700bd66810a2cbb5d0bdc2"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x593eb383f76146cd7d31e8dcede81a18678d924393e73548717d40b79427fc5d","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xe044864a68280853170c2969a42f527192b9744a31f8278e4d69186b38690e80","transactionsRoot":"0x10e45c3179bea6d242e4fb03be9cc6c86689e3f5bd2c2a1632245ede6355d5ef","receiptsRoot":"0xf1a90813f29a82d093fdffda1079f1666e6511e070c4f5478dfc474205fb305c","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000200000000000040000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0x537874","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2002cbe8","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xa","gas":"0x66c1e5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x61012060405234801561001157600080fd5b50604051615f0f380380615f0f83398101604081905261003091610163565b6001600160a01b0380861660805284811660a052831660c0526001600160401b0380831660e05281166101005261006561006f565b50505050506101d0565b600054610100900460ff16156100db5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561012d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014457600080fd5b50565b80516001600160401b038116811461015e57600080fd5b919050565b600080600080600060a0868803121561017b57600080fd5b85516101868161012f565b60208701519095506101978161012f565b60408701519094506101a88161012f565b92506101b660608701610147565b91506101c460808701610147565b90509295509295909350565b60805160a05160c05160e05161010051615c456102ca600039600081816105b501528181612007015281816120be0152612116015260008181610275015281816125a7015281816125db01528181612c0701528181612c340152818161437a01526143b501526000818161036d01528181610614015281816107a701528181610aef01528181610c3a01528181610dc201528181610f7d0152818161115e0152818161128801528181611459015281816118a601528181611a4401528181611b8301528181611d4501528181611e2f015261312a015260008181610241015261339c0152600081816104520152610e8d0152615c456000f3fe6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000000000000084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000000000000061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000000000000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000000000000006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c003300000000000000000000000042424242424242424242424242424242424242420000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000773594000000000000000000000000000000000000000000000000000000000006059f460","r":"0x64f24f812594f492cc88ef0376f7a87953c69c27921eba074d444f0e607452a0","s":"0x60aaa1acacd5724518e042bf91fd0bc4ad9d29e2689e5fcd21a46994875c68a6","yParity":"0x1","hash":"0x33edf193a23f0289b5d89c7a703f54bcd17d54651779434e784f5a3455a135f8"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xb","gas":"0x5b8ea","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","r":"0xd56139486c75b623487313fe5593f69d67b861422ee3a1183c0351e0940bde05","s":"0x715be808934440ce4eadda182688e0c2617560331170e85b93ef42745f13fdd","yParity":"0x1","hash":"0xf63348d9d494abf9775ab12c8f00d13e58abb43735511d6fbdcbc50bdfbfdd46"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x9c3ef5b4d659952b184d2b6e033f739e0bb5933a43d84118ce3f08a7c369e0db","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x4b14cf1c85a190c223bfa2afeeff653b48a6516315fdb4bc67623c8451322860","transactionsRoot":"0xf713d5bb1159eb9c41b0ea07f5a0c3df8f1ea3c4d6079d7eddf237c83b9601cf","receiptsRoot":"0xb12a47d135f48ffa524c6a54f2b1b66742e30f6d85e10126f70dd8f40b30644f","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100100004000000000000000000000000000000000400000002000000000000000000000000000000040000000000000000000000000004800000000004000000000000000000000000000000000300000002000040000000000400000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000040020480000000000000000040000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x10","gasLimit":"0x1c9c380","gasUsed":"0x22aff","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xad62194","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1d","gas":"0x2fe95","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000","r":"0x179a240390eccd825e3af3889b83756d8100c03c22f680a43c09ab7c3dbeb233","s":"0x2b8e64c68d4e5e5ba82859eca5e1635f1087f352417361305ac60d3f4057143d","yParity":"0x1","hash":"0x8d7d689b5e7498d26362ee52308da636bcbbe413fa03ca37f136aa3bcb8cda91"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe70403fd18eed35975aef85d0c451e71d41f2f325dc562c97b4a4a743f2a4c2d","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xe58232fe787789bd71910780e91c95377eb2c6ad960d55e8b8b5bfe560bb35d8","transactionsRoot":"0xae09874588844cccacf1cdc692ff78d3e575e8f7915644e9a7a1321814a7b1c4","receiptsRoot":"0x4a0994e7b89732d47885c059b01e4f296ee2e1b2067b4bc2457bdd3945760ca8","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x65ecf","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x345fce36","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gas":"0x6b57b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5060405161075038038061075083398101604081905261002f91610259565b60005b825181101561006d576100658382815181106100505761005061033a565b6020026020010151600161007e60201b60201c565b600101610032565b5061007781610150565b5050610350565b6001600160a01b0382166100ef5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101be5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e6565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025457600080fd5b919050565b6000806040838503121561026c57600080fd5b82516001600160401b0381111561028257600080fd5b8301601f8101851361029357600080fd5b80516001600160401b038111156102ac576102ac610227565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102da576102da610227565b6040529182526020818401810192908101888411156102f857600080fd5b6020850194505b8385101561031e576103108561023d565b8152602094850194016102ff565b509450610331925050506020840161023d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b6103f18061035f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x33711386ce008e0ed323d96d8e2c35c3eea246a000359e0f36e9b5080a0f80dd","s":"0x394ba0e41b96b68b05531167827f79603b2c416d5656c0241241adf96dc6884a","yParity":"0x1","hash":"0x36e493baf7271595140c6eb3ab0ad73f1a465f974b7f43e80bec732caa827f5e"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gas":"0x191db","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033","r":"0x6abf6e09b2d7f3e529085dddaf55820dd2677ce519861eb25047f7e020710484","s":"0x7a5e62198238b95e61f97fe50a43e62b5328079e6ba62f6eb6eb6793a77d2b52","yParity":"0x1","hash":"0x22a9f86b632e0721e86b2a5abace725309858cf2abca7c3f7f22df7902873912"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xd108aee174328f42558e98f2e2eb7130cc6cf0ccffa8c5751f65a8f9ba157193","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x7606d9824198cef2cc4f9b850839394a6da77c9f1bf439b791817c294d1ba472","transactionsRoot":"0x884a50f35580b8e0c64d35b6209195d9c560a5d92cf3b394ab654e8a5fbaaf89","receiptsRoot":"0xb608afbe768e3d91a40d67782221ed3d3d327a7ecfdc8f02991be6a7e30f9a0c","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000001000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0x4e5524","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1d67b2bf","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2f","gas":"0x65cd50","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6101c06040523480156200001257600080fd5b5060405162005f1a38038062005f1a833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615b56620003c4600039600081816107aa015281816111dd0152818161214001528181612d7e0152818161348b01526138a50152600081816106dc015281816120cb0152818161256a01528181612cfe015281816133e2015281816135d301526138240152600081816106a201528181610fb00152818161210901528181612c8001528181612e6601528181612ee00152818161336201526139210152600081816105a701528181612bd601526132aa01526000613b2401526000613b7301526000613b4e01526000613aa701526000613ad101526000613afb0152615b566000f3fe608060405234801561001057600080fd5b506004361061035c5760003560e01c80635b0b829f116101d35780639e9923c211610104578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610897578063f2fde38b1461093a578063fabc1cbc1461094d578063fd39105a1461096057600080fd5b8063d72d8dd614610869578063d75b4c8814610871578063dd8283f31461088457600080fd5b8063a96f783e116100de578063a96f783e14610806578063c391425e1461080f578063ca0de8821461082f578063ca4f2d971461085657600080fd5b80639e9923c2146107a55780639feab859146107cc578063a50857bf146107f357600080fd5b8063715018a611610171578063886f11951161014b578063886f1195146107525780638da5cb5b1461076b5780639aa1653d146107735780639b5d177b1461079257600080fd5b8063715018a61461072457806384ca52131461072c578063871ef0491461073f57600080fd5b80636347c900116101ad5780636347c900146106c457806368304835146106d75780636c708904146106fe5780636e3b17db1461071157600080fd5b80635b0b829f146106825780635c975abb146106955780635df459461461069d57600080fd5b8063249a0c42116102ad5780633af32abf1161024b57806353abfad41161022557806353abfad4146106285780635865c60c1461063b578063595c6a671461065b5780635ac86ab71461066357600080fd5b80633af32abf146105c95780633c2a7f4c146105f55780635140a5481461061557600080fd5b8063296bb06411610287578063296bb0641461056957806329d1e0c31461057c5780632cdd1e861461058f5780633998fdd3146105a257600080fd5b8063249a0c421461052357806328f61b311461054357806329092d0e1461055657600080fd5b80630d3f21341161031a57806313542a4e116102f457806313542a4e1461046b578063136439dd146104945780631478851f146104a75780631eb812da146104da57600080fd5b80630d3f21341461042557806310d67a2f14610438578063125e05841461044b57600080fd5b8062cf2ab51461036157806303fd34921461037657806304ec6351146103a9578063054310e6146103d45780630a3b0a4f146103ff5780630cf4b76714610412575b600080fd5b61037461036f366004614613565b61099c565b005b610396610384366004614654565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6103bc6103b736600461467f565b610aaa565b6040516001600160c01b0390911681526020016103a0565b609d546103e7906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b61037461040d3660046146dc565b610bba565b6103746104203660046147e0565b610c0e565b610374610433366004614654565b610cb8565b6103746104463660046146dc565b610cc5565b6103966104593660046146dc565b609f6020526000908152604090205481565b6103966104793660046146dc565b6001600160a01b031660009081526099602052604090205490565b6103746104a2366004614654565b610d78565b6104ca6104b5366004614654565b609a6020526000908152604090205460ff1681565b60405190151581526020016103a0565b6104ed6104e8366004614830565b610eb5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016103a0565b610396610531366004614863565b609b6020526000908152604090205481565b609e546103e7906001600160a01b031681565b6103746105643660046146dc565b610f46565b6103e7610577366004614654565b610f97565b61037461058a3660046146dc565b611023565b61037461059d3660046146dc565b611034565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b6104ca6105d73660046146dc565b6001600160a01b0316600090815260c8602052604090205460ff1690565b6106086106033660046146dc565b611045565b6040516103a0919061487e565b6103746106233660046148d6565b6110c4565b610374610636366004614964565b61149a565b61064e6106493660046146dc565b611560565b6040516103a09190614a3a565b6103746115d4565b6104ca610671366004614863565b6001805460ff9092161b9081161490565b610374610690366004614abf565b6116a0565b600154610396565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b6103e76106d2366004614654565b6116fa565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b61037461070c366004614964565b611724565b61037461071f366004614af3565b6117e6565b61037461193b565b61039661073a366004614b87565b61194f565b6103bc61074d366004614654565b611999565b6000546103e7906201000090046001600160a01b031681565b6103e76119a4565b6096546107809060ff1681565b60405160ff90911681526020016103a0565b6103746107a0366004614d20565b6119bd565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b6103967f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b610374610801366004614e19565b611cd6565b61039660a05481565b61082261081d366004614ec1565b611e3b565b6040516103a09190614f66565b6103967f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b610374610864366004614fb0565b611eea565b609c54610396565b61037461087f366004615096565b611f50565b610374610892366004615253565b611f63565b6109066108a5366004614863565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016103a0565b6103746109483660046146dc565b612223565b61037461095b366004614654565b612299565b61098f61096e3660046146dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103a09190615327565b6001546002906004908116036109cd5760405162461bcd60e51b81526004016109c490615335565b60405180910390fd5b60005b82811015610aa45760008484838181106109ec576109ec61536c565b9050602002016020810190610a0191906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610a4c57610a4c614a02565b6002811115610a5d57610a5d614a02565b90525080519091506000610a70826123f5565b90506000610a86826001600160c01b0316612460565b9050610a9385858361252c565b5050600190930192506109d0915050565b50505050565b6000838152609860205260408120805482919084908110610acd57610acd61536c565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610b535760405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b60448201526064016109c4565b602081015163ffffffff161580610b795750806020015163ffffffff168463ffffffff16105b610bae5760405162461bcd60e51b81526004016109c49060208082526004908201526331371e1960e11b604082015260600190565b60400151949350505050565b610bc2612619565b6001600160a01b038116600081815260c86020526040808220805460ff19166001179055517f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9190a250565b60013360009081526099602052604090206001015460ff166002811115610c3757610c37614a02565b14610c6c5760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610cad9084906153c8565b60405180910390a250565b610cc0612619565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c91906153db565b6001600160a01b0316336001600160a01b031614610d6c5760405162461bcd60e51b81526004016109c4906153f8565b610d7581612678565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190615442565b610e055760405162461bcd60e51b81526004016109c490615464565b60015481811614610e7e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610cad565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ef257610ef261536c565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b610f4e612619565b6001600160a01b038116600081815260c86020526040808220805460ff19169055517f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9190a250565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4091906153db565b61102b612619565b610d758161277d565b61103c612619565b610d75816127e6565b6040805180820190915260008082526020820152610f406110bf7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016110a49291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061284f565b61289d565b6001546002906004908116036110ec5760405162461bcd60e51b81526004016109c490615335565b600061113484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905084831461116e5760405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b60448201526064016109c4565b60005b8381101561149157600085858381811061118d5761118d61536c565b919091013560f81c915036905060008989858181106111ae576111ae61536c565b90506020028101906111c091906154ac565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154f5565b63ffffffff16811461128f5760405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b60448201526064016109c4565b6000805b828110156114365760008484838181106112af576112af61536c565b90506020020160208101906112c491906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561130f5761130f614a02565b600281111561132057611320614a02565b90525080519091506000611333826123f5565b905060016001600160c01b03821660ff8b161c8116146113805760405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b60448201526064016109c4565b856001600160a01b0316846001600160a01b0316116113cb5760405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b60448201526064016109c4565b5061142983838f8f8d908e60016113e29190615528565b926113ef9392919061553b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252c92505050565b5090925050600101611293565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611171565b50505050505050565b6114a2612619565b60005b815181101561155c57600060c860008484815181106114c6576114c661536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106115175761151761536c565b60200260200101516001600160a01b03167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc60405160405180910390a26001016114a5565b5050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115ba576115ba614a02565b60028111156115cb576115cb614a02565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116459190615442565b6116615760405162461bcd60e51b81526004016109c490615464565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a8612619565b609654829060ff908116908216106116eb5760405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b60448201526064016109c4565b6116f583836129bd565b505050565b609c818154811061170a57600080fd5b6000918252602090912001546001600160a01b0316905081565b61172c612619565b60005b815181101561155c57600160c860008484815181106117505761175061536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106117a1576117a161536c565b60200260200101516001600160a01b03167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f60405160405180910390a260010161172f565b609e546001600160a01b0316331461182d5760405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b60448201526064016109c4565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161189a9187908790819084018382808284376000920191909152505060965460ff16915061292c9050565b905060006118a7836123f5565b905060018085015460ff1660028111156118c3576118c3614a02565b1480156118d857506001600160c01b03821615155b80156118f657506118f66001600160c01b0383811690831681161490565b15611491576114918787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611943612619565b61194d6000612df2565b565b600061198f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a87878787876040516020016110a496959493929190615565565b9695505050505050565b6000610f40826123f5565b60006119b86064546001600160a01b031690565b905090565b60018054600091908116036119e45760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611a355760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b838914611a6d5760405162461bcd60e51b81526004016109c49060208082526004908201526338a632b760e11b604082015260600190565b6000611a793388612e44565b9050611ad933828888808060200260200160405190810160405280939291908181526020016000905b82821015611ace57611abf604083028601368190038101906155ed565b81526020019060010190611aa2565b505050505087612f79565b6000611b2033838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b90506000609760008e8e6000818110611b3b57611b3b61536c565b919091013560f81c825250602080820192909252604090810160009081208251606081018452905463ffffffff811680835261ffff600160201b8304811696840196909652600160301b909104909416928101929092528451805192945091611ba657611ba661536c565b602002602001015163ffffffff161115611cc757611c4b8d8d6000818110611bd057611bd061536c565b9050013560f81c60f81b60f81c8360400151600081518110611bf457611bf461536c565b6020026020010151338560200151600081518110611c1457611c1461536c565b60200260200101518c8c6000818110611c2f57611c2f61536c565b905060400201803603810190611c4591906155ed565b86613519565b611cc788886000818110611c6157611c6161536c565b9050604002016020016020810190611c7991906146dc565b8e8e600090600192611c8d9392919061553b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b50505050505050505050505050565b6001805460009190811603611cfd5760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611d4e5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b6000611d5a3385612e44565b90506000611da333838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b51600080805260976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c754825192935063ffffffff1691839190611deb57611deb61536c565b602002602001015163ffffffff161115611e305760405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b60448201526064016109c4565b505050505050505050565b6060600082516001600160401b03811115611e5857611e586146f9565b604051908082528060200260200182016040528015611e81578160200160208202803683370190505b50905060005b8351811015611ee257611eb385858381518110611ea657611ea661536c565b60200260200101516136e8565b828281518110611ec557611ec561536c565b63ffffffff90921660209283029190910190910152600101611e87565b509392505050565b60018054600290811603611f105760405162461bcd60e51b81526004016109c490615335565b6116f53384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611f58612619565b6116f58383836137a1565b600054610100900460ff1615808015611f835750600054600160ff909116105b80611f9d5750303b158015611f9d575060005460ff166001145b6120005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109c4565b6000805460ff191660011790558015612023576000805461ff0019166101001790555b82518451148015612035575081518351145b6120665760405162461bcd60e51b8152602060048201526002602482015261494560f01b60448201526064016109c4565b61206f89612df2565b6120798686613983565b6120828861277d565b61208b876127e6565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121d2576121ca8582815181106121895761218961536c565b60200260200101518583815181106121a3576121a361536c565b60200260200101518584815181106121bd576121bd61536c565b60200260200101516137a1565b60010161216b565b508015611e30576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61222b612619565b6001600160a01b0381166122905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c4565b610d7581612df2565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231091906153db565b6001600160a01b0316336001600160a01b0316146123405760405162461bcd60e51b81526004016109c4906153f8565b6001541981196001541916146123be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cad565b6000818152609860205260408120548082036124145750600092915050565b600083815260986020526040902061242d600183615609565b8154811061243d5761243d61536c565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061246e84613a6f565b61ffff166001600160401b03811115612489576124896146f9565b6040519080825280601f01601f1916602001820160405280156124b3576020820181803683370190505b5090506000805b8251821080156124cb575061010081105b15612522576001811b935085841615612512578060f81b8383815181106124f4576124f461536c565b60200101906001600160f81b031916908160001a9053508160010191505b61251b8161561c565b90506124ba565b5090949350505050565b60018260200151600281111561254457612544614a02565b1461254e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906125a390889086908890600401615635565b6020604051808303816000875af11580156125c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e69190615665565b90506001600160c01b03811615612612576126128561260d836001600160c01b0316612460565b612a6a565b5050505050565b336126226119a4565b6001600160a01b03161461194d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c4565b6001600160a01b0381166127065760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016109c4565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f4061285c613a9a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806128cd600080516020615b01833981519152866156a4565b90505b6128d981613bc1565b9093509150600080516020615b018339815191528283098303612912576040805180820190915290815260208101919091529392505050565b600080516020615b018339815191526001820890506128d0565b60008061293884613c43565b9050808360ff166001901b116129b65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016109c4565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612a9e57612a9e614a02565b14612ad35760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b609654600090612ae790859060ff1661292c565b90506000612af4836123f5565b90506001600160c01b038216612b355760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b612b4c6001600160c01b0383811690831681161490565b612b815760405162461bcd60e51b81526004016109c49060208082526004908201526310a9bab160e11b604082015260600190565b6001600160c01b0382811619821616612b9a8482613dcb565b6001600160c01b038116612c695760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612c1a57600080fd5b505af1158015612c2e573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612cb7908a908a906004016156b8565b600060405180830381600087803b158015612cd157600080fd5b505af1158015612ce5573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d379087908a906004016156dc565b600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612db79087908a906004016156dc565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed391906156f5565b90506000819003610f40577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612f1887611045565b6040518463ffffffff1660e01b8152600401612f369392919061570e565b6020604051808303816000875af1158015612f55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b691906156f5565b6020808201516000908152609a909152604090205460ff1615612fc75760405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b60448201526064016109c4565b42816040015110156130035760405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b60448201526064016109c4565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610aa4926001600160a01b039092169161304e918891889188919061194f565b8351613f8c565b61307960405180606001604052806060815260200160608152602001606081525090565b60006130c186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905060006130ce886123f5565b90506001600160c01b03821661310f5760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b8082166001600160c01b0316156131515760405162461bcd60e51b81526004016109c49060208082526004908201526308509a5d60e21b604082015260600190565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b03838116908516179142916131899190615528565b106131be5760405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b60448201526064016109c4565b6131c88982613dcb565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131f891906153c8565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561323257613232614a02565b1461334b576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561328d5761328d614a02565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906132e2908d90899060040161577e565b600060405180830381600087803b1580156132fc57600080fd5b505af1158015613310573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061339b908d908c908c906004016157f2565b600060405180830381600087803b1580156133b557600080fd5b505af11580156133c9573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506325504777915061341f908d908d908d908d90600401615817565b6000604051808303816000875af115801561343e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346691908101906158a7565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134c3908c908c908c9060040161590a565b6000604051808303816000875af11580156134e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350a9190810190615924565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152600360248201526206368360ec1b60448201526064016109c4565b8760ff16846000015160ff16146135b15760405162461bcd60e51b815260206004820152600360248201526263683160e81b60448201526064016109c4565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364691906159b2565b90506136528185614146565b6001600160601b0316866001600160601b0316116136985760405162461bcd60e51b815260206004820152600360248201526231b41960e91b60448201526064016109c4565b6136a2888561416a565b6001600160601b0316816001600160601b031610611e305760405162461bcd60e51b815260206004820152600360248201526263683360e81b60448201526064016109c4565b600081815260986020526040812054815b8181101561377057600161370d8284615609565b6137179190615609565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061374a5761374a61536c565b60009182526020909120015463ffffffff1611613768575050610f40565b6001016136f9565b5060405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b60448201526064016109c4565b60965460ff1660c081106137e05760405162461bcd60e51b81526004016109c4906020808252600490820152630e29ac2f60e31b604082015260600190565b6137eb8160016159cf565b6096805460ff191660ff929092169190911790558061380a81866129bd565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a779061385d908490889088906004016159e8565b600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561396f57600080fd5b505af1158015611e30573d6000803e3d6000fd5b6000546201000090046001600160a01b03161580156139aa57506001600160a01b03821615155b613a2c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261155c82612678565b6000805b8215610f4057613a84600184615609565b9092169180613a9281615a64565b915050613a73565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613af357507f000000000000000000000000000000000000000000000000000000000000000046145b15613b1d57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615b018339815191526003600080516020615b0183398151915286600080516020615b01833981519152888909090890506000613c37827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615b01833981519152614184565b91959194509092505050565b600061010082511115613ccc5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016109c4565b8151600003613cdd57506000919050565b60008083600081518110613cf357613cf361536c565b0160200151600160f89190911c81901b92505b8451811015613dc257848181518110613d2157613d2161536c565b0160200151600160f89190911c1b9150828211613db65760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016109c4565b91811791600101613d06565b50909392505050565b60008281526098602052604081205490819003613e73576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120613e8c600184615609565b81548110613e9c57613e9c61536c565b6000918252602090912001805490915063ffffffff438116911603613ede5780546001600160401b0316600160401b6001600160c01b03851602178155610aa4565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156140a657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613fcc90869086906004016156dc565b602060405180830381865afa158015613fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400d9190615a85565b6001600160e01b031916146116f55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016109c4565b826001600160a01b03166140ba838361422d565b6001600160a01b0316146116f55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016109c4565b6020810151600090612710906141609061ffff1685615aaf565b6129b69190615ada565b6040810151600090612710906141609061ffff1685615aaf565b60008061418f614593565b6141976145b1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806141d457fe5b50826142225760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016109c4565b505195945050505050565b600080600061423c8585614249565b91509150611ee2816142b7565b600080825160410361427f5760208301516040840151606085015160001a6142738782858561446d565b945094505050506142b0565b82516040036142a8576020830151604084015161429d86838361455a565b9350935050506142b0565b506000905060025b9250929050565b60008160048111156142cb576142cb614a02565b036142d35750565b60018160048111156142e7576142e7614a02565b036143345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109c4565b600281600481111561434857614348614a02565b036143955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109c4565b60038160048111156143a9576143a9614a02565b036144015760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109c4565b600481600481111561441557614415614a02565b03610d755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109c4565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144a45750600090506003614551565b8460ff16601b141580156144bc57508460ff16601c14155b156144cd5750600090506004614551565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614521573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661454a57600060019250925050614551565b9150600090505b94509492505050565b6000806001600160ff1b0383168161457760ff86901c601b615528565b90506145858782888561446d565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126145e157600080fd5b5081356001600160401b038111156145f857600080fd5b6020830191508360208260051b85010111156142b057600080fd5b6000806020838503121561462657600080fd5b82356001600160401b0381111561463c57600080fd5b614648858286016145cf565b90969095509350505050565b60006020828403121561466657600080fd5b5035919050565b63ffffffff81168114610d7557600080fd5b60008060006060848603121561469457600080fd5b8335925060208401356146a68161466d565b929592945050506040919091013590565b6001600160a01b0381168114610d7557600080fd5b80356146d7816146b7565b919050565b6000602082840312156146ee57600080fd5b81356129b6816146b7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614731576147316146f9565b60405290565b604080519081016001600160401b0381118282101715614731576147316146f9565b604051601f8201601f191681016001600160401b0381118282101715614781576147816146f9565b604052919050565b60006001600160401b038311156147a2576147a26146f9565b6147b5601f8401601f1916602001614759565b90508281528383830111156147c957600080fd5b828260208301376000602084830101529392505050565b6000602082840312156147f257600080fd5b81356001600160401b0381111561480857600080fd5b8201601f8101841361481957600080fd5b61482884823560208401614789565b949350505050565b6000806040838503121561484357600080fd5b50508035926020909101359150565b803560ff811681146146d757600080fd5b60006020828403121561487557600080fd5b6129b682614852565b815181526020808301519082015260408101610f40565b60008083601f8401126148a757600080fd5b5081356001600160401b038111156148be57600080fd5b6020830191508360208285010111156142b057600080fd5b600080600080604085870312156148ec57600080fd5b84356001600160401b038082111561490357600080fd5b61490f888389016145cf565b9096509450602087013591508082111561492857600080fd5b5061493587828801614895565b95989497509550505050565b60006001600160401b0382111561495a5761495a6146f9565b5060051b60200190565b6000602080838503121561497757600080fd5b82356001600160401b0381111561498d57600080fd5b8301601f8101851361499e57600080fd5b80356149b16149ac82614941565b614759565b81815260059190911b820183019083810190878311156149d057600080fd5b928401925b828410156149f75783356149e8816146b7565b825292840192908401906149d5565b979650505050505050565b634e487b7160e01b600052602160045260246000fd5b60038110614a3657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614a5590840182614a18565b5092915050565b803561ffff811681146146d757600080fd5b600060608284031215614a8057600080fd5b614a8861470f565b90508135614a958161466d565b8152614aa360208301614a5c565b6020820152614ab460408301614a5c565b604082015292915050565b60008060808385031215614ad257600080fd5b614adb83614852565b9150614aea8460208501614a6e565b90509250929050565b600080600060408486031215614b0857600080fd5b8335614b13816146b7565b925060208401356001600160401b03811115614b2e57600080fd5b614b3a86828701614895565b9497909650939450505050565b600060408284031215614b5957600080fd5b614b61614737565b9050614b6c82614852565b81526020820135614b7c816146b7565b602082015292915050565b600080600080600060a08688031215614b9f57600080fd5b8535614baa816146b7565b945060208681013594506040808801356001600160401b03811115614bce57600080fd5b8801601f81018a13614bdf57600080fd5b8035614bed6149ac82614941565b8082825260208201915060208360061b85010192508c831115614c0f57600080fd5b6020840193505b82841015614c3757614c288d85614b47565b82529284019290850190614c16565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614c6757600080fd5b50919050565b60008083601f840112614c7f57600080fd5b5081356001600160401b03811115614c9657600080fd5b6020830191508360208260061b85010111156142b057600080fd5b600060608284031215614cc357600080fd5b614ccb61470f565b905081356001600160401b03811115614ce357600080fd5b8201601f81018413614cf457600080fd5b614d0384823560208401614789565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614d3f57600080fd5b89356001600160401b0380821115614d5657600080fd5b614d628d838e01614895565b909b50995060208c0135915080821115614d7b57600080fd5b614d878d838e01614895565b9099509750879150614d9c8d60408e01614c54565b96506101408c0135915080821115614db357600080fd5b614dbf8d838e01614c6d565b90965094506101608c0135915080821115614dd957600080fd5b614de58d838e01614cb1565b93506101808c0135915080821115614dfc57600080fd5b50614e098c828d01614cb1565b9150509295985092959850929598565b6000806000806000806101608789031215614e3357600080fd5b86356001600160401b0380821115614e4a57600080fd5b614e568a838b01614895565b90985096506020890135915080821115614e6f57600080fd5b614e7b8a838b01614895565b9096509450849150614e908a60408b01614c54565b9350610140890135915080821115614ea757600080fd5b50614eb489828a01614cb1565b9150509295509295509295565b60008060408385031215614ed457600080fd5b8235614edf8161466d565b91506020838101356001600160401b03811115614efb57600080fd5b8401601f81018613614f0c57600080fd5b8035614f1a6149ac82614941565b81815260059190911b82018301908381019088831115614f3957600080fd5b928401925b82841015614f5757833582529284019290840190614f3e565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614fa457835163ffffffff1683529284019291840191600101614f82565b50909695505050505050565b60008060208385031215614fc357600080fd5b82356001600160401b03811115614fd957600080fd5b61464885828601614895565b6001600160601b0381168114610d7557600080fd5b600082601f83011261500b57600080fd5b8135602061501b6149ac83614941565b82815260069290921b8401810191818101908684111561503a57600080fd5b8286015b8481101561508b57604081890312156150575760008081fd5b61505f614737565b813561506a816146b7565b81528185013561507981614fe5565b8186015283529183019160400161503e565b509695505050505050565b600080600060a084860312156150ab57600080fd5b6150b58585614a6e565b925060608401356150c581614fe5565b915060808401356001600160401b038111156150e057600080fd5b6150ec86828701614ffa565b9150509250925092565b600082601f83011261510757600080fd5b813560206151176149ac83614941565b80838252602082019150606060206060860288010194508785111561513b57600080fd5b602087015b8581101561515f576151528982614a6e565b8452928401928101615140565b5090979650505050505050565b600082601f83011261517d57600080fd5b8135602061518d6149ac83614941565b8083825260208201915060208460051b8701019350868411156151af57600080fd5b602086015b8481101561508b5780356151c781614fe5565b83529183019183016151b4565b600082601f8301126151e557600080fd5b813560206151f56149ac83614941565b82815260059290921b8401810191818101908684111561521457600080fd5b8286015b8481101561508b5780356001600160401b038111156152375760008081fd5b6152458986838b0101614ffa565b845250918301918301615218565b600080600080600080600080610100898b03121561527057600080fd5b615279896146cc565b975061528760208a016146cc565b965061529560408a016146cc565b95506152a360608a016146cc565b94506080890135935060a08901356001600160401b03808211156152c657600080fd5b6152d28c838d016150f6565b945060c08b01359150808211156152e857600080fd5b6152f48c838d0161516c565b935060e08b013591508082111561530a57600080fd5b506153178b828c016151d4565b9150509295985092959890939650565b60208101610f408284614a18565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156153a85760208185018101518683018201520161538c565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006129b66020830184615382565b6000602082840312156153ed57600080fd5b81516129b6816146b7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561545457600080fd5b815180151581146129b657600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126154c357600080fd5b8301803591506001600160401b038211156154dd57600080fd5b6020019150600581901b36038213156142b057600080fd5b60006020828403121561550757600080fd5b81516129b68161466d565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f4057610f40615512565b6000808585111561554b57600080fd5b8386111561555857600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a166020860152604089604087015260c0606087015283895180865260e08801915060208b01955060005b818110156155cd578651805160ff16845286015185168684015295850195918301916001016155a3565b505060808701989098525050505060a09091019190915250949350505050565b6000604082840312156155ff57600080fd5b6129b68383614b47565b81810381811115610f4057610f40615512565b60006001820161562e5761562e615512565b5060010190565b60018060a01b038416815282602082015260606040820152600061565c6060830184615382565b95945050505050565b60006020828403121561567757600080fd5b81516001600160c01b03811681146129b657600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826156b3576156b361568e565b500690565b6001600160a01b038316815260406020820181905260009061482890830184615382565b8281526040602082015260006148286040830184615382565b60006020828403121561570757600080fd5b5051919050565b6001600160a01b03841681526101608101615736602083018580358252602090810135910152565b615750606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614828565b60018060a01b03831681526040602082015260008251606060408401526157a860a0840182615382565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061565c90830184866157c9565b60018060a01b038516815283602082015260606040820152600061198f6060830184866157c9565b600082601f83011261585057600080fd5b815160206158606149ac83614941565b8083825260208201915060208460051b87010193508684111561588257600080fd5b602086015b8481101561508b57805161589a81614fe5565b8352918301918301615887565b600080604083850312156158ba57600080fd5b82516001600160401b03808211156158d157600080fd5b6158dd8683870161583f565b935060208501519150808211156158f357600080fd5b506159008582860161583f565b9150509250929050565b83815260406020820152600061565c6040830184866157c9565b6000602080838503121561593757600080fd5b82516001600160401b0381111561594d57600080fd5b8301601f8101851361595e57600080fd5b805161596c6149ac82614941565b81815260059190911b8201830190838101908783111561598b57600080fd5b928401925b828410156149f75783516159a38161466d565b82529284019290840190615990565b6000602082840312156159c457600080fd5b81516129b681614fe5565b60ff8181168382160190811115610f4057610f40615512565b60006060820160ff8616835260206001600160601b03808716602086015260406060604087015283875180865260808801915060208901955060005b81811015615a5457865180516001600160a01b031684528601518516868401529585019591830191600101615a24565b50909a9950505050505050505050565b600061ffff808316818103615a7b57615a7b615512565b6001019392505050565b600060208284031215615a9757600080fd5b81516001600160e01b0319811681146129b657600080fd5b6001600160601b03818116838216028082169190828114615ad257615ad2615512565b505092915050565b60006001600160601b0380841680615af457615af461568e565b9216919091049291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207d5f90e3401cb54ad55455b7cbc4f8abf3101a8a6465b53d917fe6ec5da1e0c764736f6c63430008180033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4900000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778","r":"0xe85a898ed9fffd726ecc94dd469178acd1aadf7e0f818c0e95f3ec71265a76c5","s":"0x597736be72782a865bcdbb76685935c094303e9e9b5b748bfc4e3fee29019888","yParity":"0x1","hash":"0x3a12eb5273c6cdd3fd93e2107708191b4ed955096523ae364b1782aae4a997b6"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xef4dc3f27d825d5171606238158095ff1e6c589fd72a380fdcc10a3c3a3d3911","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xd1857451113f9ccfbf483917dfa37f6881c1e97b6997f3e4e5bc3dc8d6f3a02d","transactionsRoot":"0xb5dea61287ce58da71279ee07e23ef46a030eaf5e43b6351edbd0caaca15b7c7","receiptsRoot":"0x5b797847af0b5f088e19b4c7fe467b4a2e6b3aa54672a45d0e0fc7f787ee0415","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002200000000000000000000000000000400000000000000000000040004000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x8be1b","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x29381938","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x28","gas":"0xb5c61","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xf17025c3e231fb4f95117ba226a5649ba11b3ecf600a642f14e8deee4f0d18e0","s":"0x2d77c72e9281b51acb1d83998131b7341154d27ca0f813d25e489bf0bc6ec5c","yParity":"0x0","hash":"0xdbdadf45fb439e8fa448e3a2a65d102e6ea90fd393e3cd024c9499759f3683cc"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x5a7a3e18533c10d9e81916d33460352c00313b7387d53d582fc75258d878e46e","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6a0cd8a792898f54e042961101f2b5c9b6c37a7e2d21069f49a3e907a697e47","transactionsRoot":"0xc26742ec3f975b67bc6157526ce183a477c960802c921af13bf6134684d51129","receiptsRoot":"0x0bb7fad9b80eba480248a78d60604d27fc039de240d3ba99f6e43b3683fe6bae","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000480000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000020000000000400000000000","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0x92cf5b","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1d7803e5","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xc","gas":"0x643a2f","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x61010060405234801561001157600080fd5b50604051615c04380380615c0483398101604081905261003091610135565b6001600160a01b0380841660805280821660c052821660a05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516159ee61021660003960006126560152600081816105b10152818161101d0152818161139901528181611be5015281816129b001528181613e5b0152614347015260006107620152600081816104f901528181610feb0152818161136701528181611c7901528181612a7d01528181612c0001528181613f8101526143ed01526159ee6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061103f5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113bb5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f00000000000000000000000000000000000000000000000000000000000000004603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6","r":"0xf4d2772b8feff12a100c8117b799a4b3300c5538f2e728e210aaee0e2b39a57f","s":"0x677e5498ffc923f108605ff5014f4ec3d7efdc63254091430d00ef0487c27b3c","yParity":"0x0","hash":"0x851c5b070f316830eef55c050a3ada207080c56674c175fb21f47a8f4a5dfb21"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xd","gas":"0x3812c7","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x61010060405234801561001157600080fd5b5060405161337a38038061337a83398101604081905261003091610135565b6001600160a01b0380841660805280831660a052811660c05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516131a36101d760003960006114b70152600061046e0152600061028501526000818161051a01528181610b8201528181610ecf01528181610f230152611a6c01526131a36000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f000000000000000000000000000000000000000000000000000000000000000046036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853","r":"0xf2b0c683ffce5561b6253e4cce62783314c9fbfbcf1cc1bd6d305ad61d1b2fcc","s":"0x6b90ef25afa7f30f22728280ea948889d5fbef57764d317979ff5af32aea6d57","yParity":"0x0","hash":"0xeea9931d6e3a2988ca9384428f505cc53b54c9b25f97fd5f0d4c384cda39370a"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xe","gas":"0x227f19","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60c060405234801561001057600080fd5b50604051611f65380380611f6583398101604081905261002f9161010e565b6001600160a01b03811660805261004461004e565b504660a05261013e565b600054610100900460ff16156100ba5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561012057600080fd5b81516001600160a01b038116811461013757600080fd5b9392505050565b60805160a051611dfb61016a6000396000610ea501526000818161032401526109810152611dfb6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f00000000000000000000000000000000000000000000000000000000000000004603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","r":"0xa230281361ccbca8e5eeca7185a2fd29c5867f93cbf4017a1e5ce3e8d1aaad13","s":"0x17c44d2762d98a9df789c83904b28fc8a0bf11de8a3b64ff2e3d4618396a191b","yParity":"0x1","hash":"0x37b270d09383137c71efb1453b09fc01c5a7173589ff736977637bf494b56cdd"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0e637d647581fe5de6fcbcd11328753276819facc3fd30917ff91c0602dcdcb1","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x6c1895f94e42166567756cdba8f698a237d9982bdf7bb3b4f6c7061e0dad097e","transactionsRoot":"0x31bc5e93aead970f271283deb6ca355074adc1010f3a4a1542428c755b966e62","receiptsRoot":"0x19e95c9ae96bcfaa35669da649163148d0399e12912dd92bd34428c6538b2f08","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x12","gasLimit":"0x1c9c380","gasUsed":"0x64c4","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x8509268","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x20","gas":"0x8b2e","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x729bcd296b95dc9fbbed8beeb842a62c4366afa92bbccac951f3dacff067c0fd","s":"0x79af5af4279f42a9f851e8e3eeb8ac3c64b30df48035e1584ae364c9e678585a","yParity":"0x0","hash":"0x0407695da91c821753dcf7e68b5284a95c603e466b110cce53db7254dd1f1278"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x2163a0d26faf48a0f1ad20af72b0dc0bb05118862f3211ae0aea0a27522aedfa","transactionsRoot":"0xd82b5426716412409b65e5677a842315101e726acf9e99573ef78c09e7640bbc","receiptsRoot":"0xc24b358bd8f01f0a27e9dfd990532cd0333f2a673ceef0dd1e1fbb4de37b200b","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0x320478","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1c25e045","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xf","gas":"0x4100b6","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x61018060405234801561001157600080fd5b50604051613dc9380380613dc9833981016040819052610030916102d0565b86868686868686610041858261035b565b63ffffffff16156100e55760405162461bcd60e51b815260206004820152606060248201527f52657761726473436f6f7264696e61746f723a2047454e455349535f5245574160448201527f5244535f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b6100f2620151808661035b565b63ffffffff16156101915760405162461bcd60e51b815260206004820152605760248201527f52657761726473436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a4016100dc565b6001600160a01b0396871661012052949095166101405263ffffffff92831660805290821660a052811660c05291821660e05216610100526101d16101e3565b50504661016052506103919350505050565b600054610100900460ff161561024b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100dc565b60005460ff908116101561029d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146102b457600080fd5b50565b805163ffffffff811681146102cb57600080fd5b919050565b600080600080600080600060e0888a0312156102eb57600080fd5b87516102f68161029f565b60208901519097506103078161029f565b9550610315604089016102b7565b9450610323606089016102b7565b9350610331608089016102b7565b925061033f60a089016102b7565b915061034d60c089016102b7565b905092959891949750929550565b600063ffffffff83168061037f57634e487b7160e01b600052601260045260246000fd5b8063ffffffff84160691505092915050565b60805160a05160c05160e051610100516101205161014051610160516139a2610427600039600061181f0152600081816104400152612295015260006106ec01526000818161035701526120c40152600081816102cb0152612170015260008181610419015261207301526000818161065e0152611dea01526000818161060401528181611ea10152611f7c01526139a26000f3fe608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000000000460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb7880","r":"0x8589c2e5c5f62ad55c86f920a405f99572f1a36ff2865a467fe52f7d98b68ad9","s":"0x141b588857f226b9cff4f7ff341aa107f9d38ba37c1a68d9efd80fa6a335fd5","yParity":"0x0","hash":"0xbdad1d302ceed6a3bebc68f75d63dcabacdb6a7dbc0e83cd8de88bb9374dcafa"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2a101f0fe94131bc266fd4a2a1ed44fc03ccf06310dee9943513aa0783839454","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x9112219de54afb836dae0a3f75f7d892554692513070c03da732855588a27181","transactionsRoot":"0x8c600293186b7e6b05845dfb53741a001e4f1d5b8f2c3abe583babc03647bd9d","receiptsRoot":"0x10a68645438f9ff52ff29efe8ff68923e2f914cf4bb42be46fe3a44cc10b11b7","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00002000000001000000000040000000400000000000000000800000000000000000000800000000000000000000000080800010000000100800000000000000000080000000008000002400000102000001000400000000000000008000000000000000020000000000008100010800000000000200000000000100000000400400000100000000000000000000000000000000000080000000000000000000000000000000000000004000400400000000000000000000000000000000000000000020480000280000000000041100000000002000000000000000000020000000000000000000000000800000000000000000000000000208100000408000","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0x8bd43","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1afcc569","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x30","gas":"0xad019","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000264dd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000","r":"0x386afff8a1c0d6ba501bcf5f01b9c90d1309ab7e984abc21cb261898a1eb2d68","s":"0x1fa927190358a9e6f566aa90df2f52a83d314c50f51603d747b85ef2c12e73de","yParity":"0x0","hash":"0xf7c9e4de1144f679b9556ee611e54a7ff0a445dbbd1f30c62f0930d683101d3e"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x200c0ba40060491cb9e5738ae6f584e24197c4f4bec36ecbf904b33a8fdcdb8d","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x4a9302cae63a442138c3971811480ad165a3e83f8e1b1aa686726a2e1703c78b","transactionsRoot":"0x50829a431b6ab337768b5e38d70ccbec12284b0f2ab143bece981b12b4531f0e","receiptsRoot":"0x81aa8f6c62dee3e45bea89396271a8e828867646022344f653f476cb9582f6f2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000001000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000","difficulty":"0x0","number":"0xd","gasLimit":"0x1c9c380","gasUsed":"0x186749","timestamp":"0x67db1b07","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xee9265a","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x38","gas":"0x1fb725","maxFeePerGas":"0x21fce0f9","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e2565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100e0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611b7f6101196000396000818161061701528181610657015281816107080152818161074801526107db0152611b7f6000f3fe6080604052600436106101395760003560e01c806373e289d0116100ab578063a7d318091161006f578063a7d31809146103f1578063c0c53b8b14610411578063c392299e14610431578063c891091314610444578063f2fde38b1461049b578063f83d08ba146104bb57600080fd5b806373e289d0146103735780638456cb59146103895780638da5cb5b1461039e578063953ef807146103bc578063a69df4b5146103dc57600080fd5b80634d5431ea116100fd5780634d5431ea146102a25780634f1ef286146102db57806352d1902d146102ee57806358b96e27146103035780635c975abb1461033b578063715018a61461035e57600080fd5b806317d89c4e146101cb5780632df4e21e146102175780632e1a7d4d1461024d5780633659cfe61461026d5780633f4ba83a1461028d57600080fd5b366101c65760fb546001600160a01b031633146101c45733600090815260fd60205260408120805434929061016f908490611619565b909155505033600081815260fd602052604080822060010191909155517f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770906101bb9034815260200190565b60405180910390a25b005b600080fd5b3480156101d757600080fd5b506102046101e6366004611641565b6001600160a01b0316600090815260fd602052604090206002015490565b6040519081526020015b60405180910390f35b34801561022357600080fd5b50610204610232366004611641565b6001600160a01b0316600090815260fd602052604090205490565b34801561025957600080fd5b506101c461026836600461165e565b6104d0565b34801561027957600080fd5b506101c4610288366004611641565b61060d565b34801561029957600080fd5b506101c46106ec565b3480156102ae57600080fd5b506102046102bd366004611641565b6001600160a01b0316600090815260fd602052604090206001015490565b6101c46102e936600461168d565b6106fe565b3480156102fa57600080fd5b506102046107ce565b34801561030f57600080fd5b5060fc54610323906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b34801561034757600080fd5b5060655460ff16604051901515815260200161020e565b34801561036a57600080fd5b506101c4610881565b34801561037f57600080fd5b50610204610e1081565b34801561039557600080fd5b506101c4610893565b3480156103aa57600080fd5b506033546001600160a01b0316610323565b3480156103c857600080fd5b5060fb54610323906001600160a01b031681565b3480156103e857600080fd5b506101c46108a3565b3480156103fd57600080fd5b506101c461040c36600461179d565b61093a565b34801561041d57600080fd5b506101c461042c36600461185c565b610bd0565b6101c461043f3660046118a7565b610e1a565b34801561045057600080fd5b5061048061045f366004611641565b60fd6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161020e565b3480156104a757600080fd5b506101c46104b6366004611641565b610ebb565b3480156104c757600080fd5b506101c4610f31565b6104d8610fa7565b33600090815260fd60205260409020805482111561051b5780546040516321c3d50f60e01b81526004810191909152602481018390526044015b60405180910390fd5b6001810154158061052f5750428160010154115b1561055c576001810154604051635f6e272d60e11b81526004810191909152426024820152604401610512565b8181600001600082825461057091906118d7565b909155505060006001820181905560405133917fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd91a2604051339083156108fc029084906000818181858888f193505050501580156105d3573d6000803e3d6000fd5b5060405182815233907feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9060200160405180910390a25050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106555760405162461bcd60e51b8152600401610512906118ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661069e600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146106c45760405162461bcd60e51b815260040161051290611936565b6106cd81610fed565b604080516000808252602082019092526106e991839190610ff5565b50565b6106f4611160565b6106fc6111ba565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107465760405162461bcd60e51b8152600401610512906118ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661078f600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146107b55760405162461bcd60e51b815260040161051290611936565b6107be82610fed565b6107ca82826001610ff5565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461086e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610512565b50600080516020611b0383398151915290565b610889611160565b6106fc600061120c565b61089b611160565b6106fc61125e565b6108ab610fa7565b33600090815260fd602052604081205490036108dc5760405163b38340cf60e01b8152336004820152602401610512565b6108e8610e1042611619565b33600081815260fd6020526040908190206001018390555190917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439161093091815260200190565b60405180910390a2565b60fc546001600160a01b03163314610967576040516302a5785160e31b8152336004820152602401610512565b61096f610fa7565b83600081900361099257604051630c43ac2960e41b815260040160405180910390fd5b826000036109b3576040516351d432c560e11b815260040160405180910390fd5b836109be8285611982565b116109f057836109ce8285611982565b604051637899ec7160e01b815260048101929092526024820152604401610512565b60005b818163ffffffff161015610ad157600087878363ffffffff16818110610a1b57610a1b611999565b9050602002016020810190610a309190611641565b6001600160a01b038116600090815260fd60205260409020805491925090861115610a8a578054604051634f779ceb60e01b81526001600160a01b0384166004820152602481019190915260448101879052606401610512565b600281018054906000610a9c836119af565b919050555085816000016000828254610ab591906118d7565b9250508190555050508080610ac9906119c8565b9150506109f3565b5060fb5460405163d66eaabd60e01b81526001600160a01b039091169063d66eaabd908690610b0a908d908d908d9089906004016119eb565b6000604051808303818588803b158015610b2357600080fd5b505af1158015610b37573d6000803e3d6000fd5b505060408051878152602081018690528d94507f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c935001905060405180910390a260fc546001600160a01b03166108fc85610b928487611982565b610b9c91906118d7565b6040518115909202916000818181858888f19350505050158015610bc4573d6000803e3d6000fd5b50505050505050505050565b600054610100900460ff1615808015610bf05750600054600160ff909116105b80610c0a5750303b158015610c0a575060005460ff166001145b610c6d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610512565b6000805460ff191660011790558015610c90576000805461ff0019166101001790555b6001600160a01b038416610cdf57604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606401610512565b6001600160a01b038316610d3657604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606401610512565b6001600160a01b038216610d7d57604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606401610512565b610d8561129b565b610d8d6112ca565b610d956112f1565b610d9e8361120c565b60fb80546001600160a01b038087166001600160a01b03199283161790925560fc8054928516929091169190911790558015610e14576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610e22611160565b60fb54604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610e6857600080fd5b505af1158015610e7c573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f19350505050158015610eb6573d6000803e3d6000fd5b505050565b610ec3611160565b6001600160a01b038116610f285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610512565b6106e98161120c565b610f39610fa7565b33600090815260fd60205260408120549003610f6a5760405163366095e160e11b8152336004820152602401610512565b33600081815260fd6020526040808220600101829055517fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd9190a2565b60655460ff16156106fc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610512565b6106e9611160565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561102857610eb683611320565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611082575060408051601f3d908101601f1916820190925261107f91810190611a2b565b60015b6110e55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610512565b600080516020611b0383398151915281146111545760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610512565b50610eb68383836113bc565b6033546001600160a01b031633146106fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610512565b6111c26113e1565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611266610fa7565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111ef3390565b600054610100900460ff166112c25760405162461bcd60e51b815260040161051290611a44565b6106fc61142a565b600054610100900460ff166106fc5760405162461bcd60e51b815260040161051290611a44565b600054610100900460ff166113185760405162461bcd60e51b815260040161051290611a44565b6106fc61145a565b6001600160a01b0381163b61138d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610512565b600080516020611b0383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6113c58361148d565b6000825111806113d25750805b15610eb657610e1483836114cd565b60655460ff166106fc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610512565b600054610100900460ff166114515760405162461bcd60e51b815260040161051290611a44565b6106fc3361120c565b600054610100900460ff166114815760405162461bcd60e51b815260040161051290611a44565b6065805460ff19169055565b61149681611320565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6115355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610512565b600080846001600160a01b0316846040516115509190611ab3565b600060405180830381855af49150503d806000811461158b576040519150601f19603f3d011682016040523d82523d6000602084013e611590565b606091505b50915091506115b88282604051806060016040528060278152602001611b23602791396115c3565b925050505b92915050565b606083156115d25750816115fc565b8251156115e25782518084602001fd5b8160405162461bcd60e51b81526004016105129190611acf565b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156115bd576115bd611603565b6001600160a01b03811681146106e957600080fd5b60006020828403121561165357600080fd5b81356115fc8161162c565b60006020828403121561167057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156116a057600080fd5b82356116ab8161162c565b9150602083013567ffffffffffffffff808211156116c857600080fd5b818501915085601f8301126116dc57600080fd5b8135818111156116ee576116ee611677565b604051601f8201601f19908116603f0116810190838211818310171561171657611716611677565b8160405282815288602084870101111561172f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f84011261176357600080fd5b50813567ffffffffffffffff81111561177b57600080fd5b6020830191508360208260051b850101111561179657600080fd5b9250929050565b60008060008060008060008060c0898b0312156117b957600080fd5b88359750602089013567ffffffffffffffff808211156117d857600080fd5b818b0191508b601f8301126117ec57600080fd5b8135818111156117fb57600080fd5b8c602082850101111561180d57600080fd5b6020830199508098505060408b013591508082111561182b57600080fd5b506118388b828c01611751565b999c989b5096999698976060880135976080810135975060a0013595509350505050565b60008060006060848603121561187157600080fd5b833561187c8161162c565b9250602084013561188c8161162c565b9150604084013561189c8161162c565b809150509250925092565b600080604083850312156118ba57600080fd5b8235915060208301356118cc8161162c565b809150509250929050565b818103818111156115bd576115bd611603565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b80820281158282048414176115bd576115bd611603565b634e487b7160e01b600052603260045260246000fd5b6000600182016119c1576119c1611603565b5060010190565b600063ffffffff8083168181036119e1576119e1611603565b6001019392505050565b848152606060208201528260608201528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b600060208284031215611a3d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611aaa578181015183820152602001611a92565b50506000910152565b60008251611ac5818460208701611a8f565b9190910192915050565b6020815260008251806020840152611aee816040850160208701611a8f565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fe4d8620c34457d343e8ef7d48b551e27cee4fde238226317eb7e02cabac65a64736f6c63430008180033","r":"0x247ba6ec7b6ac351cd50509e98bf85e87052944461fd86aedaf01a099925c24","s":"0x28777c06f923abf0f27426be6c69602e0530536e282a9341222ca8bdeac47235","yParity":"0x0","hash":"0x6a56c67f42dceff96c7b0227655aea0199e6a87885116e2c3ef3d378b2712e2b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x67db0551","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xf4d46b6b8dbbe4e745dc4c6a56bc046bd6591c7d62dab08422124ab94c13e667","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xbee04a7af9684fdb705c7e39c940f4eee485e54bb234602801b610b8d4819b88","transactionsRoot":"0xd637aa3f4f6078a606daf5ea09e117e9fb43f0a935091579752cfca948505428","receiptsRoot":"0x1ce871c22568b6e3e6e78896f8c5319b33636a8ae237d4f1260d07ade85cdbc3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000001000000000040000000400000000000000000c00000000000000000000020000800000000020000080000000000000000100000000000000001000000000000000000000400000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000108000000000000000000000000000000000080000000000000000000000000000000040008000002000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000100002000400000","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0x54e190","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1965fa8c","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x10","gas":"0x10d845","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052348015600f57600080fd5b50604051610ee6380380610ee6833981016040819052602c916049565b5050607e565b6001600160a01b0381168114604657600080fd5b50565b60008060408385031215605b57600080fd5b82516064816032565b60208401519092506073816032565b809150509250929050565b610e598061008d6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","r":"0x60ec39c231008e6a2fe67666733536fa6ddbdbbfaa628606f8fa92dfff0abcf7","s":"0xd01625f83cdc81c0267f5a61165babd7a92d463c355107b427eee8934ae0e34","yParity":"0x1","hash":"0x34fb9442d5a4081b3e20e2767849dfaf2e3451f57b8ca3cee2259ebae4852745"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x11","gas":"0x38eed1","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x61012060405234801561001157600080fd5b5060405161349738038061349783398101604081905261003091610140565b6001600160a01b0380861660805280851660a05280841660c05280831660e05281166101005261005e610068565b50505050506101b5565b600054610100900460ff16156100d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013d57600080fd5b50565b600080600080600060a0868803121561015857600080fd5b855161016381610128565b602087015190955061017481610128565b604087015190945061018581610128565b606087015190935061019681610128565b60808701519092506101a781610128565b809150509295509295909350565b60805160a05160c05160e0516101005161326d61022a60003960008181610636015281816106e001528181610b0e015281816113ea0152818161187e015261196e01526000610542015260006102e601526000818161027a01528181611369015261203c01526000610414015261326d6000f3fe6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c00330000000000000000000000004242424242424242424242424242424242424242000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","r":"0x18960edaf319a6de3f305eafae4c5e5c7fd4159e809674fe1f6956774a71138e","s":"0x45f2408f10ccf895a973164723d38495a379a6dcdc9a9a0fef8d8a7204d64b0b","yParity":"0x0","hash":"0xeb68aa080bba327cb447d95bedd671e9f3293000352a012572c6fbb9b8b7fa7f"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x12","gas":"0x213d91","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60a060405234801561001057600080fd5b50604051611eb9380380611eb983398101604081905261002f9161019c565b6001600160a01b0381166100c55760405162461bcd60e51b815260206004820152604c60248201527f44656c617965645769746864726177616c526f757465722e636f6e737472756360448201527f746f723a205f656967656e506f644d616e616765722063616e6e6f742062652060648201526b7a65726f206164647265737360a01b608482015260a4015b60405180910390fd5b6001600160a01b0381166080526100da6100e0565b506101cc565b600054610100900460ff16156101485760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bc565b60005460ff908116101561019a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156101ae57600080fd5b81516001600160a01b03811681146101c557600080fd5b9392505050565b608051611ccb6101ee600039600081816101fa0152610be00152611ccb6000f3fe60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000000000000000000000000000000000000000000000169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c00330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6","r":"0x7076b7225a2d4dd4a63a72b60f5e7f1a0dcc0510d153cd8e666eeff267dd664e","s":"0x1247f35e7e1b05a85ea3c6d097d68d8fda29be88dd3d6bb6e7cc0afc812cea59","yParity":"0x0","hash":"0xd731646803dbeb86f6882b501adfb712ddd0c0ab58ebd0b070794de92c7777b6"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x13","gas":"0x3806e","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010422bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x78419f01e64a4dc882522d491d00f3dc6cbdfb1331764afd3a2ced7ed97bbf79","s":"0x5804ad26a7d1063df47223727def106f21b785c488140e47d179ae281f9ea406","yParity":"0x1","hash":"0xb6a38a3d8da1705b9b28d965f44c38bad15f54d84fdaf02eac16b102176b150c"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xf75a7a59382e0738da333f3d7ae4ad35b1e26563e6d9409cf8130b2641eee215","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x240603a7bea698de3f2403e7a1b9261706a6acebc3966ae340500e211168629e","transactionsRoot":"0x2be7553a5865adbc6bff815f04f505c924560d3c96a50089e7cffa58510bcdcd","receiptsRoot":"0xe8296af17e54e8f4a8746cf8b3b1e0c54684b30b6d2ec46e28d7849a63f486e4","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000010000000000000000000000000000000000000000000100000000000000000041000000000000000000400000402000001002000000000000000000000000000020000020000000000000300800800000004000000000000000000000000440000000100000000000000000000000000000000000080000000000000100000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008002000000000000020000000000000000100400800000400000000000000000000000000000001400200","difficulty":"0x0","number":"0xc","gasLimit":"0x1c9c380","gasUsed":"0x29509","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x11f9ca37","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x17","gas":"0x3c6c3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c4d4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","r":"0x7e791feb791c6a1b5c06945c2e1e6b420cc1b666ec0b184ce951a8dd6034f2b","s":"0x33920b9f39f3dfb6806b1aa4cc3b780b3e97c41a414b396ba34e713c89f41804","yParity":"0x0","hash":"0x70bb1d58f6521a3b3c19dd151c65f4903e57a4c0979f69d1d5d1ebc8e9929cfc"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6f5c23d23cc1a6585e03a9255d0017fa2e89b1cb671629ef6ee84a9608a08afe","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xb564c05c18623774f460e1eb14403b676e5dc681d3734380e8801ae8e15ff197","transactionsRoot":"0x3ee4b26732cd372636de073575622b7aa437e89572212abf3bccadf747e6d4b6","receiptsRoot":"0xa837cedd8bbea6f0a77ddbb4ec5246d979d66d06aeeee352428152099ca813c1","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000080000400000000000000000000000000001001000000000000000000000000002000000000250000000010000000000400000000000000000000000000000000000000000800000000000000000000000040000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000420000000000001000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x2bbbe6","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e0279f3","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x7010d32e53c3de99ade90e4969b936bf774fa7ba08a70148efb95611f35d00d5","s":"0x5b017d16807d0f8c1e2e316aa8fd82bc12e79a7c98281c383ca0fa1e70411dbf","yParity":"0x0","hash":"0x270f5665c89b4abca1028c602097170fb3da69543a0a0d50d7b432b3900a04b6"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x4","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xbb3f68ee3180c27d72b405e0f026c2f0850752c24689f47c6e300eaa43515180","s":"0x34b3b278acb7bf45b95f7e3f8846f22f72104101a486fcfca6bf91b3cbf5799","yParity":"0x1","hash":"0x83cbcad6bf507df8c527396595303607713f92c0dfbcc85a90b9df7d1bc1d335"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x5","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xf9e1bbefcc019cfa874d1f5ac222a36ced2ed0cc4b13cd84b61877f50c39bd26","s":"0x2aee156afee3ea63f31cbbca7e8c006e5cd7c52f14e0905f9d68adb01856554f","yParity":"0x1","hash":"0x38f2b8e4d56e8cd317b7ec6c7f676ead48e1c7c86e17619810ea766df8bea1cb"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x6","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xec8f935496f4d6543cf6d50480ebfb79c485939c970903a225816fad6cb79c5b","s":"0x32773d528645b94728b83aa9c304e714ba65325ba91e0b69504510896524ee56","yParity":"0x1","hash":"0xd4bc553858d9284ea2380fa803173ac8864efeb45752b89fc1ab2c45958a1d1d"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x7","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xbdeca6fc6c63bcaa9fa5c0c7d2c32314ae2e759375e86b55bf37e90dff1a8c09","s":"0x3af0f51f632c8f7bde3d4406ee621f7d99448c0fc8097bdd4f6bbbb43059a3db","yParity":"0x0","hash":"0x836a4ac02c16fb1dbcfa393cd13acedc12dabdd7dd96484031d8211cb9f67a38"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8cae02cb1bf5a00c0dc81512da78bfba82defad76767efdc0262e9990a3671be","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x83ba709dd30ac522b5b053a7c87aad030ee9c00ab3ad29b8f95ca02c3ec026b0","transactionsRoot":"0xda4b97ccde95448dce077180642c29d61e762aea1dcc332c06896a5df8c6ec5a","receiptsRoot":"0x182a2e9742b3ef9ef4ac4b474099ae47a76c21a6f5d697c603b80bdd3cd74782","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000008000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x6be89","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x21","gas":"0x8c3ea","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6106948061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b03831681526000602060406020840152835180604085015260005b8181101561063c57858101830151858201606001528201610620565b506000606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212204991d74046566cb91b8d4cf7495532eedcea4124e157cfebcba924ceb7fba96464736f6c63430008180033","r":"0x93e9feb25a043dd56be95c4aaa862f8c39f632c1b88ec096725903cfd6687799","s":"0x4ce0ff0989724862832bffc885ae8b412a2921ea11b848c48d04d4698e078c2e","yParity":"0x0","hash":"0xa3ad69458743fe5b53a01650375595a9d2b5aa966e76a95084434d006819eaa7"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6123a7340e377c767e6c8d3b963bf034d4947d0822a0da90a38485af5c6559c3","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xd99a925b0766892487ab3bd708338bd1ecc92ac105ed09e3089e95fcf65c3e7b","transactionsRoot":"0x2994e29b0602a457711856fbeb6537349bd8998a76080f8ef467aacc01f9ecf7","receiptsRoot":"0x14874d660a88e54c25eb88a09d6f7fa3defce4d6a79aea101497816728a869ee","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x04000000000000000000000040000000400400000000000000800000000000000000000800000000000000000000000000020100000000100000000000000000000000000800000000000400000002000001000240000018000000000000000000000000820000000000000100000820000000000000000000000000000000400000000100000000000000000004000000000000000080000000100000000000000000000000000000000000000400000004000000000000000000000000000000000020400000280000000800040000100004002000001000000001000020200000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0x51f347","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x17be262c","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x31","gas":"0x65a763","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6101806040523480156200001257600080fd5b506040516200606038038062006060833981016040819052620000359162000419565b6001600160a01b0380851660805280841660a05280831660c052811660e05281848482846200006362000341565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000481565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000481565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e8919062000481565b6001600160a01b0390811661016052851690506200023d57604051630b0f5aa160e11b815260206004820152600c60248201526b6176734469726563746f727960a01b60448201526064015b60405180910390fd5b6001600160a01b0383166200028b57604051630b0f5aa160e11b81526020600482015260126024820152713932bbb0b93239a1b7b7b93234b730ba37b960711b604482015260640162000234565b6001600160a01b038216620002e457604051630b0f5aa160e11b815260206004820152601360248201527f7265676973747279436f6f7264696e61746f7200000000000000000000000000604482015260640162000234565b6001600160a01b0381166200032d57604051630b0f5aa160e11b815260206004820152600d60248201526c7374616b65526567697374727960981b604482015260640162000234565b6200033762000341565b50505050620004a8565b600054610100900460ff1615620003ab5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840162000234565b60005460ff9081161015620003fe576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200041657600080fd5b50565b600080600080608085870312156200043057600080fd5b84516200043d8162000400565b6020860151909450620004508162000400565b6040860151909350620004638162000400565b6060860151909250620004768162000400565b939692955090935050565b6000602082840312156200049457600080fd5b8151620004a18162000400565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051615aaa620005b6600039600081816107d80152611c690152600081816105290152611e7c01526000818161055d0152818161206901526122590152600081816105c40152818161146f0152818161192f01528181611ad60152611d1d0152600081816111a7015281816112f80152818161138f01528181612e8201528181612ffb015261309a015260008181610fce0152818161105d015281816110dd01528181612619015281816126e501528181612dbd0152612f560152600081816137580152818161381401526138f701526000818161058e0152818161266d0152818161274101526127c00152615aaa6000f3fe60806040526004361061026b5760003560e01c8063886f119511610144578063df5cf723116100b6578063f7013ef61161007a578063f7013ef614610872578063f9120af614610892578063fabc1cbc146108b2578063fc299dee146108d2578063fce36c7d146108f2578063fd4c3b7c1461091257600080fd5b8063df5cf723146107c6578063e481af9d146107fa578063ea5ca34b1461080f578063f2fde38b14610825578063f474b5201461084557600080fd5b8063a98fb35511610108578063a98fb355146106cf578063ab21739a146106ef578063b099627e1461070f578063b753645e14610779578063b98d090814610799578063d66eaabd146107b357600080fd5b8063886f1195146106315780638da5cb5b1461065157806395c6d6041461066f5780639926ee7d1461068f578063a364f4da146106af57600080fd5b80634a5bf632116101dd5780635df45946116101a15780635df4594614610517578063683048351461054b5780636b3aa72e1461057f5780636d14a987146105b257806370a08231146105e6578063715018a61461061c57600080fd5b80634a5bf6321461044d5780634ae07c3714610485578063595c6a67146104b35780635ac86ab7146104c85780635c975abb146104f857600080fd5b806318daeeaf1161022f57806318daeeaf1461038d5780632e1a7d4d146103ad57806333cfb7b7146103cd5780633bc28c8c146103fa578063416c7e5e1461041a5780634223d5511461043a57600080fd5b806306045a91146102b257806310d67a2f146102e7578063136439dd14610307578063137122b514610327578063171f1d5b1461035657600080fd5b366102ad5760fc546005906020908116036102a15760405162461bcd60e51b81526004016102989061495a565b60405180910390fd5b6102ab3334610932565b005b600080fd5b3480156102be57600080fd5b506102d26102cd366004614ab5565b6109c2565b60405190151581526020015b60405180910390f35b3480156102f357600080fd5b506102ab610302366004614b56565b610ae4565b34801561031357600080fd5b506102ab610322366004614b73565b610b97565b34801561033357600080fd5b506102d2610342366004614b9b565b60cc54600160ff9092169190911b16151590565b34801561036257600080fd5b50610376610371366004614c78565b610cd6565b6040805192151583529015156020830152016102de565b34801561039957600080fd5b506102ab6103a8366004614b9b565b610e60565b3480156103b957600080fd5b506102ab6103c8366004614b73565b610ea8565b3480156103d957600080fd5b506103ed6103e8366004614b56565b610fa9565b6040516102de9190614cc9565b34801561040657600080fd5b506102ab610415366004614b56565b61145c565b34801561042657600080fd5b506102ab610435366004614d24565b61146d565b6102ab610448366004614b56565b6115a4565b34801561045957600080fd5b5060cb5461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561049157600080fd5b506104a56104a0366004614fff565b6115da565b6040516102de92919061509a565b3480156104bf57600080fd5b506102ab61250e565b3480156104d457600080fd5b506102d26104e3366004614b9b565b60fc54600160ff9092169190911b9081161490565b34801561050457600080fd5b5060fc545b6040519081526020016102de565b34801561052357600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055757600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046d565b3480156105be57600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f257600080fd5b50610509610601366004614b56565b6001600160a01b0316600090815260ca602052604090205490565b34801561062857600080fd5b506102ab6125d5565b34801561063d57600080fd5b5060fb5461046d906001600160a01b031681565b34801561065d57600080fd5b506033546001600160a01b031661046d565b34801561067b57600080fd5b506102d261068a36600461512b565b6125e9565b34801561069b57600080fd5b506102ab6106aa366004615176565b61260e565b3480156106bb57600080fd5b506102ab6106ca366004614b56565b6126da565b3480156106db57600080fd5b506102ab6106ea366004615221565b6127a1565b3480156106fb57600080fd5b506102ab61070a366004615271565b6127f5565b34801561071b57600080fd5b5061075761072a366004614b73565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102de565b34801561078557600080fd5b506102ab610794366004614b73565b612bc7565b3480156107a557600080fd5b506097546102d29060ff1681565b6102ab6107c1366004615298565b612bd4565b3480156107d257600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080657600080fd5b506103ed612db7565b34801561081b57600080fd5b5061050960cc5481565b34801561083157600080fd5b506102ab610840366004614b56565b613163565b34801561085157600080fd5b50610509610860366004614b56565b60ca6020526000908152604090205481565b34801561087e57600080fd5b506102ab61088d3660046152ea565b6131d9565b34801561089e57600080fd5b506102ab6108ad366004614b56565b6133f9565b3480156108be57600080fd5b506102ab6108cd366004614b73565b613423565b3480156108de57600080fd5b5060655461046d906001600160a01b031681565b3480156108fe57600080fd5b506102ab61090d36600461534e565b61357f565b34801561091e57600080fd5b506102ab61092d366004614b9b565b61392e565b8060000361095657604051632097692160e11b815260048101829052602401610298565b6001600160a01b038216600090815260ca60205260408120805483929061097e9084906153d8565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25050565b60fc546000906002906004908116036109ed5760405162461bcd60e51b81526004016102989061495a565b60006001600160a01b038416610a04575085610a30565b8684604051602001610a179291906153eb565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610a55576000925050610ad7565b600081815260c96020526040902054640100000000900460ff16610a7d576000925050610ad7565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610ad1888a838a613975565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615406565b6001600160a01b0316336001600160a01b031614610b8b5760405162461bcd60e51b815260040161029890615423565b610b948161398d565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c03919061546d565b610c1f5760405162461bcd60e51b81526004016102989061548a565b60fc5481811614610c985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d1e57610d1e6154d2565b60200201518951600160200201518a60200151600060028110610d4357610d436154d2565b60200201518b60200151600160028110610d5f57610d5f6154d2565b602090810291909101518c518d830151604051610dbc9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610ddf91906154e8565b9050610e52610df8610df18884613a84565b8690613b15565b610e00613baa565b610e48610e3985610e33604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613a84565b610e428c613c6a565b90613b15565b886201d4c0613cf9565b909890975095505050505050565b610e68613f13565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b60fc54600390600890811603610ed05760405162461bcd60e51b81526004016102989061495a565b33600090815260ca6020526040902054821115610f215733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018490526044820152606401610298565b33600090815260ca602052604081208054849290610f4090849061550a565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a2604051339083156108fc029084906000818181858888f19350505050158015610fa4573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611039919061551d565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190615536565b90506001600160c01b038116158061116257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d919061555f565b60ff16155b156111825760408051600080825260208201909252905b50949350505050565b6000611196826001600160c01b0316613f6d565b90506000805b8251811015611262577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106111e6576111e66154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e919061551d565b61125890836153d8565b915060010161119c565b506000816001600160401b0381111561127d5761127d614991565b6040519080825280602002602001820160405280156112a6578160200160208202803683370190505b5090506000805b845181101561144f5760008582815181106112ca576112ca6154d2565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611363919061551d565b905060005b81811015611444576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190615591565b60000151868681518110611417576114176154d2565b6001600160a01b039092166020928302919091019091015284611439816155d2565b955050600101611368565b5050506001016112ad565b5090979650505050505050565b611464613f13565b610b948161402f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190615406565b6001600160a01b0316336001600160a01b03161461159b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610298565b610b9481614098565b60fc546004906010908116036115cc5760405162461bcd60e51b81526004016102989061495a565b6115d68234610932565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561163657508260a0015151604051806040016040528060018152602001600081525051145b801561165d57508260c0015151604051806040016040528060018152602001600081525051145b801561168457508260e0015151604051806040016040528060018152602001600081525051145b6116ee5760405162461bcd60e51b81526020600482015260416024820152600080516020615a5583398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610298565b825151602084015151146117665760405162461bcd60e51b815260206004820152604460248201819052600080516020615a55833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610298565b4363ffffffff168463ffffffff16106117d55760405162461bcd60e51b815260206004820152603c6024820152600080516020615a5583398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610298565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b0381111561189657611896614991565b6040519080825280602002602001820160405280156118bf578160200160208202803683370190505b5081526020860151516001600160401b038111156118df576118df614991565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50816020018190525060006119b460405180604001604052806001815260200160008152507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af919061555f565b6140df565b905060005b876020015151811015611c45576119fe886020015182815181106119df576119df6154d2565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611a1457611a146154d2565b60209081029190910101528015611ad4576020830151611a3560018361550a565b81518110611a4557611a456154d2565b602002602001015160001c83602001518281518110611a6657611a666154d2565b602002602001015160001c11611ad4576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a5583398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110611b1957611b196154d2565b60200260200101518b8b600001518581518110611b3857611b386154d2565b60200260200101516040518463ffffffff1660e01b8152600401611b759392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb69190615536565b6001600160c01b031683600001518281518110611bd557611bd56154d2565b602002602001018181525050611c3b610df1611c0f8486600001518581518110611c0157611c016154d2565b602002602001015116614172565b8a602001518481518110611c2557611c256154d2565b602002602001015161419d90919063ffffffff16565b94506001016119b9565b5050611c5083614280565b60975490935060ff16600081611c67576000611ce9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce9919061551d565b905060005b6040518060400160405280600181526020016000815250518110156123df578215611e7a578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611d7257611d726154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dda919061551d565b611de491906153d8565b11611e7a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a5583398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ed157611ed16154d2565b602001015160f81c60f81b60f81c8c8c60a001518581518110611ef657611ef66154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7691906155eb565b6001600160401b031916611f998a6040015183815181106119df576119df6154d2565b67ffffffffffffffff1916146120355760405162461bcd60e51b81526020600482015260616024820152600080516020615a5583398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610298565b6120658960400151828151811061204e5761204e6154d2565b602002602001015187613b1590919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106120be576120be6154d2565b602001015160f81c60f81b60f81c8c8c60c0015185815181106120e3576120e36154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121639190615616565b85602001518281518110612179576121796154d2565b6001600160601b039092166020928302919091018201528501518051829081106121a5576121a56154d2565b6020026020010151856000015182815181106121c3576121c36154d2565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156123d5576122528660000151828151811061220d5761220d6154d2565b60200260200101516040518060400160405280600181526020016000815250858151811061223d5761223d6154d2565b016020015160f81c60ff161c60019081161490565b156123cd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106122ae576122ae6154d2565b602001015160f81c60f81b60f81c8e896020015185815181106122d3576122d36154d2565b60200260200101518f60e0015188815181106122f1576122f16154d2565b6020026020010151878151811061230a5761230a6154d2565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123929190615616565b87518051859081106123a6576123a66154d2565b602002602001018181516123ba9190615633565b6001600160601b03169052506001909101905b6001016121e7565b5050600101611cee565b5050506000806123f98a868a606001518b60800151610cd6565b915091508161246a5760405162461bcd60e51b81526020600482015260436024820152600080516020615a5583398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610298565b806124cb5760405162461bcd60e51b81526020600482015260396024820152600080516020615a5583398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610298565b505060008782602001516040516020016124e692919061565a565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a919061546d565b6125965760405162461bcd60e51b81526004016102989061548a565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6125dd613f13565b6125e7600061431b565b565b60008184846040516125fc9291906156a2565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126565760405162461bcd60e51b8152600401610298906156b2565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906126a49085908590600401615770565b600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127225760405162461bcd60e51b8152600401610298906156b2565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050505050565b6127a9613f13565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb3559061276c9084906004016157bb565b60cb546001600160a01b031633146128355760cb54604051632cbe419560e01b81523360048201526001600160a01b039091166024820152604401610298565b60fc5460019060029081160361285d5760405162461bcd60e51b81526004016102989061495a565b60005a9050600085856040516020016128779291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff90911690036128cc576040516311cb69a760e11b815260048101839052602401610298565b8054640100000000900460ff16156128fa57604051634e78d7f960e11b815260048101839052602401610298565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca6020526040902054101561297d5760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b8152600481019290925260248201929092526044810191909152606401610298565b805460009061299490849063ffffffff16886115da565b509050604360ff1681602001516000815181106129b3576129b36154d2565b60200260200101516129c591906157ce565b6001600160601b0316606482600001516000815181106129e7576129e76154d2565b60200260200101516001600160601b0316612a0291906157f1565b1015612a955760648160000151600081518110612a2157612a216154d2565b60200260200101516001600160601b0316612a3c91906157f1565b604360ff168260200151600081518110612a5857612a586154d2565b6020026020010151612a6a91906157ce565b60405163530f5c4560e11b815260048101929092526001600160601b03166024820152604401610298565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ae1908761550a565b612aee90620111706153d8565b612af891906157f1565b9050600083600101548210612b11578360010154612b13565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612b4090849061550a565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612bba573d6000803e3d6000fd5b5050505050505050505050565b612bcf613f13565b60cc55565b60fc54600090600190811603612bfc5760405162461bcd60e51b81526004016102989061495a565b60008533604051602001612c119291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612c6057604051630c40bc4360e21b815260048101829052602401610298565b3415612cbd5733600090815260ca602052604081208054349290612c859084906153d8565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25b33600090815260ca6020526040902054831115612d0e5733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018590526044820152606401610298565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612da6913391908b908b908b90615808565b60405180910390a250505050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d919061555f565b60ff16905080600003612e5e57505060408051600081526020810190915290565b6000805b82811015612f0957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef5919061551d565b612eff90836153d8565b9150600101612e62565b506000816001600160401b03811115612f2457612f24614991565b604051908082528060200260200182016040528015612f4d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd6919061555f565b60ff1681101561315957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e919061551d565b905060005b8181101561314f576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190615591565b60000151858581518110613122576131226154d2565b6001600160a01b039092166020928302919091019091015283613144816155d2565b945050600101613073565b5050600101612f54565b5090949350505050565b61316b613f13565b6001600160a01b0381166131d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b610b948161431b565b600054610100900460ff16158080156131f95750600054600160ff909116105b806132135750303b158015613213575060005460ff166001145b6132765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff191660011790558015613299576000805461ff0019166101001790555b6001600160a01b0386166132df57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606401610298565b6001600160a01b03851661332957604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606401610298565b6001600160a01b03841661337457604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606401610298565b61337e868661436d565b60cb80546001600160a01b0319166001600160a01b0386161790556133a28661431b565b6133ac83836143ea565b80156126d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b613401613f13565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190615406565b6001600160a01b0316336001600160a01b0316146134ca5760405162461bcd60e51b815260040161029890615423565b60fc5419811960fc541916146135485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610ccb565b6065546001600160a01b031633146136145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610298565b60005b818110156138df57828282818110613631576136316154d2565b9050602002810190613643919061585f565b613654906040810190602001614b56565b6001600160a01b03166323b872dd3330868686818110613676576136766154d2565b9050602002810190613688919061585f565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613703919061546d565b506000838383818110613718576137186154d2565b905060200281019061372a919061585f565b61373b906040810190602001614b56565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cd919061551d565b90508383838181106137e1576137e16154d2565b90506020028101906137f3919061585f565b613804906040810190602001614b56565b6001600160a01b031663095ea7b37f000000000000000000000000000000000000000000000000000000000000000083878787818110613846576138466154d2565b9050602002810190613858919061585f565b6040013561386691906153d8565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d5919061546d565b5050600101613617565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d906126a490859085906004016158e5565b613936613f13565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b6000836139838685856144d0565b1495945050505050565b6001600160a01b038116613a1b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610298565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613aa0614880565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613acf57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610298565b505092915050565b6040805180820190915260008082526020820152613b3161489e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613b6c57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610298565b613bb26148bc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613c9a600080516020615a15833981519152866154e8565b90505b613ca6816145cd565b9093509150600080516020615a158339815191528283098303613cdf576040805180820190915290815260208101919091529392505050565b600080516020615a15833981519152600182089050613c9d565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613d2b6148e1565b60005b6002811015613ee6576000613d448260066157f1565b9050848260028110613d5857613d586154d2565b60200201515183613d6a8360006153d8565b600c8110613d7a57613d7a6154d2565b6020020152848260028110613d9157613d916154d2565b60200201516020015183826001613da891906153d8565b600c8110613db857613db86154d2565b6020020152838260028110613dcf57613dcf6154d2565b6020020151515183613de28360026153d8565b600c8110613df257613df26154d2565b6020020152838260028110613e0957613e096154d2565b6020020151516001602002015183613e228360036153d8565b600c8110613e3257613e326154d2565b6020020152838260028110613e4957613e496154d2565b602002015160200151600060028110613e6457613e646154d2565b602002015183613e758360046153d8565b600c8110613e8557613e856154d2565b6020020152838260028110613e9c57613e9c6154d2565b602002015160200151600160028110613eb757613eb76154d2565b602002015183613ec88360056153d8565b600c8110613ed857613ed86154d2565b602002015250600101613d2e565b50613eef614900565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b031633146125e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610298565b6060600080613f7b84614172565b61ffff166001600160401b03811115613f9657613f96614991565b6040519080825280601f01601f191660200182016040528015613fc0576020820181803683370190505b5090506000805b825182108015613fd8575061010081105b15613159576001811b93508584161561401f578060f81b838381518110614001576140016154d2565b60200101906001600160f81b031916908160001a9053508160010191505b614028816155d2565b9050613fc7565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806140eb8461464f565b9050808360ff166001901b116141695760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610298565b90505b92915050565b6000805b821561416c5761418760018461550a565b9092169180614195816159f3565b915050614176565b60408051808201909152600080825260208201526102008261ffff16106141f95760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610298565b8161ffff1660010361420c57508161416c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061427557600161ffff871660ff83161c81169003614258576142558484613b15565b93505b6142628384613b15565b92506201fffe600192831b169101614228565b509195945050505050565b604080518082019091526000808252602082015281511580156142a557506020820151155b156142c3575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a1583398151915284602001516142f691906154e8565b61430e90600080516020615a1583398151915261550a565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166143d85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610298565b6143e18261431b565b6115d68161402f565b60fb546001600160a01b031615801561440b57506001600160a01b03821615155b61448d5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26115d68261398d565b6000602084516144e091906154e8565b156145675760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610298565b8260205b855181116111795761457e6002856154e8565b6000036145a2578160005280860151602052604060002091506002840493506145bb565b8086015160005281602052604060002091506002840493505b6145c66020826153d8565b905061456b565b60008080600080516020615a158339815191526003600080516020615a1583398151915286600080516020615a15833981519152888909090890506000614643827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a158339815191526147d7565b91959194509092505050565b6000610100825111156146d85760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610298565b81516000036146e957506000919050565b600080836000815181106146ff576146ff6154d2565b0160200151600160f89190911c81901b92505b84518110156147ce5784818151811061472d5761472d6154d2565b0160200151600160f89190911c1b91508282116147c25760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610298565b91811791600101614712565b50909392505050565b6000806147e2614900565b6147ea61491e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061482757fe5b50826148755760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610298565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148cf61493c565b81526020016148dc61493c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149c9576149c9614991565b60405290565b60405161010081016001600160401b03811182821017156149c9576149c9614991565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a614991565b604052919050565b60006001600160401b03831115614a3b57614a3b614991565b614a4e601f8401601f19166020016149f2565b9050828152838383011115614a6257600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a8a57600080fd5b614a9983833560208501614a22565b9392505050565b6001600160a01b0381168114610b9457600080fd5b600080600080600080600080610100898b031215614ad257600080fd5b88359750602089013596506040890135955060608901356001600160601b031981168114614aff57600080fd5b94506080890135935060a08901356001600160401b03811115614b2157600080fd5b614b2d8b828c01614a79565b93505060c0890135915060e0890135614b4581614aa0565b809150509295985092959890939650565b600060208284031215614b6857600080fd5b813561416981614aa0565b600060208284031215614b8557600080fd5b5035919050565b60ff81168114610b9457600080fd5b600060208284031215614bad57600080fd5b813561416981614b8c565b600060408284031215614bca57600080fd5b614bd26149a7565b9050813581526020820135602082015292915050565b600082601f830112614bf957600080fd5b614c016149a7565b806040840185811115614c1357600080fd5b845b81811015614c2d578035845260209384019301614c15565b509095945050505050565b600060808284031215614c4a57600080fd5b614c526149a7565b9050614c5e8383614be8565b8152614c6d8360408401614be8565b602082015292915050565b6000806000806101208587031215614c8f57600080fd5b84359350614ca08660208701614bb8565b9250614caf8660608701614c38565b9150614cbe8660e08701614bb8565b905092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015614d0a5783516001600160a01b031683529284019291840191600101614ce5565b50909695505050505050565b8015158114610b9457600080fd5b600060208284031215614d3657600080fd5b813561416981614d16565b803563ffffffff8116811461431657600080fd5b60006001600160401b03821115614d6e57614d6e614991565b5060051b60200190565b600082601f830112614d8957600080fd5b81356020614d9e614d9983614d55565b6149f2565b8083825260208201915060208460051b870101935086841115614dc057600080fd5b602086015b84811015614de357614dd681614d41565b8352918301918301614dc5565b509695505050505050565b600082601f830112614dff57600080fd5b81356020614e0f614d9983614d55565b8083825260208201915060208460061b870101935086841115614e3157600080fd5b602086015b84811015614de357614e488882614bb8565b835291830191604001614e36565b600082601f830112614e6757600080fd5b81356020614e77614d9983614d55565b82815260059290921b84018101918181019086841115614e9657600080fd5b8286015b84811015614de35780356001600160401b03811115614eb95760008081fd5b614ec78986838b0101614d78565b845250918301918301614e9a565b60006101808284031215614ee857600080fd5b614ef06149cf565b905081356001600160401b0380821115614f0957600080fd5b614f1585838601614d78565b83526020840135915080821115614f2b57600080fd5b614f3785838601614dee565b60208401526040840135915080821115614f5057600080fd5b614f5c85838601614dee565b6040840152614f6e8560608601614c38565b6060840152614f808560e08601614bb8565b6080840152610120840135915080821115614f9a57600080fd5b614fa685838601614d78565b60a0840152610140840135915080821115614fc057600080fd5b614fcc85838601614d78565b60c0840152610160840135915080821115614fe657600080fd5b50614ff384828501614e56565b60e08301525092915050565b60008060006060848603121561501457600080fd5b8335925061502460208501614d41565b915060408401356001600160401b0381111561503f57600080fd5b61504b86828701614ed5565b9150509250925092565b60008151808452602080850194506020840160005b8381101561508f5781516001600160601b03168752958201959082019060010161506a565b509495945050505050565b60408152600083516040808401526150b56080840182615055565b90506020850151603f198483030160608501526150d28282615055565b925050508260208301529392505050565b60008083601f8401126150f557600080fd5b5081356001600160401b0381111561510c57600080fd5b60208301915083602082850101111561512457600080fd5b9250929050565b60008060006040848603121561514057600080fd5b83356001600160401b0381111561515657600080fd5b615162868287016150e3565b909790965060209590950135949350505050565b6000806040838503121561518957600080fd5b823561519481614aa0565b915060208301356001600160401b03808211156151b057600080fd5b90840190606082870312156151c457600080fd5b6040516060810181811083821117156151df576151df614991565b6040528235828111156151f157600080fd5b6151fd88828601614a79565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561523357600080fd5b81356001600160401b0381111561524957600080fd5b8201601f8101841361525a57600080fd5b61526984823560208401614a22565b949350505050565b60008060006060848603121561528657600080fd5b83359250602084013561502481614aa0565b600080600080606085870312156152ae57600080fd5b8435935060208501356001600160401b038111156152cb57600080fd5b6152d7878288016150e3565b9598909750949560400135949350505050565b600080600080600060a0868803121561530257600080fd5b853561530d81614aa0565b9450602086013561531d81614aa0565b9350604086013561532d81614aa0565b9250606086013561533d81614aa0565b949793965091946080013592915050565b6000806020838503121561536157600080fd5b82356001600160401b038082111561537857600080fd5b818501915085601f83011261538c57600080fd5b81358181111561539b57600080fd5b8660208260051b85010111156153b057600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561416c5761416c6153c2565b91825260601b6001600160601b031916602082015260340190565b60006020828403121561541857600080fd5b815161416981614aa0565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561547f57600080fd5b815161416981614d16565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261550557634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561416c5761416c6153c2565b60006020828403121561552f57600080fd5b5051919050565b60006020828403121561554857600080fd5b81516001600160c01b038116811461416957600080fd5b60006020828403121561557157600080fd5b815161416981614b8c565b6001600160601b0381168114610b9457600080fd5b6000604082840312156155a357600080fd5b6155ab6149a7565b82516155b681614aa0565b815260208301516155c68161557c565b60208201529392505050565b6000600182016155e4576155e46153c2565b5060010190565b6000602082840312156155fd57600080fd5b815167ffffffffffffffff198116811461416957600080fd5b60006020828403121561562857600080fd5b81516141698161557c565b6001600160601b03828116828216039080821115615653576156536153c2565b5092915050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561569557815185529382019390820190600101615679565b5092979650505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b8181101561575057602081850181015186830182015201615734565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b038316815260406020820152600082516060604084015261579a60a084018261572a565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614a99602083018461572a565b6001600160601b03818116838216028082169190828114613b0d57613b0d6153c2565b808202811582820484141761416c5761416c6153c2565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60008235609e1983360301811261587557600080fd5b9190910192915050565b803561431681614aa0565b8183526000602080850194508260005b8581101561508f5781356158ad81614aa0565b6001600160a01b03168752818301356158c58161557c565b6001600160601b031687840152604096870196919091019060010161589a565b60208082528181018390526000906040808401600586901b8501820187855b888110156159e557878303603f190184528135368b9003609e1901811261592a57600080fd5b8a0160a0813536839003601e1901811261594357600080fd5b820188810190356001600160401b0381111561595e57600080fd5b8060061b360382131561597057600080fd5b828752615980838801828461588a565b9250505061598f88830161587f565b6001600160a01b031688860152818701358786015260606159b1818401614d41565b63ffffffff169086015260806159c8838201614d41565b63ffffffff16950194909452509285019290850190600101615904565b509098975050505050505050565b600061ffff808316818103615a0a57615a0a6153c2565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220cde428f3f88df95c90a1ec8fecb6c7eba0ec71b263a25efb19209458df8a2f3d64736f6c634300081800330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","r":"0xa68723da6fa453a1de345ddf852ce89f2fca39f4cd162f9550b41f5bc707576c","s":"0x7634ea8fa0e09df4e2465f3184ccfca37f0c6210ac94e1f99bbf0e35d0efc130","yParity":"0x1","hash":"0xcaac23213250d1c9ea03e7cce28c443642d5d365384c90182a542d3c8e41fcfc"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x32","gas":"0x3bb1b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000851356ae760d987e095750cceb3bc6014560891c0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x2b935af42b83230a4c7a2115df8d0621799d6a84721fe73aed05cdd726b2855a","s":"0x7b519075e397076f82856f9126e0b02dfe2ae77f912fbb506fb5fda41f098bfb","yParity":"0x0","hash":"0x3927bd17d98db6bd6f279abf413723779722b1834e3d1175f5b89e3ed46acb90"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x33","gas":"0xee61","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x851356ae760d987e095750cceb3bc6014560891c","value":"0x0","accessList":[],"input":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","r":"0xa4af07a970435231496626a55d0d80bdafa530a861e2733ad1dc81c9478dbd0e","s":"0x7f8b31e496c29254359c94feffa8ad077b0f554805c9f4cf4b9a64f8257299ad","yParity":"0x1","hash":"0x74ee4298c5f7bced42025541b4db7c198d431024c87cc89a6e62321bc41eba1c"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x34","gas":"0xb2fa","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x851356ae760d987e095750cceb3bc6014560891c","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x628778887e0b383a99a9596644da7d0d8a4991c36607ebcef7a5b9f113c113a6","s":"0x2982852c1cfe3cf0128927d2b56e96580aa806de9d06a09d4d2c3697d3f3fdcc","yParity":"0x0","hash":"0xb64f4d13bee1d7bccb889b359e8cbbc06d5098199df13504e8d8f2b150adae89"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8f6def7598ebf6325464e3f3f7fd9c78a13f01f5a08eed69ddbd87c3874c510b","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xa2780b06ca53a4b1c0ae533d4953a8329951f004493197cdd0e1c8d4d49629e1","transactionsRoot":"0xb0fc34ddf98928f061106e45879b96ea48aa111c2e2abd6f44ab54f594e73201","receiptsRoot":"0x8b622251c758c8284f4d8eeecc5e9cc8b54210329e03fb8383cb2cbe9d2a1bae","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000080000000000800000000000000000000000000000000000000000000000000000000000002000001000000000400000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400002010000100000000000000000000000000000020000000200000000000040000040000002000000000000000200020000000000000000000000000000000000000000000000000000000000100000000","difficulty":"0x0","number":"0xe","gasLimit":"0x1c9c380","gasUsed":"0x396ec","timestamp":"0x67db1b07","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xd3ee11b","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x39","gas":"0x4aa21","maxFeePerGas":"0x21fce0f9","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60806040526040516104d43803806104d4833981016040819052610022916102d1565b61002e82826000610035565b50506103ee565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104ad60279139610180565b9392505050565b6001600160a01b0381163b61013f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6101e85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610136565b600080856001600160a01b031685604051610203919061039f565b600060405180830381855af49150503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b50909250905061025482828661025e565b9695505050505050565b6060831561026d5750816100c6565b82511561027d5782518084602001fd5b8160405162461bcd60e51b815260040161013691906103bb565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102c85781810151838201526020016102b0565b50506000910152565b600080604083850312156102e457600080fd5b82516001600160a01b03811681146102fb57600080fd5b60208401519092506001600160401b038082111561031857600080fd5b818501915085601f83011261032c57600080fd5b81518181111561033e5761033e610297565b604051601f8201601f19908116603f0116810190838211818310171561036657610366610297565b8160405282815288602084870101111561037f57600080fd5b6103908360208301602088016102ad565b80955050505050509250929050565b600082516103b18184602087016102ad565b9190910192915050565b60208152600082518060208401526103da8160408501602087016102ad565b601f01601f19169190910160400192915050565b60b1806103fc6000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212201b5f899d9100d05ffd16b26a8e94bf20e28dd085fba06b911d8ef847c76d3bf864736f6c63430008180033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc00000000000000000000000000000000000000000000000000000000","r":"0xaeef1fde429195757f1d85498ddf332e69445b9de4bba914a1e886337c5b4a90","s":"0x742f78f97746c5f4fe0935ddb19f668b49e94d3978cbd0e51f0d9a1bf97ecd88","yParity":"0x0","hash":"0x58556afd4afb014557442d6c98a6389aa273044e5a21aedf74a48feefe1ae06a"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8489c03873e52d24deae893699abae085aedf06f85bb6b9b6df09730b7bc45a8","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xe0cdb9da27fb03ac7b7c6bb4ce42fb22b1fc15aa4a3f21486100185f995356a7","transactionsRoot":"0x7f8fa3361518d8d5e3011d295746ebf584310855b0b22c9dc291ad9f8b2ff22c","receiptsRoot":"0xd7b07148f51af6a0343e800d4dc5512d2b85ac06f98a1de35d1fd89135a20806","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000400000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000020000000000000000000008000000000000000000000040000000000000000000000000000000000080000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xf","gasLimit":"0x1c9c380","gasUsed":"0xd80f","timestamp":"0x67db1b07","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xb9daab2","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3a","gas":"0xd98e","maxFeePerGas":"0x1a7dc237","maxPriorityFeePerGas":"0x1","to":"0x851356ae760d987e095750cceb3bc6014560891c","value":"0xde0b6b3a7640000","accessList":[],"input":"0x4223d5510000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650","r":"0x331824f7b11b666f32a504c5e43d3dc5454380936f207c72b16cad1a3ff86753","s":"0x179338242926351e847633e3f9bd8d29df3dca2b4152d6db8721ea60ba02ad39","yParity":"0x0","hash":"0xc306370c87100e2e71910501503177521e8539499355f8f32be48183e250fbc3"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe8f1fde659ea68d923d7994dc04a673f0f91b8fb184302f7d70735f91a37d594","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x082c004634209f786ff88f1cdbf46ac1a9157daaf577151eb86740a684d463b4","transactionsRoot":"0xe418b240f03aab4dfd7b227fbc35551d6e2ab4bbd89658f1e1aa6be1fd02eda1","receiptsRoot":"0x3249a512209cbf45715f343512dbd32f668395f73a9e164baf79628faecf70f7","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xe","gasLimit":"0x1c9c380","gasUsed":"0x1dd7a5","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xdd1c92d","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1a","gas":"0x2011a3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x60a060405234801561001057600080fd5b50604051611d33380380611d3383398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b608051611bc761016c60003960008181610216015281816107a801528181610b490152610c130152611bc76000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9","r":"0x44422573f02540503f4311a9f3fe550be1a86743be96bd1d59e08223dd6335a8","s":"0x4d50fa6deb86a2f24db740fd1b2371e5531aa1965965f71a721d16b5eeccee99","yParity":"0x0","hash":"0x414c1ede6b128e717c1643ab40a93b262507151357271cb4d904c1961d7d7b18"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1b","gas":"0x6b713","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052348015600f57600080fd5b506105298061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033","r":"0xe9b95906216f312ac6ba6e2f49fe4e2ec42f1eef4e648eccfe0c15556e4aef54","s":"0x137b091a39020f772abdb8b60bfe0c2dbd5a8484cf52f3cf230b479e3c368051","yParity":"0x1","hash":"0xbd915f86d3825918e7b3e23f3a26470ab72a7643e95da39926f2f79c5e79e809"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x4c8f7bfcf5d807fea30fbcc02c688bfccc118830bd778955769d2bcb0cbc8ddf","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x2283578ccfb74b72eb2c45e58accfb7689a181046103902c06e6ef1e38cec5b0","transactionsRoot":"0x43ae13ed2a4ab5ff1ac8e9de018f8d045883c4abb1b599345c5c25f1666389ee","receiptsRoot":"0x784dd9e98b6f00ad271e8b84c4917bcbab2b639c31336dfd48bb5ef7325810ac","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000008000000000","difficulty":"0x0","number":"0xb","gasLimit":"0x1c9c380","gasUsed":"0x64cb","timestamp":"0x67db1b03","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x136ab58f","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x36","gas":"0x9368","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xa9bc09dc8a85a004b62eaca627be3e73d9da04793b493c9005b54db75bacad73","s":"0x7644f15b2ffa78300494a0e0df390613c15f5a4dcedac228fb882d7fc954d9a8","yParity":"0x0","hash":"0x97df6ec97322402615aae7fb1edc6fe2d98c25e08dd4f26eec9f1fde3a9947eb"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x62b0c97c7ed58c4035a500c2382e6d3ffb36075065858a5374f76dcb3b25e231","transactionsRoot":"0xe4de0e1967f9f359ffbcdbf82a6e36c1b64b97fdb54667a6789f32475adba769","receiptsRoot":"0xfc912922b1e8e658560a8769df0c1b6a5cbd2c8f435ba057e2d8b9ffcc7917c3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x8bf2e","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x295b7da7","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x8","gas":"0xb5dcb","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","value":"0x0","accessList":[],"input":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x637333098e02f7dc20a74251a554e685aeda89836139e106fb3894b4db59f76d","s":"0x70b0711bcf0df6b3e00bb152df5bab575d2945e76848f9a3cdc9ad33f1fb468","yParity":"0x1","hash":"0xa08de92bbb1ad733fc0a8c40fa54118c643385190c6953b3cb0aee8b32f185fd"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xcc694f0b3b0405bba2ef2fabf68314f0ccd5a2f46fa295879dc7667bc5089867","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x7ca26fc9ac9e2d48342b59d744d72ddadff420383ddba63ba3aaac117ae58ed8","transactionsRoot":"0x3be2e91ca1599c737d0c5e0f197b61541de2524a361e3ba6f514611dd00a91fd","receiptsRoot":"0x3f1e3cf4feba0c314d3480c56f3164847b963f6238e69834df0900fd7c7bda37","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000002100000000000000000000000000002000000000400000000000000000000000000000000000000000000100000004000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002020000800000000000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x11","gasLimit":"0x1c9c380","gasUsed":"0x15235","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x97ea63a","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1e","gas":"0x15b37","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","value":"0x0","accessList":[],"input":"0xdf5b3547000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000","r":"0xdaeb2a4acde0a569e0b0c8f5bb5509413a47c007de0f22b2effb3e935bdb203b","s":"0x368e5050d975862c128fe3983107c1808f99fb459612cc981d12161d6281731e","yParity":"0x1","hash":"0xd44073f051108c8f3c39edf183d0bcaea084672b414c2374c6d6750e9ef9fa27"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1f","gas":"0x9368","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x51fdc1671286a48495d3af4d1b5fd6bad2e3d25fbf027be013a666f3b5e698bc","s":"0x3bfabc59a357de3c51aed3025d9924e12f8c7b589027430904c137a74f498ca6","yParity":"0x0","hash":"0x046411743d2c08a8f69f7117e4aed15eb84999f401e950cafac8436c9d2c04d8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xe88d71ee7e8bad78e4747fc04c585a7b53bd2f42c75a8e5fa809f94fa05768b6","transactionsRoot":"0xe79fc5ef0c818c2913467fac6fd8801ab8822c5572d659880264e005d298c91c","receiptsRoot":"0x34d63a3680b3802b85debef82a2c6989208e9ae96e9312085635ef5897eba086","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000010000000000000000000000000000000000000000000000100000400000000004000000000000000000000400000002000001000010000010010000000000000000000000020000000000000100800808000004000000000000000000000000400000000100000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002228000000000000000020000000000000000000000000000000000000000001080000000100000000400000","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0x32a44","timestamp":"0x67db0553","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1766a3c3","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x14","gas":"0x37899","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x7ab46d716e66c3eeb4a6ceb26eee70c1f5ef89a834687f21985a46fc77ec5e64","s":"0x390c491ccb1362f86e47b10cffd0ab9428bcd25ea1067311a11d8b4d997d0260","yParity":"0x1","hash":"0xfd0cd693bcd0f6192a593b8edcbcfd149e34e760aca4b512b7292d66dff4c2f8"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x15","gas":"0xe692","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x5f44cefb759d52a39147633a4bffe9cf3a873902abed2277084b63e9ef2ff757","s":"0x342c1e6c76de08e20423d316dd192a43702c63b8c2825043d3b0dcb69d70f5db","yParity":"0x0","hash":"0xdbeaad0376d936df8f5bb54707e0b78789158df3505b3401a68e8d7b418ccad3"}},"impersonated_sender":null}],"ommers":[]}],"transactions":[{"info":{"transaction_hash":"0x836a4ac02c16fb1dbcfa393cd13acedc12dabdd7dd96484031d8211cb9f67a38","transaction_index":4,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":7,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x2bbbe6","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851","block_number":3},{"info":{"transaction_hash":"0xe405e21ba26d4a3b0a72c85452048c4f59cb45eff93e20f4008c71fda12766b8","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":117292,"gas_limit":170823,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":111022,"gas_limit":162030,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":98133,"gas_limit":147028,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Stop","out":"0x","nonce":22,"gas_used":140412},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x2247c","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000100000000000000000000000400080000000000400000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000100000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xf75a7a59382e0738da333f3d7ae4ad35b1e26563e6d9409cf8130b2641eee215","block_number":11},{"info":{"transaction_hash":"0x58556afd4afb014557442d6c98a6389aa273044e5a21aedf74a48feefe1ae06a","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60806040526040516104d43803806104d4833981016040819052610022916102d1565b61002e82826000610035565b50506103ee565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104ad60279139610180565b9392505050565b6001600160a01b0381163b61013f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b0384163b6101e85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610136565b600080856001600160a01b031685604051610203919061039f565b600060405180830381855af49150503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b50909250905061025482828661025e565b9695505050505050565b6060831561026d5750816100c6565b82511561027d5782518084602001fd5b8160405162461bcd60e51b815260040161013691906103bb565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102c85781810151838201526020016102b0565b50506000910152565b600080604083850312156102e457600080fd5b82516001600160a01b03811681146102fb57600080fd5b60208401519092506001600160401b038082111561031857600080fd5b818501915085601f83011261032c57600080fd5b81518181111561033e5761033e610297565b604051601f8201601f19908116603f0116810190838211818310171561036657610366610297565b8160405282815288602084870101111561037f57600080fd5b6103908360208301602088016102ad565b80955050505050509250929050565b600082516103b18184602087016102ad565b9190910192915050565b60208152600082518060208401526103da8160408501602087016102ad565b601f01601f19169190910160400192915050565b60b1806103fc6000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212201b5f899d9100d05ffd16b26a8e94bf20e28dd085fba06b911d8ef847c76d3bf864736f6c63430008180033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc00000000000000000000000000000000000000000000000000000000","output":"0x608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212201b5f899d9100d05ffd16b26a8e94bf20e28dd085fba06b911d8ef847c76d3bf864736f6c63430008180033","gas_used":160988,"gas_limit":231441,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xc0c53b8b000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc","output":"0x","gas_used":97488,"gas_limit":200421,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Return","out":"0x608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212201b5f899d9100d05ffd16b26a8e94bf20e28dd085fba06b911d8ef847c76d3bf864736f6c63430008180033","nonce":57,"gas_used":235244},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x396ec","logs":[{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0"],"data":"0x"},{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000080000000000800000000000000000000000000000000000000000000000000000000000002000001000000000400000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400002010000100000000000000000000000000000020000000200000000000040000040000002000000000000000200020000000000000000000000000000000000000000000000000000000000100000000"},"block_hash":"0x8489c03873e52d24deae893699abae085aedf06f85bb6b9b6df09730b7bc45a8","block_number":14},{"info":{"transaction_hash":"0x80ad60ea39051d4db7ecd3383a51651b4017c9c2c7613e87784190be41ab3dc5","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5060405161074538038061074583398101604081905261002f91610259565b60005b825181101561006d576100658382815181106100505761005061032f565b6020026020010151600161007e60201b60201c565b600101610032565b5061007781610150565b5050610345565b6001600160a01b0382166100ef5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101be5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e6565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025457600080fd5b919050565b6000806040838503121561026c57600080fd5b82516001600160401b038082111561028357600080fd5b818501915085601f83011261029757600080fd5b81516020828211156102ab576102ab610227565b8160051b604051601f19603f830116810181811086821117156102d0576102d0610227565b6040529283528183019350848101820192898411156102ee57600080fd5b948201945b83861015610313576103048661023d565b855294820194938201936102f3565b9650610322905087820161023d565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6103f1806103546000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082d0bf2d943ad14055e4e88fc955638b565f43d854afdcd3d6cd966fe8c2201a64736f6c634300081800330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082d0bf2d943ad14055e4e88fc955638b565f43d854afdcd3d6cd966fe8c2201a64736f6c63430008180033","gas_used":250214,"gas_limit":350091,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082d0bf2d943ad14055e4e88fc955638b565f43d854afdcd3d6cd966fe8c2201a64736f6c63430008180033","nonce":34,"gas_used":333472},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x516a0","logs":[{"address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}],"logsBloom":"0x00000000000000040000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000004001000000000000000"},"block_hash":"0x86f63f579b0459b5ac7667ae5594c6ca15ea0c9a8bcfa6fccccebf14b813f1f0","block_number":2},{"info":{"transaction_hash":"0xa3ad69458743fe5b53a01650375595a9d2b5aa966e76a95084434d006819eaa7","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6106948061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b03831681526000602060406020840152835180604085015260005b8181101561063c57858101830151858201606001528201610620565b506000606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212204991d74046566cb91b8d4cf7495532eedcea4124e157cfebcba924ceb7fba96464736f6c63430008180033","output":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b03831681526000602060406020840152835180604085015260005b8181101561063c57858101830151858201606001528201610620565b506000606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212204991d74046566cb91b8d4cf7495532eedcea4124e157cfebcba924ceb7fba96464736f6c63430008180033","gas_used":360915,"gas_limit":493364,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b03831681526000602060406020840152835180604085015260005b8181101561063c57858101830151858201606001528201610620565b506000606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212204991d74046566cb91b8d4cf7495532eedcea4124e157cfebcba924ceb7fba96464736f6c63430008180033","nonce":33,"gas_used":441993},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x6be89","logs":[{"address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000008000000000"},"block_hash":"0x3b70507ddbfe427c187f3f10d8792339a2d8cfaf82e4d19867cebab15a805d10","block_number":1},{"info":{"transaction_hash":"0xa1e0398c2dde583fe8c57690419d4f2ec2dee733e02fd823bd1dd6bdb141f9db","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084eb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":118552,"gas_limit":172617,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef28600000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084eb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":112194,"gas_limit":163709,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xeb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a","output":"0x","gas_used":99229,"gas_limit":148606,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4}]}],"exit":"Stop","out":"0x","nonce":25,"gas_used":141812},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x40605","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000400000002000001000000000000000000000000000000000000020000000000000100800800001004000000000000000000000000400000000100000000000000000000000000000000000080004000000000000000002000000000000000000000008400000000000000000000000000000000000000000020400000200000000000040000040000002008000001000000000020000000000000000001000000000000000000000000000000020000000000400000"},"block_hash":"0xe8f1fde659ea68d923d7994dc04a673f0f91b8fb184302f7d70735f91a37d594","block_number":13},{"info":{"transaction_hash":"0xdbdadf45fb439e8fa448e3a2a65d102e6ea90fd393e3cd024c9499759f3683cc","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","gas_used":464703,"gas_limit":636293,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","nonce":40,"gas_used":572955},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8be1b","logs":[{"address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002200000000000000000000000000000400000000000000000000040004000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x37780f8f8331e8d2be2d6824e211856bb4b85c19d1af3a2e097b73e757a721c4","block_number":4},{"info":{"transaction_hash":"0x74ee4298c5f7bced42025541b4db7c198d431024c87cc89a6e62321bc41eba1c","transaction_index":2,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x851356ae760d987e095750cceb3bc6014560891c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":22850,"gas_limit":39693,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":15552,"gas_limit":31927,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":1,"children":[3],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":9644,"gas_limit":25654,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":2,"children":[],"idx":3,"trace":{"depth":3,"success":true,"caller":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":2346,"gas_limit":18107,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713","0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c"],"data":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":51,"gas_used":44182},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5171b3","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713","0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c"],"data":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000800000000000000000000000000000240000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000004000000001000000001000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x3460ed4e668313d51c98997b446741676477fab351d852f4b5790aa39abdb5a2","block_number":9},{"info":{"transaction_hash":"0x3927bd17d98db6bd6f279abf413723779722b1834e3d1175f5b89e3ed46acb90","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000851356ae760d987e095750cceb3bc6014560891c0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":143329,"gas_limit":220651,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a4f7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":136857,"gas_limit":210880,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":123802,"gas_limit":194951,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5}]}],"exit":"Stop","out":"0x","nonce":50,"gas_used":167185},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x50c51d","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400400000000000000800000000000000000000800000000000000000000000000000100000000100000000000000000000000000000000000000400000002000001000000000018000000000000000000000000020000000000000100000820000000000000000000000000000000400000000100000000000000000000000000000000000080000000100000000000000000000000000000000000000400000004000000000000000000000000000000000020400000280000000000040000100000002000000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x3460ed4e668313d51c98997b446741676477fab351d852f4b5790aa39abdb5a2","block_number":9},{"info":{"transaction_hash":"0xa08de92bbb1ad733fc0a8c40fa54118c643385190c6953b3cb0aee8b32f185fd","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":8,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8bf2e","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x27a45216e52e1cce5ed8ba0bef0ff498a221b2a693ff03100f51390309e95a2c","block_number":4},{"info":{"transaction_hash":"0xbd7d5d3864c8406f75b4c00be61882ed8ea14af686ec047a447f9a3e6248d2fd","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","gas_used":464703,"gas_limit":636293,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","nonce":38,"gas_used":572955},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8be1b","logs":[{"address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000020000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000100000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000080000000000000000000000000000000000000000000000"},"block_hash":"0xef4dc3f27d825d5171606238158095ff1e6c589fd72a380fdcc10a3c3a3d3911","block_number":3},{"info":{"transaction_hash":"0xb64f4d13bee1d7bccb889b359e8cbbc06d5098199df13504e8d8f2b150adae89","transaction_index":3,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x851356ae760d987e095750cceb3bc6014560891c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":11740,"gas_limit":24386,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4445,"gas_limit":16862,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":52,"gas_used":33172},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x51f347","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000400000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000010000000000000000000000000000000000000000100000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x3460ed4e668313d51c98997b446741676477fab351d852f4b5790aa39abdb5a2","block_number":9},{"info":{"transaction_hash":"0x38f2b8e4d56e8cd317b7ec6c7f676ead48e1c7c86e17619810ea766df8bea1cb","transaction_index":2,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":5,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1a3d8a","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851","block_number":3},{"info":{"transaction_hash":"0x915e9f826dc9f67ede8161a0b96a52b57472804f5d53d99568b80d3cdf6546ec","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":98625,"gas_limit":154991,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084cf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":92267,"gas_limit":146358,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":79302,"gas_limit":131526,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4}]}],"exit":"Stop","out":"0x","nonce":24,"gas_used":121873},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1dc11","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080001000000000000000000000000000000000000004000000020000010000000000000002000000000000000000000200000400000001008008000000040000000000000000000000004000000001000000000000000000000000008000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000010000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xe8f1fde659ea68d923d7994dc04a673f0f91b8fb184302f7d70735f91a37d594","block_number":13},{"info":{"transaction_hash":"0xbdad1d302ceed6a3bebc68f75d63dcabacdb6a7dbc0e83cd8de88bb9374dcafa","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x61018060405234801561001157600080fd5b50604051613dc9380380613dc9833981016040819052610030916102d0565b86868686868686610041858261035b565b63ffffffff16156100e55760405162461bcd60e51b815260206004820152606060248201527f52657761726473436f6f7264696e61746f723a2047454e455349535f5245574160448201527f5244535f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b6100f2620151808661035b565b63ffffffff16156101915760405162461bcd60e51b815260206004820152605760248201527f52657761726473436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a4016100dc565b6001600160a01b0396871661012052949095166101405263ffffffff92831660805290821660a052811660c05291821660e05216610100526101d16101e3565b50504661016052506103919350505050565b600054610100900460ff161561024b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100dc565b60005460ff908116101561029d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146102b457600080fd5b50565b805163ffffffff811681146102cb57600080fd5b919050565b600080600080600080600060e0888a0312156102eb57600080fd5b87516102f68161029f565b60208901519097506103078161029f565b9550610315604089016102b7565b9450610323606089016102b7565b9350610331608089016102b7565b925061033f60a089016102b7565b915061034d60c089016102b7565b905092959891949750929550565b600063ffffffff83168061037f57634e487b7160e01b600052601260045260246000fd5b8063ffffffff84160691505092915050565b60805160a05160c05160e051610100516101205161014051610160516139a2610427600039600061181f0152600081816104400152612295015260006106ec01526000818161035701526120c40152600081816102cb0152612170015260008181610419015261207301526000818161065e0152611dea01526000818161060401528181611ea10152611f7c01526139a26000f3fe608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000000000460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb7880","output":"0x608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f0000000000000000000000000000000000000000000000000000000065fb788081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000076a70081565b6103e97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f0000000000000000000000000000000000000000000000000000000000093a8081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f00000000000000000000000000000000000000000000000000000000005c490081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000007a69460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f00000000000000000000000000000000000000000000000000000000005c490016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000278d00164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033","gas_used":2978924,"gas_limit":3961002,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f0000000000000000000000000000000000000000000000000000000065fb788081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000076a70081565b6103e97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f0000000000000000000000000000000000000000000000000000000000093a8081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f00000000000000000000000000000000000000000000000000000000005c490081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000007a69460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f00000000000000000000000000000000000000000000000000000000005c490016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000278d00164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033","nonce":15,"gas_used":3277944},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x320478","logs":[{"address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000"},"block_hash":"0xf4d46b6b8dbbe4e745dc4c6a56bc046bd6591c7d62dab08422124ab94c13e667","block_number":8},{"info":{"transaction_hash":"0x414c1ede6b128e717c1643ab40a93b262507151357271cb4d904c1961d7d7b18","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561001057600080fd5b50604051611d33380380611d3383398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b608051611bc761016c60003960008181610216015281816107a801528181610b490152610c130152611bc76000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9","output":"0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033","gas_used":1447443,"gas_limit":1931973,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033","nonce":26,"gas_used":1617137},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x18acf1","logs":[{"address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x81783d9d97c1968230d9d30cfdaa4670bb20c462f55b2c8713d06d119b5de3f7","block_number":14},{"info":{"transaction_hash":"0x0e82a05114b4f5500f0780cde6eb6db9ac17bed907d0bf541f1187d2c3d747f4","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec400000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc490000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","output":"0x","gas_used":17021,"gas_limit":31821,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe60000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","output":"0x","gas_used":11547,"gas_limit":25979,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":46,"gas_used":38821},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1c0397","logs":[{"address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002200040000000000100000000000000000000000000000000000040004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xd108aee174328f42558e98f2e2eb7130cc6cf0ccffa8c5751f65a8f9ba157193","block_number":6},{"info":{"transaction_hash":"0x37b270d09383137c71efb1453b09fc01c5a7173589ff736977637bf494b56cdd","transaction_index":2,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a676e781a523b5d0c0e43731313a708cb607508","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60c060405234801561001057600080fd5b50604051611f65380380611f6583398101604081905261002f9161010e565b6001600160a01b03811660805261004461004e565b504660a05261013e565b600054610100900460ff16156100ba5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561012057600080fd5b81516001600160a01b038116811461013757600080fd5b9392505050565b60805160a051611dfb61016a6000396000610ea501526000818161032401526109810152611dfb6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f00000000000000000000000000000000000000000000000000000000000000004603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","output":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033","gas_used":1560351,"gas_limit":2081559,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033","nonce":14,"gas_used":1739553},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x92cf5b","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3","block_number":7},{"info":{"transaction_hash":"0x5dead20b4c3f813eda86ad0db00804216aad53392b85ccdd5cd198703ebdb975","transaction_index":3,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xf5059a5d33d5853360d16c683c16e67980206f36","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","gas_used":464703,"gas_limit":636293,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","nonce":37,"gas_used":572955},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1afe99","logs":[{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000c00010000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000400000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x86f63f579b0459b5ac7667ae5594c6ca15ea0c9a8bcfa6fccccebf14b813f1f0","block_number":2},{"info":{"transaction_hash":"0xece0fbed8cbdcfe3cf8a43c932bc41f5a9fe7f2dde7ab7cf4e99dc08ea3468f1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":9,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8bf2e","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x593eb383f76146cd7d31e8dcede81a18678d924393e73548717d40b79427fc5d","block_number":5},{"info":{"transaction_hash":"0x70bb1d58f6521a3b3c19dd151c65f4903e57a4c0979f69d1d5d1ebc8e9929cfc","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c4d4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":145433,"gas_limit":223699,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4d4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":138898,"gas_limit":213819,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x0165878a594ca255338adfa4d48449f69242eb8f","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xd4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e8","output":"0x","gas_used":125780,"gas_limit":197782,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5},{"Log":6}]}],"exit":"Stop","out":"0x","nonce":23,"gas_used":169225},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x29509","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000010000000000000000000000000000000000000000000100000000000000000041000000000000000000400000402000001002000000000000000000000000000020000020000000000000300800800000004000000000000000000000000440000000100000000000000000000000000000000000080000000000000100000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008002000000000000020000000000000000100400800000400000000000000000000000000000001400200"},"block_hash":"0x48c9fcfff615bea7f00fb189309cc24c83bfcf62a57700ae85174e0d43903e4f","block_number":12},{"info":{"transaction_hash":"0x035e03a62da66d8142ad00924a2580943aa598f94e17ea62d19cbf8b0d149f5d","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x998abeb3e57409262ae5b751f60747921b33613e","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","gas_used":464703,"gas_limit":636293,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","nonce":39,"gas_used":572955},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x117c36","logs":[{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00002000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000080400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000100000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xef4dc3f27d825d5171606238158095ff1e6c589fd72a380fdcc10a3c3a3d3911","block_number":3},{"info":{"transaction_hash":"0xf63348d9d494abf9775ab12c8f00d13e58abb43735511d6fbdcbc50bdfbfdd46","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","output":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033","gas_used":216356,"gas_limit":302820,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033","nonce":11,"gas_used":288554},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x537874","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x5a7a3e18533c10d9e81916d33460352c00313b7387d53d582fc75258d878e46e","block_number":6},{"info":{"transaction_hash":"0xeea9931d6e3a2988ca9384428f505cc53b54c9b25f97fd5f0d4c384cda39370a","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x61010060405234801561001157600080fd5b5060405161337a38038061337a83398101604081905261003091610135565b6001600160a01b0380841660805280831660a052811660c05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516131a36101d760003960006114b70152600061046e0152600061028501526000818161051a01528181610b8201528181610ecf01528181610f230152611a6c01526131a36000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f000000000000000000000000000000000000000000000000000000000000000046036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853","output":"0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f0000000000000000000000000000000000000000000000000000000000007a6946036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033","gas_used":2568243,"gas_limit":3415449,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f0000000000000000000000000000000000000000000000000000000000007a6946036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033","nonce":13,"gas_used":2827617},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x78443a","logs":[{"address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000"},"block_hash":"0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3","block_number":7},{"info":{"transaction_hash":"0x83cbcad6bf507df8c527396595303607713f92c0dfbcc85a90b9df7d1bc1d335","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":4,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x117e5c","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851","block_number":3},{"info":{"transaction_hash":"0x2c639a7ffaf188e645bdd0f62c0f0b303593a3b144b04842affe5a3b4f3f4eef","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xc5a5c42992decbae36851359345fe25997f5c42d","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xc5a5c42992decbae36851359345fe25997f5c42d","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":28,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8bf2e","logs":[{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400004000000000000000000000000000000000000000000000400000000000000400000000000000004000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020080000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x9c3ef5b4d659952b184d2b6e033f739e0bb5933a43d84118ce3f08a7c369e0db","block_number":15},{"info":{"transaction_hash":"0x97df6ec97322402615aae7fb1edc6fe2d98c25e08dd4f26eec9f1fde3a9947eb","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4371,"gas_limit":16304,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":54,"gas_used":25803},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x64cb","logs":[{"address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000008000000000"},"block_hash":"0xe0e1967d8b4b1396e060b1c509cd17e051183b57b7db7583079a50988dd92adc","block_number":11},{"info":{"transaction_hash":"0x851c5b070f316830eef55c050a3ada207080c56674c175fb21f47a8f4a5dfb21","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x61010060405234801561001157600080fd5b50604051615c04380380615c0483398101604081905261003091610135565b6001600160a01b0380841660805280821660c052821660a05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516159ee61021660003960006126560152600081816105b10152818161101d0152818161139901528181611be5015281816129b001528181613e5b0152614347015260006107620152600081816104f901528181610feb0152818161136701528181611c7901528181612a7d01528181612c0001528181613f8101526143ed01526159ee6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061103f5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113bb5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f00000000000000000000000000000000000000000000000000000000000000004603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6","output":"0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061103f5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806113bb5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033","gas_used":4634013,"gas_limit":6148339,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061103f5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806113bb5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033","nonce":12,"gas_used":5054169},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x4d1ed9","logs":[{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000"},"block_hash":"0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3","block_number":7},{"info":{"transaction_hash":"0x046411743d2c08a8f69f7117e4aed15eb84999f401e950cafac8436c9d2c04d8","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4371,"gas_limit":16304,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":31,"gas_used":25803},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x15235","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x0e637d647581fe5de6fcbcd11328753276819facc3fd30917ff91c0602dcdcb1","block_number":17},{"info":{"transaction_hash":"0xcaac23213250d1c9ea03e7cce28c443642d5d365384c90182a542d3c8e41fcfc","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","traces":[{"parent":null,"children":[1,3,5],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101806040523480156200001257600080fd5b506040516200606038038062006060833981016040819052620000359162000419565b6001600160a01b0380851660805280841660a05280831660c052811660e05281848482846200006362000341565b50505050806001600160a01b0316610100816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e7919062000481565b6001600160a01b0316610120816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000166919062000481565b6001600160a01b0316610140816001600160a01b031681525050610120516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e8919062000481565b6001600160a01b0390811661016052851690506200023d57604051630b0f5aa160e11b815260206004820152600c60248201526b6176734469726563746f727960a01b60448201526064015b60405180910390fd5b6001600160a01b0383166200028b57604051630b0f5aa160e11b81526020600482015260126024820152713932bbb0b93239a1b7b7b93234b730ba37b960711b604482015260640162000234565b6001600160a01b038216620002e457604051630b0f5aa160e11b815260206004820152601360248201527f7265676973747279436f6f7264696e61746f7200000000000000000000000000604482015260640162000234565b6001600160a01b0381166200032d57604051630b0f5aa160e11b815260206004820152600d60248201526c7374616b65526567697374727960981b604482015260640162000234565b6200033762000341565b50505050620004a8565b600054610100900460ff1615620003ab5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840162000234565b60005460ff9081161015620003fe576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200041657600080fd5b50565b600080600080608085870312156200043057600080fd5b84516200043d8162000400565b6020860151909450620004508162000400565b6040860151909350620004638162000400565b6060860151909250620004768162000400565b939692955090935050565b6000602082840312156200049457600080fd5b8151620004a18162000400565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051615aaa620005b6600039600081816107d80152611c690152600081816105290152611e7c01526000818161055d0152818161206901526122590152600081816105c40152818161146f0152818161192f01528181611ad60152611d1d0152600081816111a7015281816112f80152818161138f01528181612e8201528181612ffb015261309a015260008181610fce0152818161105d015281816110dd01528181612619015281816126e501528181612dbd0152612f560152600081816137580152818161381401526138f701526000818161058e0152818161266d0152818161274101526127c00152615aaa6000f3fe60806040526004361061026b5760003560e01c8063886f119511610144578063df5cf723116100b6578063f7013ef61161007a578063f7013ef614610872578063f9120af614610892578063fabc1cbc146108b2578063fc299dee146108d2578063fce36c7d146108f2578063fd4c3b7c1461091257600080fd5b8063df5cf723146107c6578063e481af9d146107fa578063ea5ca34b1461080f578063f2fde38b14610825578063f474b5201461084557600080fd5b8063a98fb35511610108578063a98fb355146106cf578063ab21739a146106ef578063b099627e1461070f578063b753645e14610779578063b98d090814610799578063d66eaabd146107b357600080fd5b8063886f1195146106315780638da5cb5b1461065157806395c6d6041461066f5780639926ee7d1461068f578063a364f4da146106af57600080fd5b80634a5bf632116101dd5780635df45946116101a15780635df4594614610517578063683048351461054b5780636b3aa72e1461057f5780636d14a987146105b257806370a08231146105e6578063715018a61461061c57600080fd5b80634a5bf6321461044d5780634ae07c3714610485578063595c6a67146104b35780635ac86ab7146104c85780635c975abb146104f857600080fd5b806318daeeaf1161022f57806318daeeaf1461038d5780632e1a7d4d146103ad57806333cfb7b7146103cd5780633bc28c8c146103fa578063416c7e5e1461041a5780634223d5511461043a57600080fd5b806306045a91146102b257806310d67a2f146102e7578063136439dd14610307578063137122b514610327578063171f1d5b1461035657600080fd5b366102ad5760fc546005906020908116036102a15760405162461bcd60e51b81526004016102989061495a565b60405180910390fd5b6102ab3334610932565b005b600080fd5b3480156102be57600080fd5b506102d26102cd366004614ab5565b6109c2565b60405190151581526020015b60405180910390f35b3480156102f357600080fd5b506102ab610302366004614b56565b610ae4565b34801561031357600080fd5b506102ab610322366004614b73565b610b97565b34801561033357600080fd5b506102d2610342366004614b9b565b60cc54600160ff9092169190911b16151590565b34801561036257600080fd5b50610376610371366004614c78565b610cd6565b6040805192151583529015156020830152016102de565b34801561039957600080fd5b506102ab6103a8366004614b9b565b610e60565b3480156103b957600080fd5b506102ab6103c8366004614b73565b610ea8565b3480156103d957600080fd5b506103ed6103e8366004614b56565b610fa9565b6040516102de9190614cc9565b34801561040657600080fd5b506102ab610415366004614b56565b61145c565b34801561042657600080fd5b506102ab610435366004614d24565b61146d565b6102ab610448366004614b56565b6115a4565b34801561045957600080fd5b5060cb5461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561049157600080fd5b506104a56104a0366004614fff565b6115da565b6040516102de92919061509a565b3480156104bf57600080fd5b506102ab61250e565b3480156104d457600080fd5b506102d26104e3366004614b9b565b60fc54600160ff9092169190911b9081161490565b34801561050457600080fd5b5060fc545b6040519081526020016102de565b34801561052357600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055757600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061046d565b3480156105be57600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105f257600080fd5b50610509610601366004614b56565b6001600160a01b0316600090815260ca602052604090205490565b34801561062857600080fd5b506102ab6125d5565b34801561063d57600080fd5b5060fb5461046d906001600160a01b031681565b34801561065d57600080fd5b506033546001600160a01b031661046d565b34801561067b57600080fd5b506102d261068a36600461512b565b6125e9565b34801561069b57600080fd5b506102ab6106aa366004615176565b61260e565b3480156106bb57600080fd5b506102ab6106ca366004614b56565b6126da565b3480156106db57600080fd5b506102ab6106ea366004615221565b6127a1565b3480156106fb57600080fd5b506102ab61070a366004615271565b6127f5565b34801561071b57600080fd5b5061075761072a366004614b73565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102de565b34801561078557600080fd5b506102ab610794366004614b73565b612bc7565b3480156107a557600080fd5b506097546102d29060ff1681565b6102ab6107c1366004615298565b612bd4565b3480156107d257600080fd5b5061046d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080657600080fd5b506103ed612db7565b34801561081b57600080fd5b5061050960cc5481565b34801561083157600080fd5b506102ab610840366004614b56565b613163565b34801561085157600080fd5b50610509610860366004614b56565b60ca6020526000908152604090205481565b34801561087e57600080fd5b506102ab61088d3660046152ea565b6131d9565b34801561089e57600080fd5b506102ab6108ad366004614b56565b6133f9565b3480156108be57600080fd5b506102ab6108cd366004614b73565b613423565b3480156108de57600080fd5b5060655461046d906001600160a01b031681565b3480156108fe57600080fd5b506102ab61090d36600461534e565b61357f565b34801561091e57600080fd5b506102ab61092d366004614b9b565b61392e565b8060000361095657604051632097692160e11b815260048101829052602401610298565b6001600160a01b038216600090815260ca60205260408120805483929061097e9084906153d8565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25050565b60fc546000906002906004908116036109ed5760405162461bcd60e51b81526004016102989061495a565b60006001600160a01b038416610a04575085610a30565b8684604051602001610a179291906153eb565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610a55576000925050610ad7565b600081815260c96020526040902054640100000000900460ff16610a7d576000925050610ad7565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610ad1888a838a613975565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615406565b6001600160a01b0316336001600160a01b031614610b8b5760405162461bcd60e51b815260040161029890615423565b610b948161398d565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c03919061546d565b610c1f5760405162461bcd60e51b81526004016102989061548a565b60fc5481811614610c985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d1e57610d1e6154d2565b60200201518951600160200201518a60200151600060028110610d4357610d436154d2565b60200201518b60200151600160028110610d5f57610d5f6154d2565b602090810291909101518c518d830151604051610dbc9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610ddf91906154e8565b9050610e52610df8610df18884613a84565b8690613b15565b610e00613baa565b610e48610e3985610e33604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613a84565b610e428c613c6a565b90613b15565b886201d4c0613cf9565b909890975095505050505050565b610e68613f13565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b60fc54600390600890811603610ed05760405162461bcd60e51b81526004016102989061495a565b33600090815260ca6020526040902054821115610f215733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018490526044820152606401610298565b33600090815260ca602052604081208054849290610f4090849061550a565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a2604051339083156108fc029084906000818181858888f19350505050158015610fa4573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611039919061551d565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190615536565b90506001600160c01b038116158061116257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d919061555f565b60ff16155b156111825760408051600080825260208201909252905b50949350505050565b6000611196826001600160c01b0316613f6d565b90506000805b8251811015611262577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106111e6576111e66154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e919061551d565b61125890836153d8565b915060010161119c565b506000816001600160401b0381111561127d5761127d614991565b6040519080825280602002602001820160405280156112a6578160200160208202803683370190505b5090506000805b845181101561144f5760008582815181106112ca576112ca6154d2565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611363919061551d565b905060005b81811015611444576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190615591565b60000151868681518110611417576114176154d2565b6001600160a01b039092166020928302919091019091015284611439816155d2565b955050600101611368565b5050506001016112ad565b5090979650505050505050565b611464613f13565b610b948161402f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190615406565b6001600160a01b0316336001600160a01b03161461159b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610298565b610b9481614098565b60fc546004906010908116036115cc5760405162461bcd60e51b81526004016102989061495a565b6115d68234610932565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561163657508260a0015151604051806040016040528060018152602001600081525051145b801561165d57508260c0015151604051806040016040528060018152602001600081525051145b801561168457508260e0015151604051806040016040528060018152602001600081525051145b6116ee5760405162461bcd60e51b81526020600482015260416024820152600080516020615a5583398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610298565b825151602084015151146117665760405162461bcd60e51b815260206004820152604460248201819052600080516020615a55833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610298565b4363ffffffff168463ffffffff16106117d55760405162461bcd60e51b815260206004820152603c6024820152600080516020615a5583398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610298565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b0381111561189657611896614991565b6040519080825280602002602001820160405280156118bf578160200160208202803683370190505b5081526020860151516001600160401b038111156118df576118df614991565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50816020018190525060006119b460405180604001604052806001815260200160008152507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af919061555f565b6140df565b905060005b876020015151811015611c45576119fe886020015182815181106119df576119df6154d2565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611a1457611a146154d2565b60209081029190910101528015611ad4576020830151611a3560018361550a565b81518110611a4557611a456154d2565b602002602001015160001c83602001518281518110611a6657611a666154d2565b602002602001015160001c11611ad4576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a5583398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110611b1957611b196154d2565b60200260200101518b8b600001518581518110611b3857611b386154d2565b60200260200101516040518463ffffffff1660e01b8152600401611b759392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb69190615536565b6001600160c01b031683600001518281518110611bd557611bd56154d2565b602002602001018181525050611c3b610df1611c0f8486600001518581518110611c0157611c016154d2565b602002602001015116614172565b8a602001518481518110611c2557611c256154d2565b602002602001015161419d90919063ffffffff16565b94506001016119b9565b5050611c5083614280565b60975490935060ff16600081611c67576000611ce9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce9919061551d565b905060005b6040518060400160405280600181526020016000815250518110156123df578215611e7a578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611d7257611d726154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dda919061551d565b611de491906153d8565b11611e7a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a5583398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610298565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ed157611ed16154d2565b602001015160f81c60f81b60f81c8c8c60a001518581518110611ef657611ef66154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7691906155eb565b6001600160401b031916611f998a6040015183815181106119df576119df6154d2565b67ffffffffffffffff1916146120355760405162461bcd60e51b81526020600482015260616024820152600080516020615a5583398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610298565b6120658960400151828151811061204e5761204e6154d2565b602002602001015187613b1590919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106120be576120be6154d2565b602001015160f81c60f81b60f81c8c8c60c0015185815181106120e3576120e36154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121639190615616565b85602001518281518110612179576121796154d2565b6001600160601b039092166020928302919091018201528501518051829081106121a5576121a56154d2565b6020026020010151856000015182815181106121c3576121c36154d2565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156123d5576122528660000151828151811061220d5761220d6154d2565b60200260200101516040518060400160405280600181526020016000815250858151811061223d5761223d6154d2565b016020015160f81c60ff161c60019081161490565b156123cd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106122ae576122ae6154d2565b602001015160f81c60f81b60f81c8e896020015185815181106122d3576122d36154d2565b60200260200101518f60e0015188815181106122f1576122f16154d2565b6020026020010151878151811061230a5761230a6154d2565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123929190615616565b87518051859081106123a6576123a66154d2565b602002602001018181516123ba9190615633565b6001600160601b03169052506001909101905b6001016121e7565b5050600101611cee565b5050506000806123f98a868a606001518b60800151610cd6565b915091508161246a5760405162461bcd60e51b81526020600482015260436024820152600080516020615a5583398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610298565b806124cb5760405162461bcd60e51b81526020600482015260396024820152600080516020615a5583398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610298565b505060008782602001516040516020016124e692919061565a565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a919061546d565b6125965760405162461bcd60e51b81526004016102989061548a565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6125dd613f13565b6125e7600061431b565b565b60008184846040516125fc9291906156a2565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126565760405162461bcd60e51b8152600401610298906156b2565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906126a49085908590600401615770565b600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127225760405162461bcd60e51b8152600401610298906156b2565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050505050565b6127a9613f13565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb3559061276c9084906004016157bb565b60cb546001600160a01b031633146128355760cb54604051632cbe419560e01b81523360048201526001600160a01b039091166024820152604401610298565b60fc5460019060029081160361285d5760405162461bcd60e51b81526004016102989061495a565b60005a9050600085856040516020016128779291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff90911690036128cc576040516311cb69a760e11b815260048101839052602401610298565b8054640100000000900460ff16156128fa57604051634e78d7f960e11b815260048101839052602401610298565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca6020526040902054101561297d5760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b8152600481019290925260248201929092526044810191909152606401610298565b805460009061299490849063ffffffff16886115da565b509050604360ff1681602001516000815181106129b3576129b36154d2565b60200260200101516129c591906157ce565b6001600160601b0316606482600001516000815181106129e7576129e76154d2565b60200260200101516001600160601b0316612a0291906157f1565b1015612a955760648160000151600081518110612a2157612a216154d2565b60200260200101516001600160601b0316612a3c91906157f1565b604360ff168260200151600081518110612a5857612a586154d2565b6020026020010151612a6a91906157ce565b60405163530f5c4560e11b815260048101929092526001600160601b03166024820152604401610298565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ae1908761550a565b612aee90620111706153d8565b612af891906157f1565b9050600083600101548210612b11578360010154612b13565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612b4090849061550a565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612bba573d6000803e3d6000fd5b5050505050505050505050565b612bcf613f13565b60cc55565b60fc54600090600190811603612bfc5760405162461bcd60e51b81526004016102989061495a565b60008533604051602001612c119291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612c6057604051630c40bc4360e21b815260048101829052602401610298565b3415612cbd5733600090815260ca602052604081208054349290612c859084906153d8565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25b33600090815260ca6020526040902054831115612d0e5733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018590526044820152606401610298565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612da6913391908b908b908b90615808565b60405180910390a250505050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d919061555f565b60ff16905080600003612e5e57505060408051600081526020810190915290565b6000805b82811015612f0957604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef5919061551d565b612eff90836153d8565b9150600101612e62565b506000816001600160401b03811115612f2457612f24614991565b604051908082528060200260200182016040528015612f4d578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd6919061555f565b60ff1681101561315957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e919061551d565b905060005b8181101561314f576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190615591565b60000151858581518110613122576131226154d2565b6001600160a01b039092166020928302919091019091015283613144816155d2565b945050600101613073565b5050600101612f54565b5090949350505050565b61316b613f13565b6001600160a01b0381166131d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b610b948161431b565b600054610100900460ff16158080156131f95750600054600160ff909116105b806132135750303b158015613213575060005460ff166001145b6132765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff191660011790558015613299576000805461ff0019166101001790555b6001600160a01b0386166132df57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606401610298565b6001600160a01b03851661332957604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606401610298565b6001600160a01b03841661337457604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606401610298565b61337e868661436d565b60cb80546001600160a01b0319166001600160a01b0386161790556133a28661431b565b6133ac83836143ea565b80156126d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b613401613f13565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190615406565b6001600160a01b0316336001600160a01b0316146134ca5760405162461bcd60e51b815260040161029890615423565b60fc5419811960fc541916146135485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610ccb565b6065546001600160a01b031633146136145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610298565b60005b818110156138df57828282818110613631576136316154d2565b9050602002810190613643919061585f565b613654906040810190602001614b56565b6001600160a01b03166323b872dd3330868686818110613676576136766154d2565b9050602002810190613688919061585f565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613703919061546d565b506000838383818110613718576137186154d2565b905060200281019061372a919061585f565b61373b906040810190602001614b56565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cd919061551d565b90508383838181106137e1576137e16154d2565b90506020028101906137f3919061585f565b613804906040810190602001614b56565b6001600160a01b031663095ea7b37f000000000000000000000000000000000000000000000000000000000000000083878787818110613846576138466154d2565b9050602002810190613858919061585f565b6040013561386691906153d8565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d5919061546d565b5050600101613617565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d906126a490859085906004016158e5565b613936613f13565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b6000836139838685856144d0565b1495945050505050565b6001600160a01b038116613a1b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610298565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613aa0614880565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613acf57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610298565b505092915050565b6040805180820190915260008082526020820152613b3161489e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613b6c57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610298565b613bb26148bc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613c9a600080516020615a15833981519152866154e8565b90505b613ca6816145cd565b9093509150600080516020615a158339815191528283098303613cdf576040805180820190915290815260208101919091529392505050565b600080516020615a15833981519152600182089050613c9d565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613d2b6148e1565b60005b6002811015613ee6576000613d448260066157f1565b9050848260028110613d5857613d586154d2565b60200201515183613d6a8360006153d8565b600c8110613d7a57613d7a6154d2565b6020020152848260028110613d9157613d916154d2565b60200201516020015183826001613da891906153d8565b600c8110613db857613db86154d2565b6020020152838260028110613dcf57613dcf6154d2565b6020020151515183613de28360026153d8565b600c8110613df257613df26154d2565b6020020152838260028110613e0957613e096154d2565b6020020151516001602002015183613e228360036153d8565b600c8110613e3257613e326154d2565b6020020152838260028110613e4957613e496154d2565b602002015160200151600060028110613e6457613e646154d2565b602002015183613e758360046153d8565b600c8110613e8557613e856154d2565b6020020152838260028110613e9c57613e9c6154d2565b602002015160200151600160028110613eb757613eb76154d2565b602002015183613ec88360056153d8565b600c8110613ed857613ed86154d2565b602002015250600101613d2e565b50613eef614900565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b031633146125e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610298565b6060600080613f7b84614172565b61ffff166001600160401b03811115613f9657613f96614991565b6040519080825280601f01601f191660200182016040528015613fc0576020820181803683370190505b5090506000805b825182108015613fd8575061010081105b15613159576001811b93508584161561401f578060f81b838381518110614001576140016154d2565b60200101906001600160f81b031916908160001a9053508160010191505b614028816155d2565b9050613fc7565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806140eb8461464f565b9050808360ff166001901b116141695760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610298565b90505b92915050565b6000805b821561416c5761418760018461550a565b9092169180614195816159f3565b915050614176565b60408051808201909152600080825260208201526102008261ffff16106141f95760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610298565b8161ffff1660010361420c57508161416c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061427557600161ffff871660ff83161c81169003614258576142558484613b15565b93505b6142628384613b15565b92506201fffe600192831b169101614228565b509195945050505050565b604080518082019091526000808252602082015281511580156142a557506020820151155b156142c3575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a1583398151915284602001516142f691906154e8565b61430e90600080516020615a1583398151915261550a565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166143d85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610298565b6143e18261431b565b6115d68161402f565b60fb546001600160a01b031615801561440b57506001600160a01b03821615155b61448d5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26115d68261398d565b6000602084516144e091906154e8565b156145675760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610298565b8260205b855181116111795761457e6002856154e8565b6000036145a2578160005280860151602052604060002091506002840493506145bb565b8086015160005281602052604060002091506002840493505b6145c66020826153d8565b905061456b565b60008080600080516020615a158339815191526003600080516020615a1583398151915286600080516020615a15833981519152888909090890506000614643827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a158339815191526147d7565b91959194509092505050565b6000610100825111156146d85760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610298565b81516000036146e957506000919050565b600080836000815181106146ff576146ff6154d2565b0160200151600160f89190911c81901b92505b84518110156147ce5784818151811061472d5761472d6154d2565b0160200151600160f89190911c1b91508282116147c25760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610298565b91811791600101614712565b50909392505050565b6000806147e2614900565b6147ea61491e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061482757fe5b50826148755760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610298565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148cf61493c565b81526020016148dc61493c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149c9576149c9614991565b60405290565b60405161010081016001600160401b03811182821017156149c9576149c9614991565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a614991565b604052919050565b60006001600160401b03831115614a3b57614a3b614991565b614a4e601f8401601f19166020016149f2565b9050828152838383011115614a6257600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a8a57600080fd5b614a9983833560208501614a22565b9392505050565b6001600160a01b0381168114610b9457600080fd5b600080600080600080600080610100898b031215614ad257600080fd5b88359750602089013596506040890135955060608901356001600160601b031981168114614aff57600080fd5b94506080890135935060a08901356001600160401b03811115614b2157600080fd5b614b2d8b828c01614a79565b93505060c0890135915060e0890135614b4581614aa0565b809150509295985092959890939650565b600060208284031215614b6857600080fd5b813561416981614aa0565b600060208284031215614b8557600080fd5b5035919050565b60ff81168114610b9457600080fd5b600060208284031215614bad57600080fd5b813561416981614b8c565b600060408284031215614bca57600080fd5b614bd26149a7565b9050813581526020820135602082015292915050565b600082601f830112614bf957600080fd5b614c016149a7565b806040840185811115614c1357600080fd5b845b81811015614c2d578035845260209384019301614c15565b509095945050505050565b600060808284031215614c4a57600080fd5b614c526149a7565b9050614c5e8383614be8565b8152614c6d8360408401614be8565b602082015292915050565b6000806000806101208587031215614c8f57600080fd5b84359350614ca08660208701614bb8565b9250614caf8660608701614c38565b9150614cbe8660e08701614bb8565b905092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015614d0a5783516001600160a01b031683529284019291840191600101614ce5565b50909695505050505050565b8015158114610b9457600080fd5b600060208284031215614d3657600080fd5b813561416981614d16565b803563ffffffff8116811461431657600080fd5b60006001600160401b03821115614d6e57614d6e614991565b5060051b60200190565b600082601f830112614d8957600080fd5b81356020614d9e614d9983614d55565b6149f2565b8083825260208201915060208460051b870101935086841115614dc057600080fd5b602086015b84811015614de357614dd681614d41565b8352918301918301614dc5565b509695505050505050565b600082601f830112614dff57600080fd5b81356020614e0f614d9983614d55565b8083825260208201915060208460061b870101935086841115614e3157600080fd5b602086015b84811015614de357614e488882614bb8565b835291830191604001614e36565b600082601f830112614e6757600080fd5b81356020614e77614d9983614d55565b82815260059290921b84018101918181019086841115614e9657600080fd5b8286015b84811015614de35780356001600160401b03811115614eb95760008081fd5b614ec78986838b0101614d78565b845250918301918301614e9a565b60006101808284031215614ee857600080fd5b614ef06149cf565b905081356001600160401b0380821115614f0957600080fd5b614f1585838601614d78565b83526020840135915080821115614f2b57600080fd5b614f3785838601614dee565b60208401526040840135915080821115614f5057600080fd5b614f5c85838601614dee565b6040840152614f6e8560608601614c38565b6060840152614f808560e08601614bb8565b6080840152610120840135915080821115614f9a57600080fd5b614fa685838601614d78565b60a0840152610140840135915080821115614fc057600080fd5b614fcc85838601614d78565b60c0840152610160840135915080821115614fe657600080fd5b50614ff384828501614e56565b60e08301525092915050565b60008060006060848603121561501457600080fd5b8335925061502460208501614d41565b915060408401356001600160401b0381111561503f57600080fd5b61504b86828701614ed5565b9150509250925092565b60008151808452602080850194506020840160005b8381101561508f5781516001600160601b03168752958201959082019060010161506a565b509495945050505050565b60408152600083516040808401526150b56080840182615055565b90506020850151603f198483030160608501526150d28282615055565b925050508260208301529392505050565b60008083601f8401126150f557600080fd5b5081356001600160401b0381111561510c57600080fd5b60208301915083602082850101111561512457600080fd5b9250929050565b60008060006040848603121561514057600080fd5b83356001600160401b0381111561515657600080fd5b615162868287016150e3565b909790965060209590950135949350505050565b6000806040838503121561518957600080fd5b823561519481614aa0565b915060208301356001600160401b03808211156151b057600080fd5b90840190606082870312156151c457600080fd5b6040516060810181811083821117156151df576151df614991565b6040528235828111156151f157600080fd5b6151fd88828601614a79565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561523357600080fd5b81356001600160401b0381111561524957600080fd5b8201601f8101841361525a57600080fd5b61526984823560208401614a22565b949350505050565b60008060006060848603121561528657600080fd5b83359250602084013561502481614aa0565b600080600080606085870312156152ae57600080fd5b8435935060208501356001600160401b038111156152cb57600080fd5b6152d7878288016150e3565b9598909750949560400135949350505050565b600080600080600060a0868803121561530257600080fd5b853561530d81614aa0565b9450602086013561531d81614aa0565b9350604086013561532d81614aa0565b9250606086013561533d81614aa0565b949793965091946080013592915050565b6000806020838503121561536157600080fd5b82356001600160401b038082111561537857600080fd5b818501915085601f83011261538c57600080fd5b81358181111561539b57600080fd5b8660208260051b85010111156153b057600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561416c5761416c6153c2565b91825260601b6001600160601b031916602082015260340190565b60006020828403121561541857600080fd5b815161416981614aa0565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561547f57600080fd5b815161416981614d16565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261550557634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561416c5761416c6153c2565b60006020828403121561552f57600080fd5b5051919050565b60006020828403121561554857600080fd5b81516001600160c01b038116811461416957600080fd5b60006020828403121561557157600080fd5b815161416981614b8c565b6001600160601b0381168114610b9457600080fd5b6000604082840312156155a357600080fd5b6155ab6149a7565b82516155b681614aa0565b815260208301516155c68161557c565b60208201529392505050565b6000600182016155e4576155e46153c2565b5060010190565b6000602082840312156155fd57600080fd5b815167ffffffffffffffff198116811461416957600080fd5b60006020828403121561562857600080fd5b81516141698161557c565b6001600160601b03828116828216039080821115615653576156536153c2565b5092915050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561569557815185529382019390820190600101615679565b5092979650505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b8181101561575057602081850181015186830182015201615734565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b038316815260406020820152600082516060604084015261579a60a084018261572a565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614a99602083018461572a565b6001600160601b03818116838216028082169190828114613b0d57613b0d6153c2565b808202811582820484141761416c5761416c6153c2565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60008235609e1983360301811261587557600080fd5b9190910192915050565b803561431681614aa0565b8183526000602080850194508260005b8581101561508f5781356158ad81614aa0565b6001600160a01b03168752818301356158c58161557c565b6001600160601b031687840152604096870196919091019060010161589a565b60208082528181018390526000906040808401600586901b8501820187855b888110156159e557878303603f190184528135368b9003609e1901811261592a57600080fd5b8a0160a0813536839003601e1901811261594357600080fd5b820188810190356001600160401b0381111561595e57600080fd5b8060061b360382131561597057600080fd5b828752615980838801828461588a565b9250505061598f88830161587f565b6001600160a01b031688860152818701358786015260606159b1818401614d41565b63ffffffff169086015260806159c8838201614d41565b63ffffffff16950194909452509285019290850190600101615904565b509098975050505050505050565b600061ffff808316818103615a0a57615a0a6153c2565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220cde428f3f88df95c90a1ec8fecb6c7eba0ec71b263a25efb19209458df8a2f3d64736f6c634300081800330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","output":"0x60806040526004361061026b5760003560e01c8063886f119511610144578063df5cf723116100b6578063f7013ef61161007a578063f7013ef614610872578063f9120af614610892578063fabc1cbc146108b2578063fc299dee146108d2578063fce36c7d146108f2578063fd4c3b7c1461091257600080fd5b8063df5cf723146107c6578063e481af9d146107fa578063ea5ca34b1461080f578063f2fde38b14610825578063f474b5201461084557600080fd5b8063a98fb35511610108578063a98fb355146106cf578063ab21739a146106ef578063b099627e1461070f578063b753645e14610779578063b98d090814610799578063d66eaabd146107b357600080fd5b8063886f1195146106315780638da5cb5b1461065157806395c6d6041461066f5780639926ee7d1461068f578063a364f4da146106af57600080fd5b80634a5bf632116101dd5780635df45946116101a15780635df4594614610517578063683048351461054b5780636b3aa72e1461057f5780636d14a987146105b257806370a08231146105e6578063715018a61461061c57600080fd5b80634a5bf6321461044d5780634ae07c3714610485578063595c6a67146104b35780635ac86ab7146104c85780635c975abb146104f857600080fd5b806318daeeaf1161022f57806318daeeaf1461038d5780632e1a7d4d146103ad57806333cfb7b7146103cd5780633bc28c8c146103fa578063416c7e5e1461041a5780634223d5511461043a57600080fd5b806306045a91146102b257806310d67a2f146102e7578063136439dd14610307578063137122b514610327578063171f1d5b1461035657600080fd5b366102ad5760fc546005906020908116036102a15760405162461bcd60e51b81526004016102989061495a565b60405180910390fd5b6102ab3334610932565b005b600080fd5b3480156102be57600080fd5b506102d26102cd366004614ab5565b6109c2565b60405190151581526020015b60405180910390f35b3480156102f357600080fd5b506102ab610302366004614b56565b610ae4565b34801561031357600080fd5b506102ab610322366004614b73565b610b97565b34801561033357600080fd5b506102d2610342366004614b9b565b60cc54600160ff9092169190911b16151590565b34801561036257600080fd5b50610376610371366004614c78565b610cd6565b6040805192151583529015156020830152016102de565b34801561039957600080fd5b506102ab6103a8366004614b9b565b610e60565b3480156103b957600080fd5b506102ab6103c8366004614b73565b610ea8565b3480156103d957600080fd5b506103ed6103e8366004614b56565b610fa9565b6040516102de9190614cc9565b34801561040657600080fd5b506102ab610415366004614b56565b61145c565b34801561042657600080fd5b506102ab610435366004614d24565b61146d565b6102ab610448366004614b56565b6115a4565b34801561045957600080fd5b5060cb5461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561049157600080fd5b506104a56104a0366004614fff565b6115da565b6040516102de92919061509a565b3480156104bf57600080fd5b506102ab61250e565b3480156104d457600080fd5b506102d26104e3366004614b9b565b60fc54600160ff9092169190911b9081161490565b34801561050457600080fd5b5060fc545b6040519081526020016102de565b34801561052357600080fd5b5061046d7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b34801561055757600080fd5b5061046d7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b34801561058b57600080fd5b507f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570761046d565b3480156105be57600080fd5b5061046d7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b3480156105f257600080fd5b50610509610601366004614b56565b6001600160a01b0316600090815260ca602052604090205490565b34801561062857600080fd5b506102ab6125d5565b34801561063d57600080fd5b5060fb5461046d906001600160a01b031681565b34801561065d57600080fd5b506033546001600160a01b031661046d565b34801561067b57600080fd5b506102d261068a36600461512b565b6125e9565b34801561069b57600080fd5b506102ab6106aa366004615176565b61260e565b3480156106bb57600080fd5b506102ab6106ca366004614b56565b6126da565b3480156106db57600080fd5b506102ab6106ea366004615221565b6127a1565b3480156106fb57600080fd5b506102ab61070a366004615271565b6127f5565b34801561071b57600080fd5b5061075761072a366004614b73565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102de565b34801561078557600080fd5b506102ab610794366004614b73565b612bc7565b3480156107a557600080fd5b506097546102d29060ff1681565b6102ab6107c1366004615298565b612bd4565b3480156107d257600080fd5b5061046d7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561080657600080fd5b506103ed612db7565b34801561081b57600080fd5b5061050960cc5481565b34801561083157600080fd5b506102ab610840366004614b56565b613163565b34801561085157600080fd5b50610509610860366004614b56565b60ca6020526000908152604090205481565b34801561087e57600080fd5b506102ab61088d3660046152ea565b6131d9565b34801561089e57600080fd5b506102ab6108ad366004614b56565b6133f9565b3480156108be57600080fd5b506102ab6108cd366004614b73565b613423565b3480156108de57600080fd5b5060655461046d906001600160a01b031681565b3480156108fe57600080fd5b506102ab61090d36600461534e565b61357f565b34801561091e57600080fd5b506102ab61092d366004614b9b565b61392e565b8060000361095657604051632097692160e11b815260048101829052602401610298565b6001600160a01b038216600090815260ca60205260408120805483929061097e9084906153d8565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25050565b60fc546000906002906004908116036109ed5760405162461bcd60e51b81526004016102989061495a565b60006001600160a01b038416610a04575085610a30565b8684604051602001610a179291906153eb565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610a55576000925050610ad7565b600081815260c96020526040902054640100000000900460ff16610a7d576000925050610ad7565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610ad1888a838a613975565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615406565b6001600160a01b0316336001600160a01b031614610b8b5760405162461bcd60e51b815260040161029890615423565b610b948161398d565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c03919061546d565b610c1f5760405162461bcd60e51b81526004016102989061548a565b60fc5481811614610c985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d1e57610d1e6154d2565b60200201518951600160200201518a60200151600060028110610d4357610d436154d2565b60200201518b60200151600160028110610d5f57610d5f6154d2565b602090810291909101518c518d830151604051610dbc9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610ddf91906154e8565b9050610e52610df8610df18884613a84565b8690613b15565b610e00613baa565b610e48610e3985610e33604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613a84565b610e428c613c6a565b90613b15565b886201d4c0613cf9565b909890975095505050505050565b610e68613f13565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b60fc54600390600890811603610ed05760405162461bcd60e51b81526004016102989061495a565b33600090815260ca6020526040902054821115610f215733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018490526044820152606401610298565b33600090815260ca602052604081208054849290610f4090849061550a565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a2604051339083156108fc029084906000818181858888f19350505050158015610fa4573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616906313542a4e90602401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611039919061551d565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36169063871ef04990602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190615536565b90506001600160c01b038116158061116257507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d919061555f565b60ff16155b156111825760408051600080825260208201909252905b50949350505050565b6000611196826001600160c01b0316613f6d565b90506000805b8251811015611262577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316633ca5a5f58483815181106111e6576111e66154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e919061551d565b61125890836153d8565b915060010161119c565b506000816001600160401b0381111561127d5761127d614991565b6040519080825280602002602001820160405280156112a6578160200160208202803683370190505b5090506000805b845181101561144f5760008582815181106112ca576112ca6154d2565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1690633ca5a5f590602401602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611363919061551d565b905060005b81811015611444576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190615591565b60000151868681518110611417576114176154d2565b6001600160a01b039092166020928302919091019091015284611439816155d2565b955050600101611368565b5050506001016112ad565b5090979650505050505050565b611464613f13565b610b948161402f565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190615406565b6001600160a01b0316336001600160a01b03161461159b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610298565b610b9481614098565b60fc546004906010908116036115cc5760405162461bcd60e51b81526004016102989061495a565b6115d68234610932565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561163657508260a0015151604051806040016040528060018152602001600081525051145b801561165d57508260c0015151604051806040016040528060018152602001600081525051145b801561168457508260e0015151604051806040016040528060018152602001600081525051145b6116ee5760405162461bcd60e51b81526020600482015260416024820152600080516020615a5583398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610298565b825151602084015151146117665760405162461bcd60e51b815260206004820152604460248201819052600080516020615a55833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610298565b4363ffffffff168463ffffffff16106117d55760405162461bcd60e51b815260206004820152603c6024820152600080516020615a5583398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610298565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b0381111561189657611896614991565b6040519080825280602002602001820160405280156118bf578160200160208202803683370190505b5081526020860151516001600160401b038111156118df576118df614991565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50816020018190525060006119b460405180604001604052806001815260200160008152507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af919061555f565b6140df565b905060005b876020015151811015611c45576119fe886020015182815181106119df576119df6154d2565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611a1457611a146154d2565b60209081029190910101528015611ad4576020830151611a3560018361550a565b81518110611a4557611a456154d2565b602002602001015160001c83602001518281518110611a6657611a666154d2565b602002602001015160001c11611ad4576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a5583398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610298565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03166304ec635184602001518381518110611b1957611b196154d2565b60200260200101518b8b600001518581518110611b3857611b386154d2565b60200260200101516040518463ffffffff1660e01b8152600401611b759392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb69190615536565b6001600160c01b031683600001518281518110611bd557611bd56154d2565b602002602001018181525050611c3b610df1611c0f8486600001518581518110611c0157611c016154d2565b602002602001015116614172565b8a602001518481518110611c2557611c256154d2565b602002602001015161419d90919063ffffffff16565b94506001016119b9565b5050611c5083614280565b60975490935060ff16600081611c67576000611ce9565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce9919061551d565b905060005b6040518060400160405280600181526020016000815250518110156123df578215611e7a578963ffffffff16827f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611d7257611d726154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dda919061551d565b611de491906153d8565b11611e7a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a5583398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610298565b7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ed157611ed16154d2565b602001015160f81c60f81b60f81c8c8c60a001518581518110611ef657611ef66154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7691906155eb565b6001600160401b031916611f998a6040015183815181106119df576119df6154d2565b67ffffffffffffffff1916146120355760405162461bcd60e51b81526020600482015260616024820152600080516020615a5583398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610298565b6120658960400151828151811061204e5761204e6154d2565b602002602001015187613b1590919063ffffffff16565b95507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106120be576120be6154d2565b602001015160f81c60f81b60f81c8c8c60c0015185815181106120e3576120e36154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121639190615616565b85602001518281518110612179576121796154d2565b6001600160601b039092166020928302919091018201528501518051829081106121a5576121a56154d2565b6020026020010151856000015182815181106121c3576121c36154d2565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156123d5576122528660000151828151811061220d5761220d6154d2565b60200260200101516040518060400160405280600181526020016000815250858151811061223d5761223d6154d2565b016020015160f81c60ff161c60019081161490565b156123cd577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106122ae576122ae6154d2565b602001015160f81c60f81b60f81c8e896020015185815181106122d3576122d36154d2565b60200260200101518f60e0015188815181106122f1576122f16154d2565b6020026020010151878151811061230a5761230a6154d2565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123929190615616565b87518051859081106123a6576123a66154d2565b602002602001018181516123ba9190615633565b6001600160601b03169052506001909101905b6001016121e7565b5050600101611cee565b5050506000806123f98a868a606001518b60800151610cd6565b915091508161246a5760405162461bcd60e51b81526020600482015260436024820152600080516020615a5583398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610298565b806124cb5760405162461bcd60e51b81526020600482015260396024820152600080516020615a5583398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610298565b505060008782602001516040516020016124e692919061565a565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a919061546d565b6125965760405162461bcd60e51b81526004016102989061548a565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6125dd613f13565b6125e7600061431b565b565b60008184846040516125fc9291906156a2565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146126565760405162461bcd60e51b8152600401610298906156b2565b604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071690639926ee7d906126a49085908590600401615770565b600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146127225760405162461bcd60e51b8152600401610298906156b2565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a364f4da906024015b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050505050565b6127a9613f13565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a98fb3559061276c9084906004016157bb565b60cb546001600160a01b031633146128355760cb54604051632cbe419560e01b81523360048201526001600160a01b039091166024820152604401610298565b60fc5460019060029081160361285d5760405162461bcd60e51b81526004016102989061495a565b60005a9050600085856040516020016128779291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff90911690036128cc576040516311cb69a760e11b815260048101839052602401610298565b8054640100000000900460ff16156128fa57604051634e78d7f960e11b815260048101839052602401610298565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca6020526040902054101561297d5760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b8152600481019290925260248201929092526044810191909152606401610298565b805460009061299490849063ffffffff16886115da565b509050604360ff1681602001516000815181106129b3576129b36154d2565b60200260200101516129c591906157ce565b6001600160601b0316606482600001516000815181106129e7576129e76154d2565b60200260200101516001600160601b0316612a0291906157f1565b1015612a955760648160000151600081518110612a2157612a216154d2565b60200260200101516001600160601b0316612a3c91906157f1565b604360ff168260200151600081518110612a5857612a586154d2565b6020026020010151612a6a91906157ce565b60405163530f5c4560e11b815260048101929092526001600160601b03166024820152604401610298565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ae1908761550a565b612aee90620111706153d8565b612af891906157f1565b9050600083600101548210612b11578360010154612b13565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612b4090849061550a565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612bba573d6000803e3d6000fd5b5050505050505050505050565b612bcf613f13565b60cc55565b60fc54600090600190811603612bfc5760405162461bcd60e51b81526004016102989061495a565b60008533604051602001612c119291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612c6057604051630c40bc4360e21b815260048101829052602401610298565b3415612cbd5733600090815260ca602052604081208054349290612c859084906153d8565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25b33600090815260ca6020526040902054831115612d0e5733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018590526044820152606401610298565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612da6913391908b908b908b90615808565b60405180910390a250505050505050565b606060007f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d919061555f565b60ff16905080600003612e5e57505060408051600081526020810190915290565b6000805b82811015612f0957604051633ca5a5f560e01b815260ff821660048201527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef5919061551d565b612eff90836153d8565b9150600101612e62565b506000816001600160401b03811115612f2457612f24614991565b604051908082528060200260200182016040528015612f4d578160200160208202803683370190505b5090506000805b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd6919061555f565b60ff1681101561315957604051633ca5a5f560e01b815260ff821660048201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e919061551d565b905060005b8181101561314f576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190615591565b60000151858581518110613122576131226154d2565b6001600160a01b039092166020928302919091019091015283613144816155d2565b945050600101613073565b5050600101612f54565b5090949350505050565b61316b613f13565b6001600160a01b0381166131d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b610b948161431b565b600054610100900460ff16158080156131f95750600054600160ff909116105b806132135750303b158015613213575060005460ff166001145b6132765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff191660011790558015613299576000805461ff0019166101001790555b6001600160a01b0386166132df57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606401610298565b6001600160a01b03851661332957604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606401610298565b6001600160a01b03841661337457604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606401610298565b61337e868661436d565b60cb80546001600160a01b0319166001600160a01b0386161790556133a28661431b565b6133ac83836143ea565b80156126d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b613401613f13565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190615406565b6001600160a01b0316336001600160a01b0316146134ca5760405162461bcd60e51b815260040161029890615423565b60fc5419811960fc541916146135485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610ccb565b6065546001600160a01b031633146136145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610298565b60005b818110156138df57828282818110613631576136316154d2565b9050602002810190613643919061585f565b613654906040810190602001614b56565b6001600160a01b03166323b872dd3330868686818110613676576136766154d2565b9050602002810190613688919061585f565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613703919061546d565b506000838383818110613718576137186154d2565b905060200281019061372a919061585f565b61373b906040810190602001614b56565b604051636eb1769f60e11b81523060048201526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cd919061551d565b90508383838181106137e1576137e16154d2565b90506020028101906137f3919061585f565b613804906040810190602001614b56565b6001600160a01b031663095ea7b37f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f83878787818110613846576138466154d2565b9050602002810190613858919061585f565b6040013561386691906153d8565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d5919061546d565b5050600101613617565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fce36c7d906126a490859085906004016158e5565b613936613f13565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b6000836139838685856144d0565b1495945050505050565b6001600160a01b038116613a1b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610298565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613aa0614880565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613acf57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610298565b505092915050565b6040805180820190915260008082526020820152613b3161489e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613b6c57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610298565b613bb26148bc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613c9a600080516020615a15833981519152866154e8565b90505b613ca6816145cd565b9093509150600080516020615a158339815191528283098303613cdf576040805180820190915290815260208101919091529392505050565b600080516020615a15833981519152600182089050613c9d565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613d2b6148e1565b60005b6002811015613ee6576000613d448260066157f1565b9050848260028110613d5857613d586154d2565b60200201515183613d6a8360006153d8565b600c8110613d7a57613d7a6154d2565b6020020152848260028110613d9157613d916154d2565b60200201516020015183826001613da891906153d8565b600c8110613db857613db86154d2565b6020020152838260028110613dcf57613dcf6154d2565b6020020151515183613de28360026153d8565b600c8110613df257613df26154d2565b6020020152838260028110613e0957613e096154d2565b6020020151516001602002015183613e228360036153d8565b600c8110613e3257613e326154d2565b6020020152838260028110613e4957613e496154d2565b602002015160200151600060028110613e6457613e646154d2565b602002015183613e758360046153d8565b600c8110613e8557613e856154d2565b6020020152838260028110613e9c57613e9c6154d2565b602002015160200151600160028110613eb757613eb76154d2565b602002015183613ec88360056153d8565b600c8110613ed857613ed86154d2565b602002015250600101613d2e565b50613eef614900565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b031633146125e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610298565b6060600080613f7b84614172565b61ffff166001600160401b03811115613f9657613f96614991565b6040519080825280601f01601f191660200182016040528015613fc0576020820181803683370190505b5090506000805b825182108015613fd8575061010081105b15613159576001811b93508584161561401f578060f81b838381518110614001576140016154d2565b60200101906001600160f81b031916908160001a9053508160010191505b614028816155d2565b9050613fc7565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806140eb8461464f565b9050808360ff166001901b116141695760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610298565b90505b92915050565b6000805b821561416c5761418760018461550a565b9092169180614195816159f3565b915050614176565b60408051808201909152600080825260208201526102008261ffff16106141f95760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610298565b8161ffff1660010361420c57508161416c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061427557600161ffff871660ff83161c81169003614258576142558484613b15565b93505b6142628384613b15565b92506201fffe600192831b169101614228565b509195945050505050565b604080518082019091526000808252602082015281511580156142a557506020820151155b156142c3575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a1583398151915284602001516142f691906154e8565b61430e90600080516020615a1583398151915261550a565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166143d85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610298565b6143e18261431b565b6115d68161402f565b60fb546001600160a01b031615801561440b57506001600160a01b03821615155b61448d5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26115d68261398d565b6000602084516144e091906154e8565b156145675760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610298565b8260205b855181116111795761457e6002856154e8565b6000036145a2578160005280860151602052604060002091506002840493506145bb565b8086015160005281602052604060002091506002840493505b6145c66020826153d8565b905061456b565b60008080600080516020615a158339815191526003600080516020615a1583398151915286600080516020615a15833981519152888909090890506000614643827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a158339815191526147d7565b91959194509092505050565b6000610100825111156146d85760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610298565b81516000036146e957506000919050565b600080836000815181106146ff576146ff6154d2565b0160200151600160f89190911c81901b92505b84518110156147ce5784818151811061472d5761472d6154d2565b0160200151600160f89190911c1b91508282116147c25760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610298565b91811791600101614712565b50909392505050565b6000806147e2614900565b6147ea61491e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061482757fe5b50826148755760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610298565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148cf61493c565b81526020016148dc61493c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149c9576149c9614991565b60405290565b60405161010081016001600160401b03811182821017156149c9576149c9614991565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a614991565b604052919050565b60006001600160401b03831115614a3b57614a3b614991565b614a4e601f8401601f19166020016149f2565b9050828152838383011115614a6257600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a8a57600080fd5b614a9983833560208501614a22565b9392505050565b6001600160a01b0381168114610b9457600080fd5b600080600080600080600080610100898b031215614ad257600080fd5b88359750602089013596506040890135955060608901356001600160601b031981168114614aff57600080fd5b94506080890135935060a08901356001600160401b03811115614b2157600080fd5b614b2d8b828c01614a79565b93505060c0890135915060e0890135614b4581614aa0565b809150509295985092959890939650565b600060208284031215614b6857600080fd5b813561416981614aa0565b600060208284031215614b8557600080fd5b5035919050565b60ff81168114610b9457600080fd5b600060208284031215614bad57600080fd5b813561416981614b8c565b600060408284031215614bca57600080fd5b614bd26149a7565b9050813581526020820135602082015292915050565b600082601f830112614bf957600080fd5b614c016149a7565b806040840185811115614c1357600080fd5b845b81811015614c2d578035845260209384019301614c15565b509095945050505050565b600060808284031215614c4a57600080fd5b614c526149a7565b9050614c5e8383614be8565b8152614c6d8360408401614be8565b602082015292915050565b6000806000806101208587031215614c8f57600080fd5b84359350614ca08660208701614bb8565b9250614caf8660608701614c38565b9150614cbe8660e08701614bb8565b905092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015614d0a5783516001600160a01b031683529284019291840191600101614ce5565b50909695505050505050565b8015158114610b9457600080fd5b600060208284031215614d3657600080fd5b813561416981614d16565b803563ffffffff8116811461431657600080fd5b60006001600160401b03821115614d6e57614d6e614991565b5060051b60200190565b600082601f830112614d8957600080fd5b81356020614d9e614d9983614d55565b6149f2565b8083825260208201915060208460051b870101935086841115614dc057600080fd5b602086015b84811015614de357614dd681614d41565b8352918301918301614dc5565b509695505050505050565b600082601f830112614dff57600080fd5b81356020614e0f614d9983614d55565b8083825260208201915060208460061b870101935086841115614e3157600080fd5b602086015b84811015614de357614e488882614bb8565b835291830191604001614e36565b600082601f830112614e6757600080fd5b81356020614e77614d9983614d55565b82815260059290921b84018101918181019086841115614e9657600080fd5b8286015b84811015614de35780356001600160401b03811115614eb95760008081fd5b614ec78986838b0101614d78565b845250918301918301614e9a565b60006101808284031215614ee857600080fd5b614ef06149cf565b905081356001600160401b0380821115614f0957600080fd5b614f1585838601614d78565b83526020840135915080821115614f2b57600080fd5b614f3785838601614dee565b60208401526040840135915080821115614f5057600080fd5b614f5c85838601614dee565b6040840152614f6e8560608601614c38565b6060840152614f808560e08601614bb8565b6080840152610120840135915080821115614f9a57600080fd5b614fa685838601614d78565b60a0840152610140840135915080821115614fc057600080fd5b614fcc85838601614d78565b60c0840152610160840135915080821115614fe657600080fd5b50614ff384828501614e56565b60e08301525092915050565b60008060006060848603121561501457600080fd5b8335925061502460208501614d41565b915060408401356001600160401b0381111561503f57600080fd5b61504b86828701614ed5565b9150509250925092565b60008151808452602080850194506020840160005b8381101561508f5781516001600160601b03168752958201959082019060010161506a565b509495945050505050565b60408152600083516040808401526150b56080840182615055565b90506020850151603f198483030160608501526150d28282615055565b925050508260208301529392505050565b60008083601f8401126150f557600080fd5b5081356001600160401b0381111561510c57600080fd5b60208301915083602082850101111561512457600080fd5b9250929050565b60008060006040848603121561514057600080fd5b83356001600160401b0381111561515657600080fd5b615162868287016150e3565b909790965060209590950135949350505050565b6000806040838503121561518957600080fd5b823561519481614aa0565b915060208301356001600160401b03808211156151b057600080fd5b90840190606082870312156151c457600080fd5b6040516060810181811083821117156151df576151df614991565b6040528235828111156151f157600080fd5b6151fd88828601614a79565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561523357600080fd5b81356001600160401b0381111561524957600080fd5b8201601f8101841361525a57600080fd5b61526984823560208401614a22565b949350505050565b60008060006060848603121561528657600080fd5b83359250602084013561502481614aa0565b600080600080606085870312156152ae57600080fd5b8435935060208501356001600160401b038111156152cb57600080fd5b6152d7878288016150e3565b9598909750949560400135949350505050565b600080600080600060a0868803121561530257600080fd5b853561530d81614aa0565b9450602086013561531d81614aa0565b9350604086013561532d81614aa0565b9250606086013561533d81614aa0565b949793965091946080013592915050565b6000806020838503121561536157600080fd5b82356001600160401b038082111561537857600080fd5b818501915085601f83011261538c57600080fd5b81358181111561539b57600080fd5b8660208260051b85010111156153b057600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561416c5761416c6153c2565b91825260601b6001600160601b031916602082015260340190565b60006020828403121561541857600080fd5b815161416981614aa0565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561547f57600080fd5b815161416981614d16565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261550557634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561416c5761416c6153c2565b60006020828403121561552f57600080fd5b5051919050565b60006020828403121561554857600080fd5b81516001600160c01b038116811461416957600080fd5b60006020828403121561557157600080fd5b815161416981614b8c565b6001600160601b0381168114610b9457600080fd5b6000604082840312156155a357600080fd5b6155ab6149a7565b82516155b681614aa0565b815260208301516155c68161557c565b60208201529392505050565b6000600182016155e4576155e46153c2565b5060010190565b6000602082840312156155fd57600080fd5b815167ffffffffffffffff198116811461416957600080fd5b60006020828403121561562857600080fd5b81516141698161557c565b6001600160601b03828116828216039080821115615653576156536153c2565b5092915050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561569557815185529382019390820190600101615679565b5092979650505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b8181101561575057602081850181015186830182015201615734565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b038316815260406020820152600082516060604084015261579a60a084018261572a565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614a99602083018461572a565b6001600160601b03818116838216028082169190828114613b0d57613b0d6153c2565b808202811582820484141761416c5761416c6153c2565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60008235609e1983360301811261587557600080fd5b9190910192915050565b803561431681614aa0565b8183526000602080850194508260005b8581101561508f5781356158ad81614aa0565b6001600160a01b03168752818301356158c58161557c565b6001600160601b031687840152604096870196919091019060010161589a565b60208082528181018390526000906040808401600586901b8501820187855b888110156159e557878303603f190184528135368b9003609e1901811261592a57600080fd5b8a0160a0813536839003601e1901811261594357600080fd5b820188810190356001600160401b0381111561595e57600080fd5b8060061b360382131561597057600080fd5b828752615980838801828461588a565b9250505061598f88830161587f565b6001600160a01b031688860152818701358786015260606159b1818401614d41565b63ffffffff169086015260806159c8838201614d41565b63ffffffff16950194909452509285019290850190600101615904565b509098975050505050505050565b600061ffff808316818103615a0a57615a0a6153c2565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220cde428f3f88df95c90a1ec8fecb6c7eba0ec71b263a25efb19209458df8a2f3d64736f6c63430008180033","gas_used":4695254,"gas_limit":6231085,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Call":2}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x68304835","output":"0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","gas_used":7601,"gas_limit":6107251,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x68304835","output":"0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","gas_used":306,"gas_limit":6004685,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[4],"idx":3,"trace":{"depth":1,"success":true,"caller":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x5df45946","output":"0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49","gas_used":1124,"gas_limit":6099302,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":3,"children":[],"idx":4,"trace":{"depth":2,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x5df45946","output":"0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49","gas_used":329,"gas_limit":6003259,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[6],"idx":5,"trace":{"depth":1,"success":true,"caller":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xdf5cf723","output":"0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","gas_used":7622,"gas_limit":6095265,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":5,"children":[],"idx":6,"trace":{"depth":2,"success":true,"caller":"0x998abeb3e57409262ae5b751f60747921b33613e","address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xdf5cf723","output":"0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","gas_used":327,"gas_limit":5992886,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040526004361061026b5760003560e01c8063886f119511610144578063df5cf723116100b6578063f7013ef61161007a578063f7013ef614610872578063f9120af614610892578063fabc1cbc146108b2578063fc299dee146108d2578063fce36c7d146108f2578063fd4c3b7c1461091257600080fd5b8063df5cf723146107c6578063e481af9d146107fa578063ea5ca34b1461080f578063f2fde38b14610825578063f474b5201461084557600080fd5b8063a98fb35511610108578063a98fb355146106cf578063ab21739a146106ef578063b099627e1461070f578063b753645e14610779578063b98d090814610799578063d66eaabd146107b357600080fd5b8063886f1195146106315780638da5cb5b1461065157806395c6d6041461066f5780639926ee7d1461068f578063a364f4da146106af57600080fd5b80634a5bf632116101dd5780635df45946116101a15780635df4594614610517578063683048351461054b5780636b3aa72e1461057f5780636d14a987146105b257806370a08231146105e6578063715018a61461061c57600080fd5b80634a5bf6321461044d5780634ae07c3714610485578063595c6a67146104b35780635ac86ab7146104c85780635c975abb146104f857600080fd5b806318daeeaf1161022f57806318daeeaf1461038d5780632e1a7d4d146103ad57806333cfb7b7146103cd5780633bc28c8c146103fa578063416c7e5e1461041a5780634223d5511461043a57600080fd5b806306045a91146102b257806310d67a2f146102e7578063136439dd14610307578063137122b514610327578063171f1d5b1461035657600080fd5b366102ad5760fc546005906020908116036102a15760405162461bcd60e51b81526004016102989061495a565b60405180910390fd5b6102ab3334610932565b005b600080fd5b3480156102be57600080fd5b506102d26102cd366004614ab5565b6109c2565b60405190151581526020015b60405180910390f35b3480156102f357600080fd5b506102ab610302366004614b56565b610ae4565b34801561031357600080fd5b506102ab610322366004614b73565b610b97565b34801561033357600080fd5b506102d2610342366004614b9b565b60cc54600160ff9092169190911b16151590565b34801561036257600080fd5b50610376610371366004614c78565b610cd6565b6040805192151583529015156020830152016102de565b34801561039957600080fd5b506102ab6103a8366004614b9b565b610e60565b3480156103b957600080fd5b506102ab6103c8366004614b73565b610ea8565b3480156103d957600080fd5b506103ed6103e8366004614b56565b610fa9565b6040516102de9190614cc9565b34801561040657600080fd5b506102ab610415366004614b56565b61145c565b34801561042657600080fd5b506102ab610435366004614d24565b61146d565b6102ab610448366004614b56565b6115a4565b34801561045957600080fd5b5060cb5461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b34801561049157600080fd5b506104a56104a0366004614fff565b6115da565b6040516102de92919061509a565b3480156104bf57600080fd5b506102ab61250e565b3480156104d457600080fd5b506102d26104e3366004614b9b565b60fc54600160ff9092169190911b9081161490565b34801561050457600080fd5b5060fc545b6040519081526020016102de565b34801561052357600080fd5b5061046d7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b34801561055757600080fd5b5061046d7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b34801561058b57600080fd5b507f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570761046d565b3480156105be57600080fd5b5061046d7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b3480156105f257600080fd5b50610509610601366004614b56565b6001600160a01b0316600090815260ca602052604090205490565b34801561062857600080fd5b506102ab6125d5565b34801561063d57600080fd5b5060fb5461046d906001600160a01b031681565b34801561065d57600080fd5b506033546001600160a01b031661046d565b34801561067b57600080fd5b506102d261068a36600461512b565b6125e9565b34801561069b57600080fd5b506102ab6106aa366004615176565b61260e565b3480156106bb57600080fd5b506102ab6106ca366004614b56565b6126da565b3480156106db57600080fd5b506102ab6106ea366004615221565b6127a1565b3480156106fb57600080fd5b506102ab61070a366004615271565b6127f5565b34801561071b57600080fd5b5061075761072a366004614b73565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102de565b34801561078557600080fd5b506102ab610794366004614b73565b612bc7565b3480156107a557600080fd5b506097546102d29060ff1681565b6102ab6107c1366004615298565b612bd4565b3480156107d257600080fd5b5061046d7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561080657600080fd5b506103ed612db7565b34801561081b57600080fd5b5061050960cc5481565b34801561083157600080fd5b506102ab610840366004614b56565b613163565b34801561085157600080fd5b50610509610860366004614b56565b60ca6020526000908152604090205481565b34801561087e57600080fd5b506102ab61088d3660046152ea565b6131d9565b34801561089e57600080fd5b506102ab6108ad366004614b56565b6133f9565b3480156108be57600080fd5b506102ab6108cd366004614b73565b613423565b3480156108de57600080fd5b5060655461046d906001600160a01b031681565b3480156108fe57600080fd5b506102ab61090d36600461534e565b61357f565b34801561091e57600080fd5b506102ab61092d366004614b9b565b61392e565b8060000361095657604051632097692160e11b815260048101829052602401610298565b6001600160a01b038216600090815260ca60205260408120805483929061097e9084906153d8565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25050565b60fc546000906002906004908116036109ed5760405162461bcd60e51b81526004016102989061495a565b60006001600160a01b038416610a04575085610a30565b8684604051602001610a179291906153eb565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610a55576000925050610ad7565b600081815260c96020526040902054640100000000900460ff16610a7d576000925050610ad7565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610ad1888a838a613975565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190615406565b6001600160a01b0316336001600160a01b031614610b8b5760405162461bcd60e51b815260040161029890615423565b610b948161398d565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c03919061546d565b610c1f5760405162461bcd60e51b81526004016102989061548a565b60fc5481811614610c985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d1e57610d1e6154d2565b60200201518951600160200201518a60200151600060028110610d4357610d436154d2565b60200201518b60200151600160028110610d5f57610d5f6154d2565b602090810291909101518c518d830151604051610dbc9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610ddf91906154e8565b9050610e52610df8610df18884613a84565b8690613b15565b610e00613baa565b610e48610e3985610e33604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613a84565b610e428c613c6a565b90613b15565b886201d4c0613cf9565b909890975095505050505050565b610e68613f13565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b60fc54600390600890811603610ed05760405162461bcd60e51b81526004016102989061495a565b33600090815260ca6020526040902054821115610f215733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018490526044820152606401610298565b33600090815260ca602052604081208054849290610f4090849061550a565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a2604051339083156108fc029084906000818181858888f19350505050158015610fa4573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616906313542a4e90602401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611039919061551d565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36169063871ef04990602401602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190615536565b90506001600160c01b038116158061116257507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d919061555f565b60ff16155b156111825760408051600080825260208201909252905b50949350505050565b6000611196826001600160c01b0316613f6d565b90506000805b8251811015611262577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316633ca5a5f58483815181106111e6576111e66154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e919061551d565b61125890836153d8565b915060010161119c565b506000816001600160401b0381111561127d5761127d614991565b6040519080825280602002602001820160405280156112a6578160200160208202803683370190505b5090506000805b845181101561144f5760008582815181106112ca576112ca6154d2565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1690633ca5a5f590602401602060405180830381865afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611363919061551d565b905060005b81811015611444576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190615591565b60000151868681518110611417576114176154d2565b6001600160a01b039092166020928302919091019091015284611439816155d2565b955050600101611368565b5050506001016112ad565b5090979650505050505050565b611464613f13565b610b948161402f565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190615406565b6001600160a01b0316336001600160a01b03161461159b5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610298565b610b9481614098565b60fc546004906010908116036115cc5760405162461bcd60e51b81526004016102989061495a565b6115d68234610932565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561163657508260a0015151604051806040016040528060018152602001600081525051145b801561165d57508260c0015151604051806040016040528060018152602001600081525051145b801561168457508260e0015151604051806040016040528060018152602001600081525051145b6116ee5760405162461bcd60e51b81526020600482015260416024820152600080516020615a5583398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610298565b825151602084015151146117665760405162461bcd60e51b815260206004820152604460248201819052600080516020615a55833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610298565b4363ffffffff168463ffffffff16106117d55760405162461bcd60e51b815260206004820152603c6024820152600080516020615a5583398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610298565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b0381111561189657611896614991565b6040519080825280602002602001820160405280156118bf578160200160208202803683370190505b5081526020860151516001600160401b038111156118df576118df614991565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50816020018190525060006119b460405180604001604052806001815260200160008152507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119af919061555f565b6140df565b905060005b876020015151811015611c45576119fe886020015182815181106119df576119df6154d2565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611a1457611a146154d2565b60209081029190910101528015611ad4576020830151611a3560018361550a565b81518110611a4557611a456154d2565b602002602001015160001c83602001518281518110611a6657611a666154d2565b602002602001015160001c11611ad4576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a5583398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610298565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03166304ec635184602001518381518110611b1957611b196154d2565b60200260200101518b8b600001518581518110611b3857611b386154d2565b60200260200101516040518463ffffffff1660e01b8152600401611b759392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb69190615536565b6001600160c01b031683600001518281518110611bd557611bd56154d2565b602002602001018181525050611c3b610df1611c0f8486600001518581518110611c0157611c016154d2565b602002602001015116614172565b8a602001518481518110611c2557611c256154d2565b602002602001015161419d90919063ffffffff16565b94506001016119b9565b5050611c5083614280565b60975490935060ff16600081611c67576000611ce9565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce9919061551d565b905060005b6040518060400160405280600181526020016000815250518110156123df578215611e7a578963ffffffff16827f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611d7257611d726154d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dda919061551d565b611de491906153d8565b11611e7a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a5583398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610298565b7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ed157611ed16154d2565b602001015160f81c60f81b60f81c8c8c60a001518581518110611ef657611ef66154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7691906155eb565b6001600160401b031916611f998a6040015183815181106119df576119df6154d2565b67ffffffffffffffff1916146120355760405162461bcd60e51b81526020600482015260616024820152600080516020615a5583398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610298565b6120658960400151828151811061204e5761204e6154d2565b602002602001015187613b1590919063ffffffff16565b95507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106120be576120be6154d2565b602001015160f81c60f81b60f81c8c8c60c0015185815181106120e3576120e36154d2565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561213f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121639190615616565b85602001518281518110612179576121796154d2565b6001600160601b039092166020928302919091018201528501518051829081106121a5576121a56154d2565b6020026020010151856000015182815181106121c3576121c36154d2565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156123d5576122528660000151828151811061220d5761220d6154d2565b60200260200101516040518060400160405280600181526020016000815250858151811061223d5761223d6154d2565b016020015160f81c60ff161c60019081161490565b156123cd577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106122ae576122ae6154d2565b602001015160f81c60f81b60f81c8e896020015185815181106122d3576122d36154d2565b60200260200101518f60e0015188815181106122f1576122f16154d2565b6020026020010151878151811061230a5761230a6154d2565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561236e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123929190615616565b87518051859081106123a6576123a66154d2565b602002602001018181516123ba9190615633565b6001600160601b03169052506001909101905b6001016121e7565b5050600101611cee565b5050506000806123f98a868a606001518b60800151610cd6565b915091508161246a5760405162461bcd60e51b81526020600482015260436024820152600080516020615a5583398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610298565b806124cb5760405162461bcd60e51b81526020600482015260396024820152600080516020615a5583398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610298565b505060008782602001516040516020016124e692919061565a565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a919061546d565b6125965760405162461bcd60e51b81526004016102989061548a565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6125dd613f13565b6125e7600061431b565b565b60008184846040516125fc9291906156a2565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146126565760405162461bcd60e51b8152600401610298906156b2565b604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071690639926ee7d906126a49085908590600401615770565b600060405180830381600087803b1580156126be57600080fd5b505af11580156126d2573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146127225760405162461bcd60e51b8152600401610298906156b2565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a364f4da906024015b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b5050505050565b6127a9613f13565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a98fb3559061276c9084906004016157bb565b60cb546001600160a01b031633146128355760cb54604051632cbe419560e01b81523360048201526001600160a01b039091166024820152604401610298565b60fc5460019060029081160361285d5760405162461bcd60e51b81526004016102989061495a565b60005a9050600085856040516020016128779291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff90911690036128cc576040516311cb69a760e11b815260048101839052602401610298565b8054640100000000900460ff16156128fa57604051634e78d7f960e11b815260048101839052602401610298565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca6020526040902054101561297d5760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b8152600481019290925260248201929092526044810191909152606401610298565b805460009061299490849063ffffffff16886115da565b509050604360ff1681602001516000815181106129b3576129b36154d2565b60200260200101516129c591906157ce565b6001600160601b0316606482600001516000815181106129e7576129e76154d2565b60200260200101516001600160601b0316612a0291906157f1565b1015612a955760648160000151600081518110612a2157612a216154d2565b60200260200101516001600160601b0316612a3c91906157f1565b604360ff168260200151600081518110612a5857612a586154d2565b6020026020010151612a6a91906157ce565b60405163530f5c4560e11b815260048101929092526001600160601b03166024820152604401610298565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ae1908761550a565b612aee90620111706153d8565b612af891906157f1565b9050600083600101548210612b11578360010154612b13565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612b4090849061550a565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612bba573d6000803e3d6000fd5b5050505050505050505050565b612bcf613f13565b60cc55565b60fc54600090600190811603612bfc5760405162461bcd60e51b81526004016102989061495a565b60008533604051602001612c119291906153eb565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612c6057604051630c40bc4360e21b815260048101829052602401610298565b3415612cbd5733600090815260ca602052604081208054349290612c859084906153d8565b909155505033600081815260ca6020908152604091829020549151918252600080516020615a35833981519152910160405180910390a25b33600090815260ca6020526040902054831115612d0e5733600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482018590526044820152606401610298565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612da6913391908b908b908b90615808565b60405180910390a250505050505050565b606060007f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d919061555f565b60ff16905080600003612e5e57505060408051600081526020810190915290565b6000805b82811015612f0957604051633ca5a5f560e01b815260ff821660048201527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef5919061551d565b612eff90836153d8565b9150600101612e62565b506000816001600160401b03811115612f2457612f24614991565b604051908082528060200260200182016040528015612f4d578160200160208202803683370190505b5090506000805b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd6919061555f565b60ff1681101561315957604051633ca5a5f560e01b815260ff821660048201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e919061551d565b905060005b8181101561314f576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c9190615591565b60000151858581518110613122576131226154d2565b6001600160a01b039092166020928302919091019091015283613144816155d2565b945050600101613073565b5050600101612f54565b5090949350505050565b61316b613f13565b6001600160a01b0381166131d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610298565b610b948161431b565b600054610100900460ff16158080156131f95750600054600160ff909116105b806132135750303b158015613213575060005460ff166001145b6132765760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610298565b6000805460ff191660011790558015613299576000805461ff0019166101001790555b6001600160a01b0386166132df57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606401610298565b6001600160a01b03851661332957604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606401610298565b6001600160a01b03841661337457604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606401610298565b61337e868661436d565b60cb80546001600160a01b0319166001600160a01b0386161790556133a28661431b565b6133ac83836143ea565b80156126d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b613401613f13565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349a9190615406565b6001600160a01b0316336001600160a01b0316146134ca5760405162461bcd60e51b815260040161029890615423565b60fc5419811960fc541916146135485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610298565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610ccb565b6065546001600160a01b031633146136145760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610298565b60005b818110156138df57828282818110613631576136316154d2565b9050602002810190613643919061585f565b613654906040810190602001614b56565b6001600160a01b03166323b872dd3330868686818110613676576136766154d2565b9050602002810190613688919061585f565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156136df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613703919061546d565b506000838383818110613718576137186154d2565b905060200281019061372a919061585f565b61373b906040810190602001614b56565b604051636eb1769f60e11b81523060048201526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156137a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137cd919061551d565b90508383838181106137e1576137e16154d2565b90506020028101906137f3919061585f565b613804906040810190602001614b56565b6001600160a01b031663095ea7b37f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f83878787818110613846576138466154d2565b9050602002810190613858919061585f565b6040013561386691906153d8565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d5919061546d565b5050600101613617565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fce36c7d906126a490859085906004016158e5565b613936613f13565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b6000836139838685856144d0565b1495945050505050565b6001600160a01b038116613a1b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610298565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613aa0614880565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613acf57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610298565b505092915050565b6040805180820190915260008082526020820152613b3161489e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613b6c57fe5b5080613b0d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610298565b613bb26148bc565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613c9a600080516020615a15833981519152866154e8565b90505b613ca6816145cd565b9093509150600080516020615a158339815191528283098303613cdf576040805180820190915290815260208101919091529392505050565b600080516020615a15833981519152600182089050613c9d565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613d2b6148e1565b60005b6002811015613ee6576000613d448260066157f1565b9050848260028110613d5857613d586154d2565b60200201515183613d6a8360006153d8565b600c8110613d7a57613d7a6154d2565b6020020152848260028110613d9157613d916154d2565b60200201516020015183826001613da891906153d8565b600c8110613db857613db86154d2565b6020020152838260028110613dcf57613dcf6154d2565b6020020151515183613de28360026153d8565b600c8110613df257613df26154d2565b6020020152838260028110613e0957613e096154d2565b6020020151516001602002015183613e228360036153d8565b600c8110613e3257613e326154d2565b6020020152838260028110613e4957613e496154d2565b602002015160200151600060028110613e6457613e646154d2565b602002015183613e758360046153d8565b600c8110613e8557613e856154d2565b6020020152838260028110613e9c57613e9c6154d2565b602002015160200151600160028110613eb757613eb76154d2565b602002015183613ec88360056153d8565b600c8110613ed857613ed86154d2565b602002015250600101613d2e565b50613eef614900565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b031633146125e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610298565b6060600080613f7b84614172565b61ffff166001600160401b03811115613f9657613f96614991565b6040519080825280601f01601f191660200182016040528015613fc0576020820181803683370190505b5090506000805b825182108015613fd8575061010081105b15613159576001811b93508584161561401f578060f81b838381518110614001576140016154d2565b60200101906001600160f81b031916908160001a9053508160010191505b614028816155d2565b9050613fc7565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806140eb8461464f565b9050808360ff166001901b116141695760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610298565b90505b92915050565b6000805b821561416c5761418760018461550a565b9092169180614195816159f3565b915050614176565b60408051808201909152600080825260208201526102008261ffff16106141f95760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610298565b8161ffff1660010361420c57508161416c565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061427557600161ffff871660ff83161c81169003614258576142558484613b15565b93505b6142628384613b15565b92506201fffe600192831b169101614228565b509195945050505050565b604080518082019091526000808252602082015281511580156142a557506020820151155b156142c3575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a1583398151915284602001516142f691906154e8565b61430e90600080516020615a1583398151915261550a565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166143d85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610298565b6143e18261431b565b6115d68161402f565b60fb546001600160a01b031615801561440b57506001600160a01b03821615155b61448d5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610298565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26115d68261398d565b6000602084516144e091906154e8565b156145675760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a401610298565b8260205b855181116111795761457e6002856154e8565b6000036145a2578160005280860151602052604060002091506002840493506145bb565b8086015160005281602052604060002091506002840493505b6145c66020826153d8565b905061456b565b60008080600080516020615a158339815191526003600080516020615a1583398151915286600080516020615a15833981519152888909090890506000614643827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a158339815191526147d7565b91959194509092505050565b6000610100825111156146d85760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610298565b81516000036146e957506000919050565b600080836000815181106146ff576146ff6154d2565b0160200151600160f89190911c81901b92505b84518110156147ce5784818151811061472d5761472d6154d2565b0160200151600160f89190911c1b91508282116147c25760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610298565b91811791600101614712565b50909392505050565b6000806147e2614900565b6147ea61491e565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828061482757fe5b50826148755760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610298565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148cf61493c565b81526020016148dc61493c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156149c9576149c9614991565b60405290565b60405161010081016001600160401b03811182821017156149c9576149c9614991565b604051601f8201601f191681016001600160401b0381118282101715614a1a57614a1a614991565b604052919050565b60006001600160401b03831115614a3b57614a3b614991565b614a4e601f8401601f19166020016149f2565b9050828152838383011115614a6257600080fd5b828260208301376000602084830101529392505050565b600082601f830112614a8a57600080fd5b614a9983833560208501614a22565b9392505050565b6001600160a01b0381168114610b9457600080fd5b600080600080600080600080610100898b031215614ad257600080fd5b88359750602089013596506040890135955060608901356001600160601b031981168114614aff57600080fd5b94506080890135935060a08901356001600160401b03811115614b2157600080fd5b614b2d8b828c01614a79565b93505060c0890135915060e0890135614b4581614aa0565b809150509295985092959890939650565b600060208284031215614b6857600080fd5b813561416981614aa0565b600060208284031215614b8557600080fd5b5035919050565b60ff81168114610b9457600080fd5b600060208284031215614bad57600080fd5b813561416981614b8c565b600060408284031215614bca57600080fd5b614bd26149a7565b9050813581526020820135602082015292915050565b600082601f830112614bf957600080fd5b614c016149a7565b806040840185811115614c1357600080fd5b845b81811015614c2d578035845260209384019301614c15565b509095945050505050565b600060808284031215614c4a57600080fd5b614c526149a7565b9050614c5e8383614be8565b8152614c6d8360408401614be8565b602082015292915050565b6000806000806101208587031215614c8f57600080fd5b84359350614ca08660208701614bb8565b9250614caf8660608701614c38565b9150614cbe8660e08701614bb8565b905092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015614d0a5783516001600160a01b031683529284019291840191600101614ce5565b50909695505050505050565b8015158114610b9457600080fd5b600060208284031215614d3657600080fd5b813561416981614d16565b803563ffffffff8116811461431657600080fd5b60006001600160401b03821115614d6e57614d6e614991565b5060051b60200190565b600082601f830112614d8957600080fd5b81356020614d9e614d9983614d55565b6149f2565b8083825260208201915060208460051b870101935086841115614dc057600080fd5b602086015b84811015614de357614dd681614d41565b8352918301918301614dc5565b509695505050505050565b600082601f830112614dff57600080fd5b81356020614e0f614d9983614d55565b8083825260208201915060208460061b870101935086841115614e3157600080fd5b602086015b84811015614de357614e488882614bb8565b835291830191604001614e36565b600082601f830112614e6757600080fd5b81356020614e77614d9983614d55565b82815260059290921b84018101918181019086841115614e9657600080fd5b8286015b84811015614de35780356001600160401b03811115614eb95760008081fd5b614ec78986838b0101614d78565b845250918301918301614e9a565b60006101808284031215614ee857600080fd5b614ef06149cf565b905081356001600160401b0380821115614f0957600080fd5b614f1585838601614d78565b83526020840135915080821115614f2b57600080fd5b614f3785838601614dee565b60208401526040840135915080821115614f5057600080fd5b614f5c85838601614dee565b6040840152614f6e8560608601614c38565b6060840152614f808560e08601614bb8565b6080840152610120840135915080821115614f9a57600080fd5b614fa685838601614d78565b60a0840152610140840135915080821115614fc057600080fd5b614fcc85838601614d78565b60c0840152610160840135915080821115614fe657600080fd5b50614ff384828501614e56565b60e08301525092915050565b60008060006060848603121561501457600080fd5b8335925061502460208501614d41565b915060408401356001600160401b0381111561503f57600080fd5b61504b86828701614ed5565b9150509250925092565b60008151808452602080850194506020840160005b8381101561508f5781516001600160601b03168752958201959082019060010161506a565b509495945050505050565b60408152600083516040808401526150b56080840182615055565b90506020850151603f198483030160608501526150d28282615055565b925050508260208301529392505050565b60008083601f8401126150f557600080fd5b5081356001600160401b0381111561510c57600080fd5b60208301915083602082850101111561512457600080fd5b9250929050565b60008060006040848603121561514057600080fd5b83356001600160401b0381111561515657600080fd5b615162868287016150e3565b909790965060209590950135949350505050565b6000806040838503121561518957600080fd5b823561519481614aa0565b915060208301356001600160401b03808211156151b057600080fd5b90840190606082870312156151c457600080fd5b6040516060810181811083821117156151df576151df614991565b6040528235828111156151f157600080fd5b6151fd88828601614a79565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561523357600080fd5b81356001600160401b0381111561524957600080fd5b8201601f8101841361525a57600080fd5b61526984823560208401614a22565b949350505050565b60008060006060848603121561528657600080fd5b83359250602084013561502481614aa0565b600080600080606085870312156152ae57600080fd5b8435935060208501356001600160401b038111156152cb57600080fd5b6152d7878288016150e3565b9598909750949560400135949350505050565b600080600080600060a0868803121561530257600080fd5b853561530d81614aa0565b9450602086013561531d81614aa0565b9350604086013561532d81614aa0565b9250606086013561533d81614aa0565b949793965091946080013592915050565b6000806020838503121561536157600080fd5b82356001600160401b038082111561537857600080fd5b818501915085601f83011261538c57600080fd5b81358181111561539b57600080fd5b8660208260051b85010111156153b057600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561416c5761416c6153c2565b91825260601b6001600160601b031916602082015260340190565b60006020828403121561541857600080fd5b815161416981614aa0565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561547f57600080fd5b815161416981614d16565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261550557634e487b7160e01b600052601260045260246000fd5b500690565b8181038181111561416c5761416c6153c2565b60006020828403121561552f57600080fd5b5051919050565b60006020828403121561554857600080fd5b81516001600160c01b038116811461416957600080fd5b60006020828403121561557157600080fd5b815161416981614b8c565b6001600160601b0381168114610b9457600080fd5b6000604082840312156155a357600080fd5b6155ab6149a7565b82516155b681614aa0565b815260208301516155c68161557c565b60208201529392505050565b6000600182016155e4576155e46153c2565b5060010190565b6000602082840312156155fd57600080fd5b815167ffffffffffffffff198116811461416957600080fd5b60006020828403121561562857600080fd5b81516141698161557c565b6001600160601b03828116828216039080821115615653576156536153c2565b5092915050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561569557815185529382019390820190600101615679565b5092979650505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b8181101561575057602081850181015186830182015201615734565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b038316815260406020820152600082516060604084015261579a60a084018261572a565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614a99602083018461572a565b6001600160601b03818116838216028082169190828114613b0d57613b0d6153c2565b808202811582820484141761416c5761416c6153c2565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60008235609e1983360301811261587557600080fd5b9190910192915050565b803561431681614aa0565b8183526000602080850194508260005b8581101561508f5781356158ad81614aa0565b6001600160a01b03168752818301356158c58161557c565b6001600160601b031687840152604096870196919091019060010161589a565b60208082528181018390526000906040808401600586901b8501820187855b888110156159e557878303603f190184528135368b9003609e1901811261592a57600080fd5b8a0160a0813536839003601e1901811261594357600080fd5b820188810190356001600160401b0381111561595e57600080fd5b8060061b360382131561597057600080fd5b828752615980838801828461588a565b9250505061598f88830161587f565b6001600160a01b031688860152818701358786015260606159b1818401614d41565b63ffffffff169086015260806159c8838201614d41565b63ffffffff16950194909452509285019290850190600101615904565b509098975050505050505050565b600061ffff808316818103615a0a57615a0a6153c2565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220cde428f3f88df95c90a1ec8fecb6c7eba0ec71b263a25efb19209458df8a2f3d64736f6c63430008180033","nonce":49,"gas_used":5126156},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x4e380c","logs":[{"address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x3460ed4e668313d51c98997b446741676477fab351d852f4b5790aa39abdb5a2","block_number":9},{"info":{"transaction_hash":"0xce5b5b87d690f0e404fbdbff7a168d4b80e353e0b6d9e8405858a895c302bcdf","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9d4454b023096f34b160d6b654540c56a1f81688","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9d4454b023096f34b160d6b654540c56a1f81688","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a06040523480156200001157600080fd5b506040516200208738038062002087833981016040819052620000349162000116565b6001600160a01b038116608052806200004c62000054565b505062000148565b600054610100900460ff1615620000c15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000114576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b608051611f07620001806000396000818161030f01528181610466015281816105bf015281816109c501526110250152611f076000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118e3565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118e3565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611916565b61045b565b005b6101ca6101b5366004611916565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119a1565b6105b4565b61021b610200366004611a47565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611916565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a60565b6102a261029d366004611a77565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611aa1565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000000000000000000000000000000000000000000081565b61034461033f366004611a77565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118e3565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611916565b6005602052600090815260409020805460019091015482565b6101846103da366004611ae9565b6109b8565b6103f26103ed366004611b46565b610e0b565b6040516101529190611bbe565b61018461040d3660046118e3565b60016020526000908152604090205481565b61021b61042d366004611a47565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119a1565b61101a565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104ac5760405162461bcd60e51b81526004016104a390611c08565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc5760405162461bcd60e51b81526004016104a390611c08565b6000610607836108eb565b50905061061482826110c3565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c7c565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a025760405162461bcd60e51b81526004016104a390611c08565b6000610a30610a1936869003860160408701611cf8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610ab7576040805162461bcd60e51b8152602060048201526024810191909152600080516020611eb283398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b415760405162461bcd60e51b81526020600482015260476024820152600080516020611eb283398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc55760405162461bcd60e51b81526020600482015260426024820152600080516020611eb283398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1e918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d2a565b6040516020818303038152906040528051906020012060001c610c419190611d6c565b9050610cdb610c7a610c6583610c5f368a90038a0160408b01611cf8565b90611307565b610c7436899003890189611cf8565b90611398565b610c8261142d565b610cc4610cb585610c5f604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c74368a90038a018a611cf8565b610cd6368a90038a0160808b01611dde565b6114ed565b610d765760405162461bcd60e51b815260206004820152606c6024820152600080516020611eb283398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfa9160808a0190611e1d565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2857610e28611931565b604051908082528060200260200182016040528015610e51578160200160208202803683370190505b50905060005b84811015611011576000868683818110610e7357610e73611ce2565b919091013560f81c6000818152600460205260409020549092509050801580610ed6575060ff821660009081526004602052604081208054909190610eba57610eba611ce2565b600091825260209091200154600160c01b900463ffffffff1686105b15610f635760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110065760ff831660009081526004602052604090208790610f8a600184611e5d565b81548110610f9a57610f9a611ce2565b600091825260209091200154600160c01b900463ffffffff1611610ff457610fc3600182611e5d565b858581518110610fd557610fd5611ce2565b602002602001019063ffffffff16908163ffffffff1681525050611006565b80610ffe81611e70565b915050610f65565b505050600101610e57565b50949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110625760405162461bcd60e51b81526004016104a390611c08565b600061106d836108eb565b5090506110828261107d83611751565b6110c3565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b83518110156113015760008482815181106110f7576110f7611ce2565b0160209081015160f81c600081815260049092526040822054909250908190036111895760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111bd9086611398565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112069085611e5d565b8154811061121657611216611ce2565b6000918252602090912001805490915063ffffffff438116600160c01b90920416036112555780546001600160c01b031916604083901c1781556112f1565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110da9050565b50505050565b6040805180820190915260008082526020820152611323611810565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808061135257fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113b461182e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080806113ef57fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61143561184c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201825285815260208082018590528251808401909352858352820183905260009161151c611871565b60005b60028110156116d7576000611535826006611e87565b905084826002811061154957611549611ce2565b6020020151518361155b836000611e9e565b600c811061156b5761156b611ce2565b602002015284826002811061158257611582611ce2565b602002015160200151838260016115999190611e9e565b600c81106115a9576115a9611ce2565b60200201528382600281106115c0576115c0611ce2565b60200201515151836115d3836002611e9e565b600c81106115e3576115e3611ce2565b60200201528382600281106115fa576115fa611ce2565b6020020151516001602002015183611613836003611e9e565b600c811061162357611623611ce2565b602002015283826002811061163a5761163a611ce2565b60200201516020015160006002811061165557611655611ce2565b602002015183611666836004611e9e565b600c811061167657611676611ce2565b602002015283826002811061168d5761168d611ce2565b6020020151602001516001600281106116a8576116a8611ce2565b6020020151836116b9836005611e9e565b600c81106116c9576116c9611ce2565b60200201525060010161151f565b506116e0611890565b60006020826101808560086107d05a03fa905080806116fb57fe5b50806117415760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561177657506020820151155b15611794575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117d99190611d6c565b611803907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e5d565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061185f6118ae565b815260200161186c6118ae565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461180b57600080fd5b6000602082840312156118f557600080fd5b6118fe826118cc565b9392505050565b803560ff8116811461180b57600080fd5b60006020828403121561192857600080fd5b6118fe82611905565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196a5761196a611931565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199957611999611931565b604052919050565b600080604083850312156119b457600080fd5b6119bd836118cc565b915060208084013567ffffffffffffffff808211156119db57600080fd5b818601915086601f8301126119ef57600080fd5b813581811115611a0157611a01611931565b611a13601f8201601f19168501611970565b91508082528784828501011115611a2957600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a5957600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611a8a57600080fd5b611a9383611905565b946020939093013593505050565b600080600060608486031215611ab657600080fd5b611abf84611905565b9250602084013563ffffffff81168114611ad857600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b0057600080fd5b611b09856118cc565b9350610100601f1982011215611b1e57600080fd5b602085019250604061011f1982011215611b3757600080fd5b50610120840190509250925092565b600080600060408486031215611b5b57600080fd5b833567ffffffffffffffff80821115611b7357600080fd5b818601915086601f830112611b8757600080fd5b813581811115611b9657600080fd5b876020828501011115611ba857600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bfc57835163ffffffff1683529284019291840191600101611bda565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b03841681526000602084602084015260606040840152835180606085015260005b81811015611cbf57858101830151858201608001528201611ca3565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d0a57600080fd5b611d12611947565b82358152602083013560208201528091505092915050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b600082611d8957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d9f57600080fd5b611da7611947565b806040840185811115611db957600080fd5b845b81811015611dd3578035845260209384019301611dbb565b509095945050505050565b600060808284031215611df057600080fd5b611df8611947565b611e028484611d8e565b8152611e118460408501611d8e565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106ff576106ff611e47565b600081611e7f57611e7f611e47565b506000190190565b80820281158282048414176106ff576106ff611e47565b808201808211156106ff576106ff611e4756fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122032bb5054c7a2f6432e5be9a0f6a1c05e87838a89c3e8ae01d982bce76ffd2a6064736f6c63430008180033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","output":"0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118e3565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118e3565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611916565b61045b565b005b6101ca6101b5366004611916565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119a1565b6105b4565b61021b610200366004611a47565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611916565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a60565b6102a261029d366004611a77565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611aa1565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b61034461033f366004611a77565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118e3565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611916565b6005602052600090815260409020805460019091015482565b6101846103da366004611ae9565b6109b8565b6103f26103ed366004611b46565b610e0b565b6040516101529190611bbe565b61018461040d3660046118e3565b60016020526000908152604090205481565b61021b61042d366004611a47565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119a1565b61101a565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146104ac5760405162461bcd60e51b81526004016104a390611c08565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146105fc5760405162461bcd60e51b81526004016104a390611c08565b6000610607836108eb565b50905061061482826110c3565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c7c565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614610a025760405162461bcd60e51b81526004016104a390611c08565b6000610a30610a1936869003860160408701611cf8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610ab7576040805162461bcd60e51b8152602060048201526024810191909152600080516020611eb283398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b415760405162461bcd60e51b81526020600482015260476024820152600080516020611eb283398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc55760405162461bcd60e51b81526020600482015260426024820152600080516020611eb283398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1e918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d2a565b6040516020818303038152906040528051906020012060001c610c419190611d6c565b9050610cdb610c7a610c6583610c5f368a90038a0160408b01611cf8565b90611307565b610c7436899003890189611cf8565b90611398565b610c8261142d565b610cc4610cb585610c5f604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c74368a90038a018a611cf8565b610cd6368a90038a0160808b01611dde565b6114ed565b610d765760405162461bcd60e51b815260206004820152606c6024820152600080516020611eb283398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfa9160808a0190611e1d565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2857610e28611931565b604051908082528060200260200182016040528015610e51578160200160208202803683370190505b50905060005b84811015611011576000868683818110610e7357610e73611ce2565b919091013560f81c6000818152600460205260409020549092509050801580610ed6575060ff821660009081526004602052604081208054909190610eba57610eba611ce2565b600091825260209091200154600160c01b900463ffffffff1686105b15610f635760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110065760ff831660009081526004602052604090208790610f8a600184611e5d565b81548110610f9a57610f9a611ce2565b600091825260209091200154600160c01b900463ffffffff1611610ff457610fc3600182611e5d565b858581518110610fd557610fd5611ce2565b602002602001019063ffffffff16908163ffffffff1681525050611006565b80610ffe81611e70565b915050610f65565b505050600101610e57565b50949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146110625760405162461bcd60e51b81526004016104a390611c08565b600061106d836108eb565b5090506110828261107d83611751565b6110c3565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b83518110156113015760008482815181106110f7576110f7611ce2565b0160209081015160f81c600081815260049092526040822054909250908190036111895760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111bd9086611398565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112069085611e5d565b8154811061121657611216611ce2565b6000918252602090912001805490915063ffffffff438116600160c01b90920416036112555780546001600160c01b031916604083901c1781556112f1565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110da9050565b50505050565b6040805180820190915260008082526020820152611323611810565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808061135257fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113b461182e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080806113ef57fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61143561184c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201825285815260208082018590528251808401909352858352820183905260009161151c611871565b60005b60028110156116d7576000611535826006611e87565b905084826002811061154957611549611ce2565b6020020151518361155b836000611e9e565b600c811061156b5761156b611ce2565b602002015284826002811061158257611582611ce2565b602002015160200151838260016115999190611e9e565b600c81106115a9576115a9611ce2565b60200201528382600281106115c0576115c0611ce2565b60200201515151836115d3836002611e9e565b600c81106115e3576115e3611ce2565b60200201528382600281106115fa576115fa611ce2565b6020020151516001602002015183611613836003611e9e565b600c811061162357611623611ce2565b602002015283826002811061163a5761163a611ce2565b60200201516020015160006002811061165557611655611ce2565b602002015183611666836004611e9e565b600c811061167657611676611ce2565b602002015283826002811061168d5761168d611ce2565b6020020151602001516001600281106116a8576116a8611ce2565b6020020151836116b9836005611e9e565b600c81106116c9576116c9611ce2565b60200201525060010161151f565b506116e0611890565b60006020826101808560086107d05a03fa905080806116fb57fe5b50806117415760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561177657506020820151155b15611794575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117d99190611d6c565b611803907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e5d565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061185f6118ae565b815260200161186c6118ae565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461180b57600080fd5b6000602082840312156118f557600080fd5b6118fe826118cc565b9392505050565b803560ff8116811461180b57600080fd5b60006020828403121561192857600080fd5b6118fe82611905565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196a5761196a611931565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199957611999611931565b604052919050565b600080604083850312156119b457600080fd5b6119bd836118cc565b915060208084013567ffffffffffffffff808211156119db57600080fd5b818601915086601f8301126119ef57600080fd5b813581811115611a0157611a01611931565b611a13601f8201601f19168501611970565b91508082528784828501011115611a2957600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a5957600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611a8a57600080fd5b611a9383611905565b946020939093013593505050565b600080600060608486031215611ab657600080fd5b611abf84611905565b9250602084013563ffffffff81168114611ad857600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b0057600080fd5b611b09856118cc565b9350610100601f1982011215611b1e57600080fd5b602085019250604061011f1982011215611b3757600080fd5b50610120840190509250925092565b600080600060408486031215611b5b57600080fd5b833567ffffffffffffffff80821115611b7357600080fd5b818601915086601f830112611b8757600080fd5b813581811115611b9657600080fd5b876020828501011115611ba857600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bfc57835163ffffffff1683529284019291840191600101611bda565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b03841681526000602084602084015260606040840152835180606085015260005b81811015611cbf57858101830151858201608001528201611ca3565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d0a57600080fd5b611d12611947565b82358152602083013560208201528091505092915050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b600082611d8957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d9f57600080fd5b611da7611947565b806040840185811115611db957600080fd5b845b81811015611dd3578035845260209384019301611dbb565b509095945050505050565b600060808284031215611df057600080fd5b611df8611947565b611e028484611d8e565b8152611e118460408501611d8e565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106ff576106ff611e47565b600081611e7f57611e7f611e47565b506000190190565b80820281158282048414176106ff576106ff611e47565b808201808211156106ff576106ff611e4756fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122032bb5054c7a2f6432e5be9a0f6a1c05e87838a89c3e8ae01d982bce76ffd2a6064736f6c63430008180033","gas_used":1614038,"gas_limit":2152488,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118e3565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118e3565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611916565b61045b565b005b6101ca6101b5366004611916565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119a1565b6105b4565b61021b610200366004611a47565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611916565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a60565b6102a261029d366004611a77565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611aa1565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b61034461033f366004611a77565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118e3565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611916565b6005602052600090815260409020805460019091015482565b6101846103da366004611ae9565b6109b8565b6103f26103ed366004611b46565b610e0b565b6040516101529190611bbe565b61018461040d3660046118e3565b60016020526000908152604090205481565b61021b61042d366004611a47565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119a1565b61101a565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146104ac5760405162461bcd60e51b81526004016104a390611c08565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146105fc5760405162461bcd60e51b81526004016104a390611c08565b6000610607836108eb565b50905061061482826110c3565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c7c565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614610a025760405162461bcd60e51b81526004016104a390611c08565b6000610a30610a1936869003860160408701611cf8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610ab7576040805162461bcd60e51b8152602060048201526024810191909152600080516020611eb283398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b415760405162461bcd60e51b81526020600482015260476024820152600080516020611eb283398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc55760405162461bcd60e51b81526020600482015260426024820152600080516020611eb283398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1e918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d2a565b6040516020818303038152906040528051906020012060001c610c419190611d6c565b9050610cdb610c7a610c6583610c5f368a90038a0160408b01611cf8565b90611307565b610c7436899003890189611cf8565b90611398565b610c8261142d565b610cc4610cb585610c5f604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c74368a90038a018a611cf8565b610cd6368a90038a0160808b01611dde565b6114ed565b610d765760405162461bcd60e51b815260206004820152606c6024820152600080516020611eb283398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfa9160808a0190611e1d565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2857610e28611931565b604051908082528060200260200182016040528015610e51578160200160208202803683370190505b50905060005b84811015611011576000868683818110610e7357610e73611ce2565b919091013560f81c6000818152600460205260409020549092509050801580610ed6575060ff821660009081526004602052604081208054909190610eba57610eba611ce2565b600091825260209091200154600160c01b900463ffffffff1686105b15610f635760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110065760ff831660009081526004602052604090208790610f8a600184611e5d565b81548110610f9a57610f9a611ce2565b600091825260209091200154600160c01b900463ffffffff1611610ff457610fc3600182611e5d565b858581518110610fd557610fd5611ce2565b602002602001019063ffffffff16908163ffffffff1681525050611006565b80610ffe81611e70565b915050610f65565b505050600101610e57565b50949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146110625760405162461bcd60e51b81526004016104a390611c08565b600061106d836108eb565b5090506110828261107d83611751565b6110c3565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b83518110156113015760008482815181106110f7576110f7611ce2565b0160209081015160f81c600081815260049092526040822054909250908190036111895760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111bd9086611398565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112069085611e5d565b8154811061121657611216611ce2565b6000918252602090912001805490915063ffffffff438116600160c01b90920416036112555780546001600160c01b031916604083901c1781556112f1565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110da9050565b50505050565b6040805180820190915260008082526020820152611323611810565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808061135257fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113b461182e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080806113ef57fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61143561184c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201825285815260208082018590528251808401909352858352820183905260009161151c611871565b60005b60028110156116d7576000611535826006611e87565b905084826002811061154957611549611ce2565b6020020151518361155b836000611e9e565b600c811061156b5761156b611ce2565b602002015284826002811061158257611582611ce2565b602002015160200151838260016115999190611e9e565b600c81106115a9576115a9611ce2565b60200201528382600281106115c0576115c0611ce2565b60200201515151836115d3836002611e9e565b600c81106115e3576115e3611ce2565b60200201528382600281106115fa576115fa611ce2565b6020020151516001602002015183611613836003611e9e565b600c811061162357611623611ce2565b602002015283826002811061163a5761163a611ce2565b60200201516020015160006002811061165557611655611ce2565b602002015183611666836004611e9e565b600c811061167657611676611ce2565b602002015283826002811061168d5761168d611ce2565b6020020151602001516001600281106116a8576116a8611ce2565b6020020151836116b9836005611e9e565b600c81106116c9576116c9611ce2565b60200201525060010161151f565b506116e0611890565b60006020826101808560086107d05a03fa905080806116fb57fe5b50806117415760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561177657506020820151155b15611794575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117d99190611d6c565b611803907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e5d565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061185f6118ae565b815260200161186c6118ae565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461180b57600080fd5b6000602082840312156118f557600080fd5b6118fe826118cc565b9392505050565b803560ff8116811461180b57600080fd5b60006020828403121561192857600080fd5b6118fe82611905565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196a5761196a611931565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199957611999611931565b604052919050565b600080604083850312156119b457600080fd5b6119bd836118cc565b915060208084013567ffffffffffffffff808211156119db57600080fd5b818601915086601f8301126119ef57600080fd5b813581811115611a0157611a01611931565b611a13601f8201601f19168501611970565b91508082528784828501011115611a2957600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a5957600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611a8a57600080fd5b611a9383611905565b946020939093013593505050565b600080600060608486031215611ab657600080fd5b611abf84611905565b9250602084013563ffffffff81168114611ad857600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b0057600080fd5b611b09856118cc565b9350610100601f1982011215611b1e57600080fd5b602085019250604061011f1982011215611b3757600080fd5b50610120840190509250925092565b600080600060408486031215611b5b57600080fd5b833567ffffffffffffffff80821115611b7357600080fd5b818601915086601f830112611b8757600080fd5b813581811115611b9657600080fd5b876020828501011115611ba857600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bfc57835163ffffffff1683529284019291840191600101611bda565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b03841681526000602084602084015260606040840152835180606085015260005b81811015611cbf57858101830151858201608001528201611ca3565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d0a57600080fd5b611d12611947565b82358152602083013560208201528091505092915050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b600082611d8957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d9f57600080fd5b611da7611947565b806040840185811115611db957600080fd5b845b81811015611dd3578035845260209384019301611dbb565b509095945050505050565b600060808284031215611df057600080fd5b611df8611947565b611e028484611d8e565b8152611e118460408501611d8e565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106ff576106ff611e47565b600081611e7f57611e7f611e47565b506000190190565b80820281158282048414176106ff576106ff611e47565b808201808211156106ff576106ff611e4756fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122032bb5054c7a2f6432e5be9a0f6a1c05e87838a89c3e8ae01d982bce76ffd2a6064736f6c63430008180033","nonce":45,"gas_used":1797106},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1b6bf2","logs":[{"address":"0x9d4454b023096f34b160d6b654540c56a1f81688","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000080000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000"},"block_hash":"0xd108aee174328f42558e98f2e2eb7130cc6cf0ccffa8c5751f65a8f9ba157193","block_number":6},{"info":{"transaction_hash":"0xf7c9e4de1144f679b9556ee611e54a7ff0a445dbbd1f30c62f0930d683101d3e","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000264dd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":546587,"gas_limit":682481,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef28600000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000264dd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":538879,"gas_limit":664277,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[3,5,7],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xdd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000","output":"0x","gas_used":524756,"gas_limit":640212,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x00000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af80000000000000000000000000000000000000000000000000000000000000032"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":3}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5},{"Call":0},{"Call":1},{"Call":2},{"Log":6}]},{"parent":2,"children":[4],"idx":3,"trace":{"depth":3,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xff694a770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000","output":"0x","gas_used":170290,"gas_limit":391545,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":3,"children":[],"idx":4,"trace":{"depth":4,"success":true,"caller":"0x998abeb3e57409262ae5b751f60747921b33613e","address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xff694a770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000","output":"0x","gas_used":162968,"gas_limit":378257,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]},{"parent":2,"children":[6],"idx":5,"trace":{"depth":3,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":52363,"gas_limit":221095,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":5,"children":[],"idx":6,"trace":{"depth":4,"success":true,"caller":"0x95401dc811bb5740090279ba06cfa8fcf6113778","address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":45068,"gas_limit":210497,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":2,"children":[8],"idx":7,"trace":{"depth":3,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":52505,"gas_limit":166729,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":7,"children":[],"idx":8,"trace":{"depth":4,"success":true,"caller":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","address":"0x9d4454b023096f34b160d6b654540c56a1f81688","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":45210,"gas_limit":156981,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":48,"gas_used":572739},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8bd43","logs":[{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570"],"data":"0x"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x00000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af80000000000000000000000000000000000000000000000000000000000000032"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00002000000001000000000040000000400000000000000000800000000000000000000800000000000000000000000080800010000000100800000000000000000080000000008000002400000102000001000400000000000000008000000000000000020000000000008100010800000000000200000000000100000000400400000100000000000000000000000000000000000080000000000000000000000000000000000000004000400400000000000000000000000000000000000000000020480000280000000000041100000000002000000000000000000020000000000000000000000000800000000000000000000000000208100000408000"},"block_hash":"0x6123a7340e377c767e6c8d3b963bf034d4947d0822a0da90a38485af5c6559c3","block_number":8},{"info":{"transaction_hash":"0x22a9f86b632e0721e86b2a5abace725309858cf2abca7c3f7f22df7902873912","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033","output":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033","gas_used":23875,"gas_limit":47605,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033","nonce":2,"gas_used":79145},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x65ecf","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6f5c23d23cc1a6585e03a9255d0017fa2e89b1cb671629ef6ee84a9608a08afe","block_number":2},{"info":{"transaction_hash":"0x34fb9442d5a4081b3e20e2767849dfaf2e3451f57b8ca3cee2259ebae4852745","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b50604051610ee6380380610ee6833981016040819052602c916049565b5050607e565b6001600160a01b0381168114604657600080fd5b50565b60008060408385031215605b57600080fd5b82516064816032565b60208401519092506073816032565b809150509250929050565b610e598061008d6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","output":"0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033","gas_used":735686,"gas_limit":990197,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033","nonce":16,"gas_used":849430},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xcf616","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0","block_number":9},{"info":{"transaction_hash":"0xd731646803dbeb86f6882b501adfb712ddd0c0ab58ebd0b070794de92c7777b6","transaction_index":2,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561001057600080fd5b50604051611eb9380380611eb983398101604081905261002f9161019c565b6001600160a01b0381166100c55760405162461bcd60e51b815260206004820152604c60248201527f44656c617965645769746864726177616c526f757465722e636f6e737472756360448201527f746f723a205f656967656e506f644d616e616765722063616e6e6f742062652060648201526b7a65726f206164647265737360a01b608482015260a4015b60405180910390fd5b6001600160a01b0381166080526100da6100e0565b506101cc565b600054610100900460ff16156101485760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bc565b60005460ff908116101561019a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156101ae57600080fd5b81516001600160a01b03811681146101c557600080fd5b9392505050565b608051611ccb6101ee600039600081816101fa0152610be00152611ccb6000f3fe60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000000000000000000000000000000000000000000000169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c00330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6","output":"0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c0033","gas_used":1499498,"gas_limit":2001723,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c0033","nonce":18,"gas_used":1676224},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x525890","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000"},"block_hash":"0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0","block_number":9},{"info":{"transaction_hash":"0x914c677dfbce44318a8d1f66bef4630efcb602922d825efb7e5157825f9212c7","transaction_index":2,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60c06040523480156200001157600080fd5b506040516200389f3803806200389f833981016040819052620000349162000065565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a051613796620001096000396000818161037a015281816106340152818161096701528181610ccf015281816110f0015281816116d0015281816117d2015281816118eb0152611cad0152600081816105290152611e6e01526137966000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612bca565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612be5565b610597565b604051610217929190612c0f565b61025461024f366004612c49565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612cc4565b610632565b005b61029461028f366004612d85565b610959565b604051610217929190612e25565b6102b56102b0366004612e4a565b610c15565b6040516102179190612e76565b61020d6102d0366004612bca565b60ff1660009081526003602052604090205490565b61020d6102f3366004612e4a565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612e4a565b610cb4565b61020d670de0b6b3a764000081565b61027f610345366004612f7f565b610ccd565b61035d610358366004612d85565b6110e3565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc36600461303b565b611240565b604051610217919061308d565b61039c6103fc366004612be5565b6114f5565b61041461040f3660046130cb565b61152d565b60405161021791906130fe565b61043461042f366004612be5565b6115c5565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612be5565b61163f565b61027f61048236600461314a565b6116ce565b61027f610495366004613174565b6117c7565b6102546104a8366004612bca565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004613240565b6118e9565b6102546104e436600461328d565b6119dd565b6102546104f7366004612bca565b611a5b565b61050f61050a3660046132c9565b611aae565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000000000000000000000000000000000000000000081565b610254610559366004613305565b611ac3565b61041461056c366004612e4a565b611b58565b61025461057f3660046132c9565b611c41565b61027f610592366004613347565b611ca2565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b8152600401610611906133a4565b60405180910390fd5b60006106268585611e0d565b509250505b5092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906133f5565b6001600160a01b0316336001600160a01b0316146106e45760405162461bcd60e51b815260040161061190613412565b846107008160ff16600090815260016020526040902054151590565b61071c5760405162461bcd60e51b8152600401610611906133a4565b8380610792576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108075760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561094e578585828181106108355761083561348e565b905060200201602081019061084a91906134a4565b8289898481811061085d5761085d61348e565b90506020020135815481106108745761087461348e565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108dd576108dd61348e565b90506020020135815481106108f4576108f461348e565b6000918252602090912001546001600160a01b031688888581811061091b5761091b61348e565b905060200201602081019061093091906134a4565b60405161093e929190612c0f565b60405180910390a260010161081b565b505050505050505050565b606080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109a45760405162461bcd60e51b8152600401610611906134bf565b6000836001600160401b038111156109be576109be612eee565b6040519080825280602002602001820160405280156109e7578160200160208202803683370190505b5090506000846001600160401b03811115610a0457610a04612eee565b604051908082528060200260200182016040528015610a2d578160200160208202803683370190505b50905060005b85811015610c07576000878783818110610a4f57610a4f61348e565b919091013560f81c60008181526001602052604090205490925015159050610ad75760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610ae4838d611e0d565b9150915080610b815760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b8e8c8585612001565b905082878681518110610ba357610ba361348e565b60200260200101906001600160601b031690816001600160601b031681525050610bcd8482612280565b868681518110610bdf57610bdf61348e565b6001600160601b0390921660209283029190910190910152505060019092019150610a339050565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610ca7576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c4e565b5050505090505b92915050565b600080610cc18484611b58565b60400151949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f91906133f5565b6001600160a01b0316336001600160a01b031614610d7f5760405162461bcd60e51b815260040161061190613412565b81610d9b8160ff16600090815260016020526040902054151590565b610db75760405162461bcd60e51b8152600401610611906133a4565b815180610e2c5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110da578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e8b57610e8b61348e565b602002602001015181548110610ea357610ea361348e565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f0157610f0161348e565b602002602001015181548110610f1957610f1961348e565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f5990600190613547565b81548110610f6957610f6961348e565b9060005260206000200183878381518110610f8657610f8661348e565b602002602001015181548110610f9e57610f9e61348e565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610ff157610ff161355a565b6000828152602081208201600019908101919091550190558154829061101990600190613547565b815481106110295761102961348e565b9060005260206000200160009054906101000a90046001600160a01b03168287838151811061105a5761105a61348e565b6020026020010151815481106110725761107261348e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110b0576110b061355a565b600082815260209020810160001990810180546001600160a01b0319169055019055600101610e4b565b50505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461112d5760405162461bcd60e51b8152600401610611906134bf565b6000805b8381101561123657600085858381811061114d5761114d61348e565b919091013560f81c600081815260016020526040902054909250151590506111dd5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b6000806111ea838b611e0d565b915091508061120c5760009150600160ff84161b6001600160c01b0386161794505b60006112198a8585612001565b90506112258482612280565b505060019093019250611131915050565b5095945050505050565b60606000826001600160401b0381111561125c5761125c612eee565b604051908082528060200260200182016040528015611285578160200160208202803683370190505b50905060005b838110156114ea5760008585838181106112a7576112a761348e565b919091013560f81c600081815260016020526040902054909250151590506113465760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061136f5761136f61348e565b60009182526020909120015463ffffffff16111561141b5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156114df5760ff8316600090815260016020819052604090912063ffffffff8b169161145f8486613547565b6114699190613547565b815481106114795761147961348e565b60009182526020909120015463ffffffff16116114d757600161149c8284613547565b6114a69190613547565b8585815181106114b8576114b861348e565b602002602001019063ffffffff16908163ffffffff16815250506114df565b600101611430565b50505060010161128b565b5090505b9392505050565b6004602052816000526040600020818154811061151157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115725761157261348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115fd576115fd61348e565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600190529190912080548390811061167c5761167c61348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175091906133f5565b6001600160a01b0316336001600160a01b0316146117805760405162461bcd60e51b815260040161061190613412565b8161179c8160ff16600090815260016020526040902054151590565b6117b85760405162461bcd60e51b8152600401610611906133a4565b6117c283836123f7565b505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461180f5760405162461bcd60e51b8152600401610611906134bf565b60005b818110156118e357600083838381811061182e5761182e61348e565b919091013560f81c600081815260016020526040902054909250151590506118be5760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118cc86836000612001565b90506118d88282612280565b505050600101611812565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b91906133f5565b6001600160a01b0316336001600160a01b03161461199b5760405162461bcd60e51b815260040161061190613412565b816119b78160ff16600090815260016020526040902054151590565b6119d35760405162461bcd60e51b8152600401610611906133a4565b6117c28383612460565b60ff83166000908152600160205260408120805482919084908110611a0457611a0461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cc1818561288e565b60ff81166000908152600160208190526040822080549091611a7c91613547565b81548110611a8c57611a8c61348e565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611abb848484612a08565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611af457611af461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b4b818661288e565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611bb5579150610cae9050565b600085815260026020908152604080832060ff881684529091529020611bdc600184613547565b81548110611bec57611bec61348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cae915050565b600083815260026020908152604080832060ff861684529091528120611c68858585612a08565b63ffffffff1681548110611c7e57611c7e61348e565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611cea5760405162461bcd60e51b8152600401610611906134bf565b60ff831660009081526001602052604090205415611d685760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611d728382612460565b611d7c83836123f7565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e2c8660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692639004134792611ea1928c9201613570565b600060405180830381865afa158015611ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee691908101906135d1565b905060005b83811015611fcd5760ff89166000908152600360205260409020805482908110611f1757611f1761348e565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f6557611f6561348e565b60200260200101511115611fc557670de0b6b3a764000083602001516001600160601b0316838381518110611f9c57611f9c61348e565b6020026020010151611fae9190613661565b611fb89190613678565b611fc2908661369a565b94505b600101611eeb565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908082036120c757600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612226565b600086815260026020908152604080832060ff8916845290915281206120ee600184613547565b815481106120fe576120fe61348e565b600091825260209091200180546001600160601b03600160401b909104811694509091508516830361213657600093505050506114ee565b805463ffffffff43811691160361216e578054600160401b600160a01b031916600160401b6001600160601b03871602178155612224565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122768285612b6e565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122a49084613547565b815481106122b4576122b461348e565b906000526020600020019050836000036122e25754600160401b90046001600160601b03169150610cae9050565b805460009061230190600160401b90046001600160601b031686612b86565b825490915063ffffffff43811691160361233c578154600160401b600160a01b031916600160401b6001600160601b038316021782556123ee565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124c55760405162461bcd60e51b8152602060048201526038602482015260008051602061374183398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906124e883836136ba565b11156125585760405162461bcd60e51b8152602060048201526045602482015260008051602061374183398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128875760005b61257082846136ba565b811015612646578482815181106125895761258961348e565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125c8576125c861348e565b6000918252602090912001546001600160a01b03160361263e5760405162461bcd60e51b815260206004820152603d602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b600101612566565b50600084828151811061265b5761265b61348e565b6020026020010151602001516001600160601b0316116126e05760405162461bcd60e51b8152602060048201526046602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff8516600090815260036020526040902084518590839081106127065761270661348e565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061276b5761276b61348e565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404908690849081106127e2576127e261348e565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061283f5761283f61348e565b60200260200101516000015186848151811061285d5761285d61348e565b602002602001015160200151604051612877929190612c0f565b60405180910390a260010161255b565b5050505050565b816000015163ffffffff168163ffffffff1610156129335760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129595750816020015163ffffffff168163ffffffff16105b612a045760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612aa957600086815260026020908152604080832060ff89168452909152902063ffffffff851690612a5c600184613547565b81548110612a6c57612a6c61348e565b60009182526020909120015463ffffffff1611612a9757612a8e600182613547565b925050506114ee565b80612aa1816136cd565b915050612a27565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006114ee6001600160601b038085169084166136e4565b600080821215612baa57612b9982613704565b612ba39084613720565b9050610cae565b612ba3828461369a565b803560ff81168114612bc557600080fd5b919050565b600060208284031215612bdc57600080fd5b6114ee82612bb4565b60008060408385031215612bf857600080fd5b612c0183612bb4565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612c4657600080fd5b50565b60008060408385031215612c5c57600080fd5b612c6583612bb4565b91506020830135612c7581612c31565b809150509250929050565b60008083601f840112612c9257600080fd5b5081356001600160401b03811115612ca957600080fd5b6020830191508360208260051b8501011115611ffa57600080fd5b600080600080600060608688031215612cdc57600080fd5b612ce586612bb4565b945060208601356001600160401b0380821115612d0157600080fd5b612d0d89838a01612c80565b90965094506040880135915080821115612d2657600080fd5b50612d3388828901612c80565b969995985093965092949392505050565b60008083601f840112612d5657600080fd5b5081356001600160401b03811115612d6d57600080fd5b602083019150836020828501011115611ffa57600080fd5b60008060008060608587031215612d9b57600080fd5b8435612da681612c31565b93506020850135925060408501356001600160401b03811115612dc857600080fd5b612dd487828801612d44565b95989497509550505050565b60008151808452602080850194506020840160005b83811015612e1a5781516001600160601b031687529582019590820190600101612df5565b509495945050505050565b604081526000612e386040830185612de0565b82810360208401526123ee8185612de0565b60008060408385031215612e5d57600080fd5b82359150612e6d60208401612bb4565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257612ecf83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612e92565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2657612f26612eee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612eee565b604052919050565b60006001600160401b03821115612f7557612f75612eee565b5060051b60200190565b60008060408385031215612f9257600080fd5b612f9b83612bb4565b91506020808401356001600160401b03811115612fb757600080fd5b8401601f81018613612fc857600080fd5b8035612fdb612fd682612f5c565b612f2c565b81815260059190911b82018301908381019088831115612ffa57600080fd5b928401925b8284101561301857833582529284019290840190612fff565b80955050505050509250929050565b803563ffffffff81168114612bc557600080fd5b60008060006040848603121561305057600080fd5b61305984613027565b925060208401356001600160401b0381111561307457600080fd5b61308086828701612d44565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257835163ffffffff16835292840192918401916001016130a9565b6000806000606084860312156130e057600080fd5b6130e984612bb4565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cae565b80356001600160601b0381168114612bc557600080fd5b6000806040838503121561315d57600080fd5b61316683612bb4565b9150612e6d60208401613133565b60008060006040848603121561318957600080fd5b8335925060208401356001600160401b0381111561307457600080fd5b600082601f8301126131b757600080fd5b813560206131c7612fd683612f5c565b82815260069290921b840181019181810190868411156131e657600080fd5b8286015b8481101561323557604081890312156132035760008081fd5b61320b612f04565b813561321681612c31565b8152613223828601613133565b818601528352918301916040016131ea565b509695505050505050565b6000806040838503121561325357600080fd5b61325c83612bb4565b915060208301356001600160401b0381111561327757600080fd5b613283858286016131a6565b9150509250929050565b6000806000606084860312156132a257600080fd5b6132ab84612bb4565b92506132b960208501613027565b9150604084013590509250925092565b6000806000606084860312156132de57600080fd5b833592506132ee60208501612bb4565b91506132fc60408501613027565b90509250925092565b6000806000806080858703121561331b57600080fd5b61332485612bb4565b935061333260208601613027565b93969395505050506040820135916060013590565b60008060006060848603121561335c57600080fd5b61336584612bb4565b925061337360208501613133565b915060408401356001600160401b0381111561338e57600080fd5b61339a868287016131a6565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561340757600080fd5b81516114ee81612c31565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156134b657600080fd5b6114ee82613133565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cae57610cae613531565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b038086168452602060406020860152828654808552606087019150876000526020600020945060005b818110156135c35785548516835260019586019592840192016135a5565b509098975050505050505050565b600060208083850312156135e457600080fd5b82516001600160401b038111156135fa57600080fd5b8301601f8101851361360b57600080fd5b8051613619612fd682612f5c565b81815260059190911b8201830190838101908783111561363857600080fd5b928401925b828410156136565783518252928401929084019061363d565b979650505050505050565b8082028115828204841417610cae57610cae613531565b60008261369557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160601b0381811683821601908082111561062b5761062b613531565b80820180821115610cae57610cae613531565b6000816136dc576136dc613531565b506000190190565b818103600083128015838313168383128216171561062b5761062b613531565b6000600160ff1b820161371957613719613531565b5060000390565b6001600160601b0382811682821603908082111561062b5761062b61353156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122086a228217be3aa4346ddc514699a0ca7893ec8b64cbf2023e3b1369fe2efcf1164736f6c63430008180033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","output":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612bca565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612be5565b610597565b604051610217929190612c0f565b61025461024f366004612c49565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612cc4565b610632565b005b61029461028f366004612d85565b610959565b604051610217929190612e25565b6102b56102b0366004612e4a565b610c15565b6040516102179190612e76565b61020d6102d0366004612bca565b60ff1660009081526003602052604090205490565b61020d6102f3366004612e4a565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612e4a565b610cb4565b61020d670de0b6b3a764000081565b61027f610345366004612f7f565b610ccd565b61035d610358366004612d85565b6110e3565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc36600461303b565b611240565b604051610217919061308d565b61039c6103fc366004612be5565b6114f5565b61041461040f3660046130cb565b61152d565b60405161021791906130fe565b61043461042f366004612be5565b6115c5565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612be5565b61163f565b61027f61048236600461314a565b6116ce565b61027f610495366004613174565b6117c7565b6102546104a8366004612bca565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004613240565b6118e9565b6102546104e436600461328d565b6119dd565b6102546104f7366004612bca565b611a5b565b61050f61050a3660046132c9565b611aae565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610254610559366004613305565b611ac3565b61041461056c366004612e4a565b611b58565b61025461057f3660046132c9565b611c41565b61027f610592366004613347565b611ca2565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b8152600401610611906133a4565b60405180910390fd5b60006106268585611e0d565b509250505b5092915050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906133f5565b6001600160a01b0316336001600160a01b0316146106e45760405162461bcd60e51b815260040161061190613412565b846107008160ff16600090815260016020526040902054151590565b61071c5760405162461bcd60e51b8152600401610611906133a4565b8380610792576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108075760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561094e578585828181106108355761083561348e565b905060200201602081019061084a91906134a4565b8289898481811061085d5761085d61348e565b90506020020135815481106108745761087461348e565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108dd576108dd61348e565b90506020020135815481106108f4576108f461348e565b6000918252602090912001546001600160a01b031688888581811061091b5761091b61348e565b905060200201602081019061093091906134a4565b60405161093e929190612c0f565b60405180910390a260010161081b565b505050505050505050565b606080336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146109a45760405162461bcd60e51b8152600401610611906134bf565b6000836001600160401b038111156109be576109be612eee565b6040519080825280602002602001820160405280156109e7578160200160208202803683370190505b5090506000846001600160401b03811115610a0457610a04612eee565b604051908082528060200260200182016040528015610a2d578160200160208202803683370190505b50905060005b85811015610c07576000878783818110610a4f57610a4f61348e565b919091013560f81c60008181526001602052604090205490925015159050610ad75760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610ae4838d611e0d565b9150915080610b815760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b8e8c8585612001565b905082878681518110610ba357610ba361348e565b60200260200101906001600160601b031690816001600160601b031681525050610bcd8482612280565b868681518110610bdf57610bdf61348e565b6001600160601b0390921660209283029190910190910152505060019092019150610a339050565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610ca7576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c4e565b5050505090505b92915050565b600080610cc18484611b58565b60400151949350505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f91906133f5565b6001600160a01b0316336001600160a01b031614610d7f5760405162461bcd60e51b815260040161061190613412565b81610d9b8160ff16600090815260016020526040902054151590565b610db75760405162461bcd60e51b8152600401610611906133a4565b815180610e2c5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110da578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e8b57610e8b61348e565b602002602001015181548110610ea357610ea361348e565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f0157610f0161348e565b602002602001015181548110610f1957610f1961348e565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f5990600190613547565b81548110610f6957610f6961348e565b9060005260206000200183878381518110610f8657610f8661348e565b602002602001015181548110610f9e57610f9e61348e565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610ff157610ff161355a565b6000828152602081208201600019908101919091550190558154829061101990600190613547565b815481106110295761102961348e565b9060005260206000200160009054906101000a90046001600160a01b03168287838151811061105a5761105a61348e565b6020026020010151815481106110725761107261348e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110b0576110b061355a565b600082815260209020810160001990810180546001600160a01b0319169055019055600101610e4b565b50505050505050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461112d5760405162461bcd60e51b8152600401610611906134bf565b6000805b8381101561123657600085858381811061114d5761114d61348e565b919091013560f81c600081815260016020526040902054909250151590506111dd5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b6000806111ea838b611e0d565b915091508061120c5760009150600160ff84161b6001600160c01b0386161794505b60006112198a8585612001565b90506112258482612280565b505060019093019250611131915050565b5095945050505050565b60606000826001600160401b0381111561125c5761125c612eee565b604051908082528060200260200182016040528015611285578160200160208202803683370190505b50905060005b838110156114ea5760008585838181106112a7576112a761348e565b919091013560f81c600081815260016020526040902054909250151590506113465760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061136f5761136f61348e565b60009182526020909120015463ffffffff16111561141b5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156114df5760ff8316600090815260016020819052604090912063ffffffff8b169161145f8486613547565b6114699190613547565b815481106114795761147961348e565b60009182526020909120015463ffffffff16116114d757600161149c8284613547565b6114a69190613547565b8585815181106114b8576114b861348e565b602002602001019063ffffffff16908163ffffffff16815250506114df565b600101611430565b50505060010161128b565b5090505b9392505050565b6004602052816000526040600020818154811061151157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115725761157261348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115fd576115fd61348e565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600190529190912080548390811061167c5761167c61348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175091906133f5565b6001600160a01b0316336001600160a01b0316146117805760405162461bcd60e51b815260040161061190613412565b8161179c8160ff16600090815260016020526040902054151590565b6117b85760405162461bcd60e51b8152600401610611906133a4565b6117c283836123f7565b505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461180f5760405162461bcd60e51b8152600401610611906134bf565b60005b818110156118e357600083838381811061182e5761182e61348e565b919091013560f81c600081815260016020526040902054909250151590506118be5760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118cc86836000612001565b90506118d88282612280565b505050600101611812565b50505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b91906133f5565b6001600160a01b0316336001600160a01b03161461199b5760405162461bcd60e51b815260040161061190613412565b816119b78160ff16600090815260016020526040902054151590565b6119d35760405162461bcd60e51b8152600401610611906133a4565b6117c28383612460565b60ff83166000908152600160205260408120805482919084908110611a0457611a0461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cc1818561288e565b60ff81166000908152600160208190526040822080549091611a7c91613547565b81548110611a8c57611a8c61348e565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611abb848484612a08565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611af457611af461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b4b818661288e565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611bb5579150610cae9050565b600085815260026020908152604080832060ff881684529091529020611bdc600184613547565b81548110611bec57611bec61348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cae915050565b600083815260026020908152604080832060ff861684529091528120611c68858585612a08565b63ffffffff1681548110611c7e57611c7e61348e565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614611cea5760405162461bcd60e51b8152600401610611906134bf565b60ff831660009081526001602052604090205415611d685760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611d728382612460565b611d7c83836123f7565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e2c8660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91692639004134792611ea1928c9201613570565b600060405180830381865afa158015611ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee691908101906135d1565b905060005b83811015611fcd5760ff89166000908152600360205260409020805482908110611f1757611f1761348e565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f6557611f6561348e565b60200260200101511115611fc557670de0b6b3a764000083602001516001600160601b0316838381518110611f9c57611f9c61348e565b6020026020010151611fae9190613661565b611fb89190613678565b611fc2908661369a565b94505b600101611eeb565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908082036120c757600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612226565b600086815260026020908152604080832060ff8916845290915281206120ee600184613547565b815481106120fe576120fe61348e565b600091825260209091200180546001600160601b03600160401b909104811694509091508516830361213657600093505050506114ee565b805463ffffffff43811691160361216e578054600160401b600160a01b031916600160401b6001600160601b03871602178155612224565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122768285612b6e565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122a49084613547565b815481106122b4576122b461348e565b906000526020600020019050836000036122e25754600160401b90046001600160601b03169150610cae9050565b805460009061230190600160401b90046001600160601b031686612b86565b825490915063ffffffff43811691160361233c578154600160401b600160a01b031916600160401b6001600160601b038316021782556123ee565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124c55760405162461bcd60e51b8152602060048201526038602482015260008051602061374183398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906124e883836136ba565b11156125585760405162461bcd60e51b8152602060048201526045602482015260008051602061374183398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128875760005b61257082846136ba565b811015612646578482815181106125895761258961348e565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125c8576125c861348e565b6000918252602090912001546001600160a01b03160361263e5760405162461bcd60e51b815260206004820152603d602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b600101612566565b50600084828151811061265b5761265b61348e565b6020026020010151602001516001600160601b0316116126e05760405162461bcd60e51b8152602060048201526046602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff8516600090815260036020526040902084518590839081106127065761270661348e565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061276b5761276b61348e565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404908690849081106127e2576127e261348e565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061283f5761283f61348e565b60200260200101516000015186848151811061285d5761285d61348e565b602002602001015160200151604051612877929190612c0f565b60405180910390a260010161255b565b5050505050565b816000015163ffffffff168163ffffffff1610156129335760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129595750816020015163ffffffff168163ffffffff16105b612a045760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612aa957600086815260026020908152604080832060ff89168452909152902063ffffffff851690612a5c600184613547565b81548110612a6c57612a6c61348e565b60009182526020909120015463ffffffff1611612a9757612a8e600182613547565b925050506114ee565b80612aa1816136cd565b915050612a27565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006114ee6001600160601b038085169084166136e4565b600080821215612baa57612b9982613704565b612ba39084613720565b9050610cae565b612ba3828461369a565b803560ff81168114612bc557600080fd5b919050565b600060208284031215612bdc57600080fd5b6114ee82612bb4565b60008060408385031215612bf857600080fd5b612c0183612bb4565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612c4657600080fd5b50565b60008060408385031215612c5c57600080fd5b612c6583612bb4565b91506020830135612c7581612c31565b809150509250929050565b60008083601f840112612c9257600080fd5b5081356001600160401b03811115612ca957600080fd5b6020830191508360208260051b8501011115611ffa57600080fd5b600080600080600060608688031215612cdc57600080fd5b612ce586612bb4565b945060208601356001600160401b0380821115612d0157600080fd5b612d0d89838a01612c80565b90965094506040880135915080821115612d2657600080fd5b50612d3388828901612c80565b969995985093965092949392505050565b60008083601f840112612d5657600080fd5b5081356001600160401b03811115612d6d57600080fd5b602083019150836020828501011115611ffa57600080fd5b60008060008060608587031215612d9b57600080fd5b8435612da681612c31565b93506020850135925060408501356001600160401b03811115612dc857600080fd5b612dd487828801612d44565b95989497509550505050565b60008151808452602080850194506020840160005b83811015612e1a5781516001600160601b031687529582019590820190600101612df5565b509495945050505050565b604081526000612e386040830185612de0565b82810360208401526123ee8185612de0565b60008060408385031215612e5d57600080fd5b82359150612e6d60208401612bb4565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257612ecf83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612e92565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2657612f26612eee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612eee565b604052919050565b60006001600160401b03821115612f7557612f75612eee565b5060051b60200190565b60008060408385031215612f9257600080fd5b612f9b83612bb4565b91506020808401356001600160401b03811115612fb757600080fd5b8401601f81018613612fc857600080fd5b8035612fdb612fd682612f5c565b612f2c565b81815260059190911b82018301908381019088831115612ffa57600080fd5b928401925b8284101561301857833582529284019290840190612fff565b80955050505050509250929050565b803563ffffffff81168114612bc557600080fd5b60008060006040848603121561305057600080fd5b61305984613027565b925060208401356001600160401b0381111561307457600080fd5b61308086828701612d44565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257835163ffffffff16835292840192918401916001016130a9565b6000806000606084860312156130e057600080fd5b6130e984612bb4565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cae565b80356001600160601b0381168114612bc557600080fd5b6000806040838503121561315d57600080fd5b61316683612bb4565b9150612e6d60208401613133565b60008060006040848603121561318957600080fd5b8335925060208401356001600160401b0381111561307457600080fd5b600082601f8301126131b757600080fd5b813560206131c7612fd683612f5c565b82815260069290921b840181019181810190868411156131e657600080fd5b8286015b8481101561323557604081890312156132035760008081fd5b61320b612f04565b813561321681612c31565b8152613223828601613133565b818601528352918301916040016131ea565b509695505050505050565b6000806040838503121561325357600080fd5b61325c83612bb4565b915060208301356001600160401b0381111561327757600080fd5b613283858286016131a6565b9150509250929050565b6000806000606084860312156132a257600080fd5b6132ab84612bb4565b92506132b960208501613027565b9150604084013590509250925092565b6000806000606084860312156132de57600080fd5b833592506132ee60208501612bb4565b91506132fc60408501613027565b90509250925092565b6000806000806080858703121561331b57600080fd5b61332485612bb4565b935061333260208601613027565b93969395505050506040820135916060013590565b60008060006060848603121561335c57600080fd5b61336584612bb4565b925061337360208501613133565b915060408401356001600160401b0381111561338e57600080fd5b61339a868287016131a6565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561340757600080fd5b81516114ee81612c31565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156134b657600080fd5b6114ee82613133565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cae57610cae613531565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b038086168452602060406020860152828654808552606087019150876000526020600020945060005b818110156135c35785548516835260019586019592840192016135a5565b509098975050505050505050565b600060208083850312156135e457600080fd5b82516001600160401b038111156135fa57600080fd5b8301601f8101851361360b57600080fd5b8051613619612fd682612f5c565b81815260059190911b8201830190838101908783111561363857600080fd5b928401925b828410156136565783518252928401929084019061363d565b979650505050505050565b8082028115828204841417610cae57610cae613531565b60008261369557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160601b0381811683821601908082111561062b5761062b613531565b80820180821115610cae57610cae613531565b6000816136dc576136dc613531565b506000190190565b818103600083128015838313168383128216171561062b5761062b613531565b6000600160ff1b820161371957613719613531565b5060000390565b6001600160601b0382811682821603908082111561062b5761062b61353156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122086a228217be3aa4346ddc514699a0ca7893ec8b64cbf2023e3b1369fe2efcf1164736f6c63430008180033","gas_used":2849633,"gas_limit":3786717,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612bca565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612be5565b610597565b604051610217929190612c0f565b61025461024f366004612c49565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612cc4565b610632565b005b61029461028f366004612d85565b610959565b604051610217929190612e25565b6102b56102b0366004612e4a565b610c15565b6040516102179190612e76565b61020d6102d0366004612bca565b60ff1660009081526003602052604090205490565b61020d6102f3366004612e4a565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612e4a565b610cb4565b61020d670de0b6b3a764000081565b61027f610345366004612f7f565b610ccd565b61035d610358366004612d85565b6110e3565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc36600461303b565b611240565b604051610217919061308d565b61039c6103fc366004612be5565b6114f5565b61041461040f3660046130cb565b61152d565b60405161021791906130fe565b61043461042f366004612be5565b6115c5565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612be5565b61163f565b61027f61048236600461314a565b6116ce565b61027f610495366004613174565b6117c7565b6102546104a8366004612bca565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004613240565b6118e9565b6102546104e436600461328d565b6119dd565b6102546104f7366004612bca565b611a5b565b61050f61050a3660046132c9565b611aae565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610254610559366004613305565b611ac3565b61041461056c366004612e4a565b611b58565b61025461057f3660046132c9565b611c41565b61027f610592366004613347565b611ca2565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b8152600401610611906133a4565b60405180910390fd5b60006106268585611e0d565b509250505b5092915050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906133f5565b6001600160a01b0316336001600160a01b0316146106e45760405162461bcd60e51b815260040161061190613412565b846107008160ff16600090815260016020526040902054151590565b61071c5760405162461bcd60e51b8152600401610611906133a4565b8380610792576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108075760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561094e578585828181106108355761083561348e565b905060200201602081019061084a91906134a4565b8289898481811061085d5761085d61348e565b90506020020135815481106108745761087461348e565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108dd576108dd61348e565b90506020020135815481106108f4576108f461348e565b6000918252602090912001546001600160a01b031688888581811061091b5761091b61348e565b905060200201602081019061093091906134a4565b60405161093e929190612c0f565b60405180910390a260010161081b565b505050505050505050565b606080336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146109a45760405162461bcd60e51b8152600401610611906134bf565b6000836001600160401b038111156109be576109be612eee565b6040519080825280602002602001820160405280156109e7578160200160208202803683370190505b5090506000846001600160401b03811115610a0457610a04612eee565b604051908082528060200260200182016040528015610a2d578160200160208202803683370190505b50905060005b85811015610c07576000878783818110610a4f57610a4f61348e565b919091013560f81c60008181526001602052604090205490925015159050610ad75760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610ae4838d611e0d565b9150915080610b815760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b8e8c8585612001565b905082878681518110610ba357610ba361348e565b60200260200101906001600160601b031690816001600160601b031681525050610bcd8482612280565b868681518110610bdf57610bdf61348e565b6001600160601b0390921660209283029190910190910152505060019092019150610a339050565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610ca7576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c4e565b5050505090505b92915050565b600080610cc18484611b58565b60400151949350505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f91906133f5565b6001600160a01b0316336001600160a01b031614610d7f5760405162461bcd60e51b815260040161061190613412565b81610d9b8160ff16600090815260016020526040902054151590565b610db75760405162461bcd60e51b8152600401610611906133a4565b815180610e2c5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110da578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e8b57610e8b61348e565b602002602001015181548110610ea357610ea361348e565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f0157610f0161348e565b602002602001015181548110610f1957610f1961348e565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f5990600190613547565b81548110610f6957610f6961348e565b9060005260206000200183878381518110610f8657610f8661348e565b602002602001015181548110610f9e57610f9e61348e565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610ff157610ff161355a565b6000828152602081208201600019908101919091550190558154829061101990600190613547565b815481106110295761102961348e565b9060005260206000200160009054906101000a90046001600160a01b03168287838151811061105a5761105a61348e565b6020026020010151815481106110725761107261348e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110b0576110b061355a565b600082815260209020810160001990810180546001600160a01b0319169055019055600101610e4b565b50505050505050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461112d5760405162461bcd60e51b8152600401610611906134bf565b6000805b8381101561123657600085858381811061114d5761114d61348e565b919091013560f81c600081815260016020526040902054909250151590506111dd5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b6000806111ea838b611e0d565b915091508061120c5760009150600160ff84161b6001600160c01b0386161794505b60006112198a8585612001565b90506112258482612280565b505060019093019250611131915050565b5095945050505050565b60606000826001600160401b0381111561125c5761125c612eee565b604051908082528060200260200182016040528015611285578160200160208202803683370190505b50905060005b838110156114ea5760008585838181106112a7576112a761348e565b919091013560f81c600081815260016020526040902054909250151590506113465760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061136f5761136f61348e565b60009182526020909120015463ffffffff16111561141b5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156114df5760ff8316600090815260016020819052604090912063ffffffff8b169161145f8486613547565b6114699190613547565b815481106114795761147961348e565b60009182526020909120015463ffffffff16116114d757600161149c8284613547565b6114a69190613547565b8585815181106114b8576114b861348e565b602002602001019063ffffffff16908163ffffffff16815250506114df565b600101611430565b50505060010161128b565b5090505b9392505050565b6004602052816000526040600020818154811061151157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115725761157261348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115fd576115fd61348e565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600190529190912080548390811061167c5761167c61348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175091906133f5565b6001600160a01b0316336001600160a01b0316146117805760405162461bcd60e51b815260040161061190613412565b8161179c8160ff16600090815260016020526040902054151590565b6117b85760405162461bcd60e51b8152600401610611906133a4565b6117c283836123f7565b505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461180f5760405162461bcd60e51b8152600401610611906134bf565b60005b818110156118e357600083838381811061182e5761182e61348e565b919091013560f81c600081815260016020526040902054909250151590506118be5760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118cc86836000612001565b90506118d88282612280565b505050600101611812565b50505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b91906133f5565b6001600160a01b0316336001600160a01b03161461199b5760405162461bcd60e51b815260040161061190613412565b816119b78160ff16600090815260016020526040902054151590565b6119d35760405162461bcd60e51b8152600401610611906133a4565b6117c28383612460565b60ff83166000908152600160205260408120805482919084908110611a0457611a0461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cc1818561288e565b60ff81166000908152600160208190526040822080549091611a7c91613547565b81548110611a8c57611a8c61348e565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611abb848484612a08565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611af457611af461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b4b818661288e565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611bb5579150610cae9050565b600085815260026020908152604080832060ff881684529091529020611bdc600184613547565b81548110611bec57611bec61348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cae915050565b600083815260026020908152604080832060ff861684529091528120611c68858585612a08565b63ffffffff1681548110611c7e57611c7e61348e565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614611cea5760405162461bcd60e51b8152600401610611906134bf565b60ff831660009081526001602052604090205415611d685760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611d728382612460565b611d7c83836123f7565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e2c8660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91692639004134792611ea1928c9201613570565b600060405180830381865afa158015611ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee691908101906135d1565b905060005b83811015611fcd5760ff89166000908152600360205260409020805482908110611f1757611f1761348e565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f6557611f6561348e565b60200260200101511115611fc557670de0b6b3a764000083602001516001600160601b0316838381518110611f9c57611f9c61348e565b6020026020010151611fae9190613661565b611fb89190613678565b611fc2908661369a565b94505b600101611eeb565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908082036120c757600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612226565b600086815260026020908152604080832060ff8916845290915281206120ee600184613547565b815481106120fe576120fe61348e565b600091825260209091200180546001600160601b03600160401b909104811694509091508516830361213657600093505050506114ee565b805463ffffffff43811691160361216e578054600160401b600160a01b031916600160401b6001600160601b03871602178155612224565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122768285612b6e565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122a49084613547565b815481106122b4576122b461348e565b906000526020600020019050836000036122e25754600160401b90046001600160601b03169150610cae9050565b805460009061230190600160401b90046001600160601b031686612b86565b825490915063ffffffff43811691160361233c578154600160401b600160a01b031916600160401b6001600160601b038316021782556123ee565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124c55760405162461bcd60e51b8152602060048201526038602482015260008051602061374183398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906124e883836136ba565b11156125585760405162461bcd60e51b8152602060048201526045602482015260008051602061374183398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128875760005b61257082846136ba565b811015612646578482815181106125895761258961348e565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125c8576125c861348e565b6000918252602090912001546001600160a01b03160361263e5760405162461bcd60e51b815260206004820152603d602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b600101612566565b50600084828151811061265b5761265b61348e565b6020026020010151602001516001600160601b0316116126e05760405162461bcd60e51b8152602060048201526046602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff8516600090815260036020526040902084518590839081106127065761270661348e565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061276b5761276b61348e565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404908690849081106127e2576127e261348e565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061283f5761283f61348e565b60200260200101516000015186848151811061285d5761285d61348e565b602002602001015160200151604051612877929190612c0f565b60405180910390a260010161255b565b5050505050565b816000015163ffffffff168163ffffffff1610156129335760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129595750816020015163ffffffff168163ffffffff16105b612a045760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612aa957600086815260026020908152604080832060ff89168452909152902063ffffffff851690612a5c600184613547565b81548110612a6c57612a6c61348e565b60009182526020909120015463ffffffff1611612a9757612a8e600182613547565b925050506114ee565b80612aa1816136cd565b915050612a27565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006114ee6001600160601b038085169084166136e4565b600080821215612baa57612b9982613704565b612ba39084613720565b9050610cae565b612ba3828461369a565b803560ff81168114612bc557600080fd5b919050565b600060208284031215612bdc57600080fd5b6114ee82612bb4565b60008060408385031215612bf857600080fd5b612c0183612bb4565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612c4657600080fd5b50565b60008060408385031215612c5c57600080fd5b612c6583612bb4565b91506020830135612c7581612c31565b809150509250929050565b60008083601f840112612c9257600080fd5b5081356001600160401b03811115612ca957600080fd5b6020830191508360208260051b8501011115611ffa57600080fd5b600080600080600060608688031215612cdc57600080fd5b612ce586612bb4565b945060208601356001600160401b0380821115612d0157600080fd5b612d0d89838a01612c80565b90965094506040880135915080821115612d2657600080fd5b50612d3388828901612c80565b969995985093965092949392505050565b60008083601f840112612d5657600080fd5b5081356001600160401b03811115612d6d57600080fd5b602083019150836020828501011115611ffa57600080fd5b60008060008060608587031215612d9b57600080fd5b8435612da681612c31565b93506020850135925060408501356001600160401b03811115612dc857600080fd5b612dd487828801612d44565b95989497509550505050565b60008151808452602080850194506020840160005b83811015612e1a5781516001600160601b031687529582019590820190600101612df5565b509495945050505050565b604081526000612e386040830185612de0565b82810360208401526123ee8185612de0565b60008060408385031215612e5d57600080fd5b82359150612e6d60208401612bb4565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257612ecf83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612e92565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2657612f26612eee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612eee565b604052919050565b60006001600160401b03821115612f7557612f75612eee565b5060051b60200190565b60008060408385031215612f9257600080fd5b612f9b83612bb4565b91506020808401356001600160401b03811115612fb757600080fd5b8401601f81018613612fc857600080fd5b8035612fdb612fd682612f5c565b612f2c565b81815260059190911b82018301908381019088831115612ffa57600080fd5b928401925b8284101561301857833582529284019290840190612fff565b80955050505050509250929050565b803563ffffffff81168114612bc557600080fd5b60008060006040848603121561305057600080fd5b61305984613027565b925060208401356001600160401b0381111561307457600080fd5b61308086828701612d44565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257835163ffffffff16835292840192918401916001016130a9565b6000806000606084860312156130e057600080fd5b6130e984612bb4565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cae565b80356001600160601b0381168114612bc557600080fd5b6000806040838503121561315d57600080fd5b61316683612bb4565b9150612e6d60208401613133565b60008060006040848603121561318957600080fd5b8335925060208401356001600160401b0381111561307457600080fd5b600082601f8301126131b757600080fd5b813560206131c7612fd683612f5c565b82815260069290921b840181019181810190868411156131e657600080fd5b8286015b8481101561323557604081890312156132035760008081fd5b61320b612f04565b813561321681612c31565b8152613223828601613133565b818601528352918301916040016131ea565b509695505050505050565b6000806040838503121561325357600080fd5b61325c83612bb4565b915060208301356001600160401b0381111561327757600080fd5b613283858286016131a6565b9150509250929050565b6000806000606084860312156132a257600080fd5b6132ab84612bb4565b92506132b960208501613027565b9150604084013590509250925092565b6000806000606084860312156132de57600080fd5b833592506132ee60208501612bb4565b91506132fc60408501613027565b90509250925092565b6000806000806080858703121561331b57600080fd5b61332485612bb4565b935061333260208601613027565b93969395505050506040820135916060013590565b60008060006060848603121561335c57600080fd5b61336584612bb4565b925061337360208501613133565b915060408401356001600160401b0381111561338e57600080fd5b61339a868287016131a6565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561340757600080fd5b81516114ee81612c31565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156134b657600080fd5b6114ee82613133565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cae57610cae613531565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b038086168452602060406020860152828654808552606087019150876000526020600020945060005b818110156135c35785548516835260019586019592840192016135a5565b509098975050505050505050565b600060208083850312156135e457600080fd5b82516001600160401b038111156135fa57600080fd5b8301601f8101851361360b57600080fd5b8051613619612fd682612f5c565b81815260059190911b8201830190838101908783111561363857600080fd5b928401925b828410156136565783518252928401929084019061363d565b979650505050505050565b8082028115828204841417610cae57610cae613531565b60008261369557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160601b0381811683821601908082111561062b5761062b613531565b80820180821115610cae57610cae613531565b6000816136dc576136dc613531565b506000190190565b818103600083128015838313168383128216171561062b5761062b613531565b6000600160ff1b820161371957613719613531565b5060000390565b6001600160601b0382811682821603908082111561062b5761062b61353156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122086a228217be3aa4346ddc514699a0ca7893ec8b64cbf2023e3b1369fe2efcf1164736f6c63430008180033","nonce":43,"gas_used":3127559},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x40ee8f","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x659d0a1c2c9b1aaa8dcd8df9a51c1ced49fc8d55bed17519f0c69bbbc6e471db","block_number":5},{"info":{"transaction_hash":"0xdbeaad0376d936df8f5bb54707e0b78789158df3505b3401a68e8d7b418ccad3","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":19615,"gas_limit":35906,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":13345,"gas_limit":29221,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":456,"gas_limit":16294,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":21,"gas_used":42735},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x32a44","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000002000000000010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x60216db37c48029a8f153a732e8ce645a284a4bc0c9b52e52db91e73a255b3f4","block_number":10},{"info":{"transaction_hash":"0xbeced7d5f4e7a504b477c9fd0098a017da0c8e5b69cd0c85f79710fc40857447","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561001057600080fd5b506040516113a63803806113a683398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161123a61016c60003960008181610142015281816102750152818161040f01526107d6015261123a6000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610eac565b610268565b6040516100d89190610f28565b60405180910390f35b6100f46100ef366004610f9c565b6103be565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fcf565b610404565b005b6100f4610138366004610fea565b610528565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fcf565b6105ae565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610f9c565b6105f5565b6040516100d8919061102d565b61018f6101e1366004610f9c565b610754565b6101286101f4366004610eac565b6107cb565b610201600081565b6040519081526020016100d8565b61024061021d366004611065565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fcf565b6108d5565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102bb5760405162461bcd60e51b81526004016102b29061108f565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d6611102565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103b357600085858381811061032157610321611118565b919091013560f81c60008181526003602052604081205491935090915081900361035d5760405162461bcd60e51b81526004016102b29061112e565b6000610368836108f4565b905061037f898461037a600185611199565b6109f1565b8085858151811061039257610392611118565b63ffffffff9290921660209283029190910190910152505050600101610305565b5090505b9392505050565b60408051808201909152600080825260208201526103dc8383610a7b565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461044c5760405162461bcd60e51b81526004016102b29061108f565b60ff8116600090815260036020526040902054156104c65760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061057557610575611118565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105cb82610ad3565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b606060006106038484610b15565b905060008163ffffffff1667ffffffffffffffff81111561062657610626611102565b60405190808252806020026020018201604052801561064f578160200160208202803683370190505b50905060005b8263ffffffff1681101561074b5761066e868287610c4a565b82828151811061068057610680611118565b6020026020010181815250506000801b8282815181106106a2576106a2611118565b6020026020010151036107435760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b600101610655565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff841690811061079257610792611118565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108135760405162461bcd60e51b81526004016102b29061108f565b60005b818110156108cf57600083838381811061083257610832611118565b919091013560f81c60008181526003602052604081205491935090915081900361086e5760405162461bcd60e51b81526004016102b29061112e565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff169061089c84610d21565b905060006108aa8583610d5b565b90508089146108be576108be8186856109f1565b505060019093019250610816915050565b50505050565b60006108e082610ad3565b54600160201b900463ffffffff1692915050565b60008061090083610ad3565b805490915060009061092090600160201b900463ffffffff1660016111bd565b905061092d848383610d85565b60ff841660009081526002602052604081209061094b600184611199565b63ffffffff168152602081019190915260400160009081205490036103b75760ff8416600090815260026020526040812090610988600184611199565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b60006109fd8383610a7b565b9050610a0b83838387610e23565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610aac6001836111da565b81548110610abc57610abc611118565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610af36001836111da565b81548110610b0357610b03611118565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bbd5760ff85166000908152600360205260408120610b4d6001846111da565b81548110610b5d57610b5d611118565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610baa576020015192506103fe915050565b5080610bb5816111ed565b915050610b2a565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d155760ff8616600090815260026020908152604080832063ffffffff891684529091528120610ca46001846111da565b81548110610cb457610cb4611118565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d02576020015192506103b7915050565b5080610d0d816111ed565b915050610c70565b50600095945050505050565b600080610d2d83610ad3565b8054909150600090610d4e90600190600160201b900463ffffffff16611199565b90506103b7848383610d85565b600080610d688484610a7b565b6001810154909150610d7d8585846000610e23565b949350505050565b815463ffffffff438116911603610dba57815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e4057600182018190556108cf565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ec157600080fd5b83359250602084013567ffffffffffffffff80821115610ee057600080fd5b818601915086601f830112610ef457600080fd5b813581811115610f0357600080fd5b876020828501011115610f1557600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835163ffffffff1683529284019291840191600101610f44565b50909695505050505050565b803560ff81168114610f8357600080fd5b919050565b803563ffffffff81168114610f8357600080fd5b60008060408385031215610faf57600080fd5b610fb883610f72565b9150610fc660208401610f88565b90509250929050565b600060208284031215610fe157600080fd5b6103b782610f72565b600080600060608486031215610fff57600080fd5b61100884610f72565b925061101660208501610f88565b915061102460408501610f88565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835183529284019291840191600101611049565b6000806040838503121561107857600080fd5b61108183610f72565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156111b6576111b6611183565b5092915050565b63ffffffff8181168382160190808211156111b6576111b6611183565b818103818111156103fe576103fe611183565b6000816111fc576111fc611183565b50600019019056fea2646970667358221220af8de4d3486e0b797de225bb92c1953126cca4d69399c73bf6885ce4485dc52464736f6c63430008180033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","output":"0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610eac565b610268565b6040516100d89190610f28565b60405180910390f35b6100f46100ef366004610f9c565b6103be565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fcf565b610404565b005b6100f4610138366004610fea565b610528565b6101647f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fcf565b6105ae565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610f9c565b6105f5565b6040516100d8919061102d565b61018f6101e1366004610f9c565b610754565b6101286101f4366004610eac565b6107cb565b610201600081565b6040519081526020016100d8565b61024061021d366004611065565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fcf565b6108d5565b6060336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146102bb5760405162461bcd60e51b81526004016102b29061108f565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d6611102565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103b357600085858381811061032157610321611118565b919091013560f81c60008181526003602052604081205491935090915081900361035d5760405162461bcd60e51b81526004016102b29061112e565b6000610368836108f4565b905061037f898461037a600185611199565b6109f1565b8085858151811061039257610392611118565b63ffffffff9290921660209283029190910190910152505050600101610305565b5090505b9392505050565b60408051808201909152600080825260208201526103dc8383610a7b565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461044c5760405162461bcd60e51b81526004016102b29061108f565b60ff8116600090815260036020526040902054156104c65760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061057557610575611118565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105cb82610ad3565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b606060006106038484610b15565b905060008163ffffffff1667ffffffffffffffff81111561062657610626611102565b60405190808252806020026020018201604052801561064f578160200160208202803683370190505b50905060005b8263ffffffff1681101561074b5761066e868287610c4a565b82828151811061068057610680611118565b6020026020010181815250506000801b8282815181106106a2576106a2611118565b6020026020010151036107435760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b600101610655565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff841690811061079257610792611118565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146108135760405162461bcd60e51b81526004016102b29061108f565b60005b818110156108cf57600083838381811061083257610832611118565b919091013560f81c60008181526003602052604081205491935090915081900361086e5760405162461bcd60e51b81526004016102b29061112e565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff169061089c84610d21565b905060006108aa8583610d5b565b90508089146108be576108be8186856109f1565b505060019093019250610816915050565b50505050565b60006108e082610ad3565b54600160201b900463ffffffff1692915050565b60008061090083610ad3565b805490915060009061092090600160201b900463ffffffff1660016111bd565b905061092d848383610d85565b60ff841660009081526002602052604081209061094b600184611199565b63ffffffff168152602081019190915260400160009081205490036103b75760ff8416600090815260026020526040812090610988600184611199565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b60006109fd8383610a7b565b9050610a0b83838387610e23565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610aac6001836111da565b81548110610abc57610abc611118565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610af36001836111da565b81548110610b0357610b03611118565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bbd5760ff85166000908152600360205260408120610b4d6001846111da565b81548110610b5d57610b5d611118565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610baa576020015192506103fe915050565b5080610bb5816111ed565b915050610b2a565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d155760ff8616600090815260026020908152604080832063ffffffff891684529091528120610ca46001846111da565b81548110610cb457610cb4611118565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d02576020015192506103b7915050565b5080610d0d816111ed565b915050610c70565b50600095945050505050565b600080610d2d83610ad3565b8054909150600090610d4e90600190600160201b900463ffffffff16611199565b90506103b7848383610d85565b600080610d688484610a7b565b6001810154909150610d7d8585846000610e23565b949350505050565b815463ffffffff438116911603610dba57815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e4057600182018190556108cf565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ec157600080fd5b83359250602084013567ffffffffffffffff80821115610ee057600080fd5b818601915086601f830112610ef457600080fd5b813581811115610f0357600080fd5b876020828501011115610f1557600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835163ffffffff1683529284019291840191600101610f44565b50909695505050505050565b803560ff81168114610f8357600080fd5b919050565b803563ffffffff81168114610f8357600080fd5b60008060408385031215610faf57600080fd5b610fb883610f72565b9150610fc660208401610f88565b90509250929050565b600060208284031215610fe157600080fd5b6103b782610f72565b600080600060608486031215610fff57600080fd5b61100884610f72565b925061101660208501610f88565b915061102460408501610f88565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835183529284019291840191600101611049565b6000806040838503121561107857600080fd5b61108183610f72565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156111b6576111b6611183565b5092915050565b63ffffffff8181168382160190808211156111b6576111b6611183565b818103818111156103fe576103fe611183565b6000816111fc576111fc611183565b50600019019056fea2646970667358221220af8de4d3486e0b797de225bb92c1953126cca4d69399c73bf6885ce4485dc52464736f6c63430008180033","gas_used":957925,"gas_limit":1284210,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610eac565b610268565b6040516100d89190610f28565b60405180910390f35b6100f46100ef366004610f9c565b6103be565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fcf565b610404565b005b6100f4610138366004610fea565b610528565b6101647f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fcf565b6105ae565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610f9c565b6105f5565b6040516100d8919061102d565b61018f6101e1366004610f9c565b610754565b6101286101f4366004610eac565b6107cb565b610201600081565b6040519081526020016100d8565b61024061021d366004611065565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fcf565b6108d5565b6060336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146102bb5760405162461bcd60e51b81526004016102b29061108f565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d6611102565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103b357600085858381811061032157610321611118565b919091013560f81c60008181526003602052604081205491935090915081900361035d5760405162461bcd60e51b81526004016102b29061112e565b6000610368836108f4565b905061037f898461037a600185611199565b6109f1565b8085858151811061039257610392611118565b63ffffffff9290921660209283029190910190910152505050600101610305565b5090505b9392505050565b60408051808201909152600080825260208201526103dc8383610a7b565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461044c5760405162461bcd60e51b81526004016102b29061108f565b60ff8116600090815260036020526040902054156104c65760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061057557610575611118565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105cb82610ad3565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b606060006106038484610b15565b905060008163ffffffff1667ffffffffffffffff81111561062657610626611102565b60405190808252806020026020018201604052801561064f578160200160208202803683370190505b50905060005b8263ffffffff1681101561074b5761066e868287610c4a565b82828151811061068057610680611118565b6020026020010181815250506000801b8282815181106106a2576106a2611118565b6020026020010151036107435760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b600101610655565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff841690811061079257610792611118565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146108135760405162461bcd60e51b81526004016102b29061108f565b60005b818110156108cf57600083838381811061083257610832611118565b919091013560f81c60008181526003602052604081205491935090915081900361086e5760405162461bcd60e51b81526004016102b29061112e565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff169061089c84610d21565b905060006108aa8583610d5b565b90508089146108be576108be8186856109f1565b505060019093019250610816915050565b50505050565b60006108e082610ad3565b54600160201b900463ffffffff1692915050565b60008061090083610ad3565b805490915060009061092090600160201b900463ffffffff1660016111bd565b905061092d848383610d85565b60ff841660009081526002602052604081209061094b600184611199565b63ffffffff168152602081019190915260400160009081205490036103b75760ff8416600090815260026020526040812090610988600184611199565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b60006109fd8383610a7b565b9050610a0b83838387610e23565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610aac6001836111da565b81548110610abc57610abc611118565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610af36001836111da565b81548110610b0357610b03611118565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bbd5760ff85166000908152600360205260408120610b4d6001846111da565b81548110610b5d57610b5d611118565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610baa576020015192506103fe915050565b5080610bb5816111ed565b915050610b2a565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d155760ff8616600090815260026020908152604080832063ffffffff891684529091528120610ca46001846111da565b81548110610cb457610cb4611118565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d02576020015192506103b7915050565b5080610d0d816111ed565b915050610c70565b50600095945050505050565b600080610d2d83610ad3565b8054909150600090610d4e90600190600160201b900463ffffffff16611199565b90506103b7848383610d85565b600080610d688484610a7b565b6001810154909150610d7d8585846000610e23565b949350505050565b815463ffffffff438116911603610dba57815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e4057600182018190556108cf565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ec157600080fd5b83359250602084013567ffffffffffffffff80821115610ee057600080fd5b818601915086601f830112610ef457600080fd5b813581811115610f0357600080fd5b876020828501011115610f1557600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835163ffffffff1683529284019291840191600101610f44565b50909695505050505050565b803560ff81168114610f8357600080fd5b919050565b803563ffffffff81168114610f8357600080fd5b60008060408385031215610faf57600080fd5b610fb883610f72565b9150610fc660208401610f88565b90509250929050565b600060208284031215610fe157600080fd5b6103b782610f72565b600080600060608486031215610fff57600080fd5b61100884610f72565b925061101660208501610f88565b915061102460408501610f88565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835183529284019291840191600101611049565b6000806040838503121561107857600080fd5b61108183610f72565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156111b6576111b6611183565b5092915050565b63ffffffff8181168382160190808211156111b6576111b6611183565b818103818111156103fe576103fe611183565b6000816111fc576111fc611183565b50600019019056fea2646970667358221220af8de4d3486e0b797de225bb92c1953126cca4d69399c73bf6885ce4485dc52464736f6c63430008180033","nonce":41,"gas_used":1088995},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x109de3","logs":[{"address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000080000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000"},"block_hash":"0x659d0a1c2c9b1aaa8dcd8df9a51c1ced49fc8d55bed17519f0c69bbbc6e471db","block_number":5},{"info":{"transaction_hash":"0xeb68aa080bba327cb447d95bedd671e9f3293000352a012572c6fbb9b8b7fa7f","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x61012060405234801561001157600080fd5b5060405161349738038061349783398101604081905261003091610140565b6001600160a01b0380861660805280851660a05280841660c05280831660e05281166101005261005e610068565b50505050506101b5565b600054610100900460ff16156100d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013d57600080fd5b50565b600080600080600060a0868803121561015857600080fd5b855161016381610128565b602087015190955061017481610128565b604087015190945061018581610128565b606087015190935061019681610128565b60808701519092506101a781610128565b809150509295509295909350565b60805160a05160c05160e0516101005161326d61022a60003960008181610636015281816106e001528181610b0e015281816113ea0152818161187e015261196e01526000610542015260006102e601526000818161027a01528181611369015261203c01526000610414015261326d6000f3fe6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c00330000000000000000000000004242424242424242424242424242424242424242000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","output":"0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c0033","gas_used":2608978,"gas_limit":3469161,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c0033","nonce":17,"gas_used":2870970},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x38c4d0","logs":[{"address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0","block_number":9},{"info":{"transaction_hash":"0xb6a38a3d8da1705b9b28d965f44c38bad15f54d84fdaf02eac16b102176b150c","transaction_index":3,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010422bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":142336,"gas_limit":205678,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010422bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":135625,"gas_limit":195906,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x22bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":122355,"gas_limit":179999,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4}]}],"exit":"Stop","out":"0x","nonce":19,"gas_used":166144},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x54e190","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000c00000000000000000000000000000000000000000080000000000000000100000000000000001000000000000000000000400000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000108000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000002000400000"},"block_hash":"0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0","block_number":9},{"info":{"transaction_hash":"0x33edf193a23f0289b5d89c7a703f54bcd17d54651779434e784f5a3455a135f8","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x610178da211fef7d417bc0e6fed39f05609ad788","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x610178da211fef7d417bc0e6fed39f05609ad788","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x61012060405234801561001157600080fd5b50604051615f0f380380615f0f83398101604081905261003091610163565b6001600160a01b0380861660805284811660a052831660c0526001600160401b0380831660e05281166101005261006561006f565b50505050506101d0565b600054610100900460ff16156100db5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561012d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014457600080fd5b50565b80516001600160401b038116811461015e57600080fd5b919050565b600080600080600060a0868803121561017b57600080fd5b85516101868161012f565b60208701519095506101978161012f565b60408701519094506101a88161012f565b92506101b660608701610147565b91506101c460808701610147565b90509295509295909350565b60805160a05160c05160e05161010051615c456102ca600039600081816105b501528181612007015281816120be0152612116015260008181610275015281816125a7015281816125db01528181612c0701528181612c340152818161437a01526143b501526000818161036d01528181610614015281816107a701528181610aef01528181610c3a01528181610dc201528181610f7d0152818161115e0152818161128801528181611459015281816118a601528181611a4401528181611b8301528181611d4501528181611e2f015261312a015260008181610241015261339c0152600081816104520152610e8d0152615c456000f3fe6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000000000000084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000000000000061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000000000000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000000000000006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c003300000000000000000000000042424242424242424242424242424242424242420000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000773594000000000000000000000000000000000000000000000000000000000006059f460","output":"0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe61614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000006059f46084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000006059f46061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000773594000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000007735940006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c0033","gas_used":4754434,"gas_limit":6306973,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe61614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000006059f46084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000006059f46061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000773594000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000007735940006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c0033","nonce":10,"gas_used":5181770},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x4f114a","logs":[{"address":"0x610178da211fef7d417bc0e6fed39f05609ad788","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x5a7a3e18533c10d9e81916d33460352c00313b7387d53d582fc75258d878e46e","block_number":6},{"info":{"transaction_hash":"0x59d8ae869d275f36dffcf34886dd30d19647d3d340a0fb658b5a19987679814e","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5060405161046a38038061046a83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6103d7806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063bd90df701461003b578063fa534dc01461006b575b600080fd5b60005461004e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100793660046101b7565b61008e565b6040519015158152602001610062565b60008054604051829182916001600160a01b03909116906100bf908c908c908c908c908c908c908c906024016102ed565b60408051601f198184030181529181526020820180516001600160e01b03166303e94d3760e61b179052516100f4919061035c565b600060405180830381855afa9150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b50915091508161017f5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b604482015260640160405180910390fd5b808060200190518101906101939190610378565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a0312156101d257600080fd5b87359650602088013595506040880135945060608801356bffffffffffffffffffffffff198116811461020457600080fd5b93506080880135925060a088013567ffffffffffffffff8082111561022857600080fd5b818a0191508a601f83011261023c57600080fd5b81358181111561024e5761024e6101a1565b604051601f8201601f19908116603f01168101908382118183101715610276576102766101a1565b816040528281528d602084870101111561028f57600080fd5b82602086016020830137600060208483010152809650505050505060c0880135905092959891949750929550565b60005b838110156102d85781810151838201526020016102c0565b838111156102e7576000848401525b50505050565b8781528660208201528560408201526bffffffffffffffffffffffff198516606082015283608082015260e060a0820152600083518060e084015261010061033b82828601602089016102bd565b60c0840194909452601f01601f191691909101909101979650505050505050565b6000825161036e8184602087016102bd565b9190910192915050565b60006020828403121561038a57600080fd5b8151801515811461039a57600080fd5b939250505056fea2646970667358221220049cb1a9d093bf908d78fadd5abeac5e2ffa713794e5ee79f3d1ff78d06ce6c564736f6c634300080c0033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c","output":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063bd90df701461003b578063fa534dc01461006b575b600080fd5b60005461004e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100793660046101b7565b61008e565b6040519015158152602001610062565b60008054604051829182916001600160a01b03909116906100bf908c908c908c908c908c908c908c906024016102ed565b60408051601f198184030181529181526020820180516001600160e01b03166303e94d3760e61b179052516100f4919061035c565b600060405180830381855afa9150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b50915091508161017f5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b604482015260640160405180910390fd5b808060200190518101906101939190610378565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a0312156101d257600080fd5b87359650602088013595506040880135945060608801356bffffffffffffffffffffffff198116811461020457600080fd5b93506080880135925060a088013567ffffffffffffffff8082111561022857600080fd5b818a0191508a601f83011261023c57600080fd5b81358181111561024e5761024e6101a1565b604051601f8201601f19908116603f01168101908382118183101715610276576102766101a1565b816040528281528d602084870101111561028f57600080fd5b82602086016020830137600060208483010152809650505050505060c0880135905092959891949750929550565b60005b838110156102d85781810151838201526020016102c0565b838111156102e7576000848401525b50505050565b8781528660208201528560408201526bffffffffffffffffffffffff198516606082015283608082015260e060a0820152600083518060e084015261010061033b82828601602089016102bd565b60c0840194909452601f01601f191691909101909101979650505050505050565b6000825161036e8184602087016102bd565b9190910192915050565b60006020828403121561038a57600080fd5b8151801515811461039a57600080fd5b939250505056fea2646970667358221220049cb1a9d093bf908d78fadd5abeac5e2ffa713794e5ee79f3d1ff78d06ce6c564736f6c634300080c0033","gas_used":219187,"gas_limit":306105,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063bd90df701461003b578063fa534dc01461006b575b600080fd5b60005461004e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100793660046101b7565b61008e565b6040519015158152602001610062565b60008054604051829182916001600160a01b03909116906100bf908c908c908c908c908c908c908c906024016102ed565b60408051601f198184030181529181526020820180516001600160e01b03166303e94d3760e61b179052516100f4919061035c565b600060405180830381855afa9150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b50915091508161017f5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b604482015260640160405180910390fd5b808060200190518101906101939190610378565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a0312156101d257600080fd5b87359650602088013595506040880135945060608801356bffffffffffffffffffffffff198116811461020457600080fd5b93506080880135925060a088013567ffffffffffffffff8082111561022857600080fd5b818a0191508a601f83011261023c57600080fd5b81358181111561024e5761024e6101a1565b604051601f8201601f19908116603f01168101908382118183101715610276576102766101a1565b816040528281528d602084870101111561028f57600080fd5b82602086016020830137600060208483010152809650505050505060c0880135905092959891949750929550565b60005b838110156102d85781810151838201526020016102c0565b838111156102e7576000848401525b50505050565b8781528660208201528560408201526bffffffffffffffffffffffff198516606082015283608082015260e060a0820152600083518060e084015261010061033b82828601602089016102bd565b60c0840194909452601f01601f191691909101909101979650505050505050565b6000825161036e8184602087016102bd565b9190910192915050565b60006020828403121561038a57600080fd5b8151801515811461039a57600080fd5b939250505056fea2646970667358221220049cb1a9d093bf908d78fadd5abeac5e2ffa713794e5ee79f3d1ff78d06ce6c564736f6c634300080c0033","nonce":55,"gas_used":290049},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x46d01","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x200c0ba40060491cb9e5738ae6f584e24197c4f4bec36ecbf904b33a8fdcdb8d","block_number":12},{"info":{"transaction_hash":"0x8d7d689b5e7498d26362ee52308da636bcbbe413fa03ca37f136aa3bcb8cda91","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":118687,"gas_limit":172853,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xc5a5c42992decbae36851359345fe25997f5c42d","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":112329,"gas_limit":163941,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512","output":"0x","gas_used":99364,"gas_limit":148834,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a7640000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003635c9adc5dea00000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4}]}],"exit":"Stop","out":"0x","nonce":29,"gas_used":142079},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x22aff","logs":[{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a7640000"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003635c9adc5dea00000"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100100004000000000000000000000000000000000400000002000000000000000000000000000000040000000000000000000000000004800000000004000000000000000000000000000000000300000002000040000000000400000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000040020480000000000000000040000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xcc694f0b3b0405bba2ef2fabf68314f0ccd5a2f46fa295879dc7667bc5089867","block_number":16},{"info":{"transaction_hash":"0xf0aa3a0f536457cd460fd21d384d403fe8d176fdc3a797da7ec3d0ba7a43594a","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b50610447806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610336565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead81600081518110610204576102046103fb565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b805161033181610226565b919050565b6000602080838503121561034957600080fd5b825167ffffffffffffffff8082111561036157600080fd5b818501915085601f83011261037557600080fd5b81518181111561038757610387610310565b8060051b604051601f19603f830116810181811085821117156103ac576103ac610310565b6040529182528482019250838101850191888311156103ca57600080fd5b938501935b828510156103ef576103e085610326565b845293850193928501926103cf565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d2a1dc3d5b3de166be22fce7e789ceac2302c613380087624652f3f48de1ed0864736f6c63430008180033","output":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610336565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead81600081518110610204576102046103fb565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b805161033181610226565b919050565b6000602080838503121561034957600080fd5b825167ffffffffffffffff8082111561036157600080fd5b818501915085601f83011261037557600080fd5b81518181111561038757610387610310565b8060051b604051601f19603f830116810181811085821117156103ac576103ac610310565b6040529182528482019250838101850191888311156103ca57600080fd5b938501935b828510156103ef576103e085610326565b845293850193928501926103cf565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d2a1dc3d5b3de166be22fce7e789ceac2302c613380087624652f3f48de1ed0864736f6c63430008180033","gas_used":219263,"gas_limit":306088,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610336565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead81600081518110610204576102046103fb565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b805161033181610226565b919050565b6000602080838503121561034957600080fd5b825167ffffffffffffffff8082111561036157600080fd5b818501915085601f83011261037557600080fd5b81518181111561038757610387610310565b8060051b604051601f19603f830116810181811085821117156103ac576103ac610310565b6040529182528482019250838101850191888311156103ca57600080fd5b938501935b828510156103ef576103e085610326565b845293850193928501926103cf565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d2a1dc3d5b3de166be22fce7e789ceac2302c613380087624652f3f48de1ed0864736f6c63430008180033","nonce":35,"gas_used":289731},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x98263","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x86f63f579b0459b5ac7667ae5594c6ca15ea0c9a8bcfa6fccccebf14b813f1f0","block_number":2},{"info":{"transaction_hash":"0x313a5f29df26d29135513cf0d64515eca7e96216e2700bd66810a2cbb5d0bdc2","transaction_index":3,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec4000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","output":"0x","gas_used":17021,"gas_limit":31821,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe60000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","output":"0x","gas_used":11547,"gas_limit":25979,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":44,"gas_used":38821},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x418634","logs":[{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf"],"data":"0x"}],"logsBloom":"0x00002000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000008000002000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x659d0a1c2c9b1aaa8dcd8df9a51c1ced49fc8d55bed17519f0c69bbbc6e471db","block_number":5},{"info":{"transaction_hash":"0x0407695da91c821753dcf7e68b5284a95c603e466b110cce53db7254dd1f1278","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4364,"gas_limit":14198,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":32,"gas_used":25796},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x64c4","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xcaf92fca6d10a7a22a30f948ad817d4944b661aaacfde3c771e9f6584842716d","block_number":18},{"info":{"transaction_hash":"0xfd0cd693bcd0f6192a593b8edcbcfd149e34e760aca4b512b7292d66dff4c2f8","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":141217,"gas_limit":204005,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084cf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":134859,"gas_limit":194607,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":121894,"gas_limit":179021,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4}]}],"exit":"Stop","out":"0x","nonce":20,"gas_used":164693},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x28355","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000100000400000000000000000000000000000000400000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000100000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000"},"block_hash":"0x60216db37c48029a8f153a732e8ce645a284a4bc0c9b52e52db91e73a255b3f4","block_number":10},{"info":{"transaction_hash":"0x36e493baf7271595140c6eb3ab0ad73f1a465f974b7f43e80bec732caa827f5e","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5060405161075038038061075083398101604081905261002f91610259565b60005b825181101561006d576100658382815181106100505761005061033a565b6020026020010151600161007e60201b60201c565b600101610032565b5061007781610150565b5050610350565b6001600160a01b0382166100ef5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101be5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e6565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025457600080fd5b919050565b6000806040838503121561026c57600080fd5b82516001600160401b0381111561028257600080fd5b8301601f8101851361029357600080fd5b80516001600160401b038111156102ac576102ac610227565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102da576102da610227565b6040529182526020818401810192908101888411156102f857600080fd5b6020850194505b8385101561031e576103108561023d565b8152602094850194016102ff565b509450610331925050506020840161023d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b6103f18061035f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c0033","gas_used":254168,"gas_limit":355501,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c0033","nonce":1,"gas_used":338342},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x529a6","logs":[{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}],"logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000"},"block_hash":"0x6f5c23d23cc1a6585e03a9255d0017fa2e89b1cb671629ef6ee84a9608a08afe","block_number":2},{"info":{"transaction_hash":"0x3a12eb5273c6cdd3fd93e2107708191b4ed955096523ae364b1782aae4a997b6","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101c06040523480156200001257600080fd5b5060405162005f1a38038062005f1a833981016040819052620000359162000254565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f720000000000000000000060208083019182528351808501909452600684526576302e302e3160d01b908401528151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a05287938793879387939192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001358184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060c05261012052505050506001600160a01b039384166101405291831661018052821661016052166101a0526200016f62000179565b50505050620002bc565b600054610100900460ff1615620001e65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000239576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200025157600080fd5b50565b600080600080608085870312156200026b57600080fd5b845162000278816200023b565b60208601519094506200028b816200023b565b60408601519093506200029e816200023b565b6060860151909250620002b1816200023b565b939692955090935050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615b56620003c4600039600081816107aa015281816111dd0152818161214001528181612d7e0152818161348b01526138a50152600081816106dc015281816120cb0152818161256a01528181612cfe015281816133e2015281816135d301526138240152600081816106a201528181610fb00152818161210901528181612c8001528181612e6601528181612ee00152818161336201526139210152600081816105a701528181612bd601526132aa01526000613b2401526000613b7301526000613b4e01526000613aa701526000613ad101526000613afb0152615b566000f3fe608060405234801561001057600080fd5b506004361061035c5760003560e01c80635b0b829f116101d35780639e9923c211610104578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610897578063f2fde38b1461093a578063fabc1cbc1461094d578063fd39105a1461096057600080fd5b8063d72d8dd614610869578063d75b4c8814610871578063dd8283f31461088457600080fd5b8063a96f783e116100de578063a96f783e14610806578063c391425e1461080f578063ca0de8821461082f578063ca4f2d971461085657600080fd5b80639e9923c2146107a55780639feab859146107cc578063a50857bf146107f357600080fd5b8063715018a611610171578063886f11951161014b578063886f1195146107525780638da5cb5b1461076b5780639aa1653d146107735780639b5d177b1461079257600080fd5b8063715018a61461072457806384ca52131461072c578063871ef0491461073f57600080fd5b80636347c900116101ad5780636347c900146106c457806368304835146106d75780636c708904146106fe5780636e3b17db1461071157600080fd5b80635b0b829f146106825780635c975abb146106955780635df459461461069d57600080fd5b8063249a0c42116102ad5780633af32abf1161024b57806353abfad41161022557806353abfad4146106285780635865c60c1461063b578063595c6a671461065b5780635ac86ab71461066357600080fd5b80633af32abf146105c95780633c2a7f4c146105f55780635140a5481461061557600080fd5b8063296bb06411610287578063296bb0641461056957806329d1e0c31461057c5780632cdd1e861461058f5780633998fdd3146105a257600080fd5b8063249a0c421461052357806328f61b311461054357806329092d0e1461055657600080fd5b80630d3f21341161031a57806313542a4e116102f457806313542a4e1461046b578063136439dd146104945780631478851f146104a75780631eb812da146104da57600080fd5b80630d3f21341461042557806310d67a2f14610438578063125e05841461044b57600080fd5b8062cf2ab51461036157806303fd34921461037657806304ec6351146103a9578063054310e6146103d45780630a3b0a4f146103ff5780630cf4b76714610412575b600080fd5b61037461036f366004614613565b61099c565b005b610396610384366004614654565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6103bc6103b736600461467f565b610aaa565b6040516001600160c01b0390911681526020016103a0565b609d546103e7906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b61037461040d3660046146dc565b610bba565b6103746104203660046147e0565b610c0e565b610374610433366004614654565b610cb8565b6103746104463660046146dc565b610cc5565b6103966104593660046146dc565b609f6020526000908152604090205481565b6103966104793660046146dc565b6001600160a01b031660009081526099602052604090205490565b6103746104a2366004614654565b610d78565b6104ca6104b5366004614654565b609a6020526000908152604090205460ff1681565b60405190151581526020016103a0565b6104ed6104e8366004614830565b610eb5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016103a0565b610396610531366004614863565b609b6020526000908152604090205481565b609e546103e7906001600160a01b031681565b6103746105643660046146dc565b610f46565b6103e7610577366004614654565b610f97565b61037461058a3660046146dc565b611023565b61037461059d3660046146dc565b611034565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b6104ca6105d73660046146dc565b6001600160a01b0316600090815260c8602052604090205460ff1690565b6106086106033660046146dc565b611045565b6040516103a0919061487e565b6103746106233660046148d6565b6110c4565b610374610636366004614964565b61149a565b61064e6106493660046146dc565b611560565b6040516103a09190614a3a565b6103746115d4565b6104ca610671366004614863565b6001805460ff9092161b9081161490565b610374610690366004614abf565b6116a0565b600154610396565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b6103e76106d2366004614654565b6116fa565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b61037461070c366004614964565b611724565b61037461071f366004614af3565b6117e6565b61037461193b565b61039661073a366004614b87565b61194f565b6103bc61074d366004614654565b611999565b6000546103e7906201000090046001600160a01b031681565b6103e76119a4565b6096546107809060ff1681565b60405160ff90911681526020016103a0565b6103746107a0366004614d20565b6119bd565b6103e77f000000000000000000000000000000000000000000000000000000000000000081565b6103967f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b610374610801366004614e19565b611cd6565b61039660a05481565b61082261081d366004614ec1565b611e3b565b6040516103a09190614f66565b6103967f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b610374610864366004614fb0565b611eea565b609c54610396565b61037461087f366004615096565b611f50565b610374610892366004615253565b611f63565b6109066108a5366004614863565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016103a0565b6103746109483660046146dc565b612223565b61037461095b366004614654565b612299565b61098f61096e3660046146dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103a09190615327565b6001546002906004908116036109cd5760405162461bcd60e51b81526004016109c490615335565b60405180910390fd5b60005b82811015610aa45760008484838181106109ec576109ec61536c565b9050602002016020810190610a0191906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610a4c57610a4c614a02565b6002811115610a5d57610a5d614a02565b90525080519091506000610a70826123f5565b90506000610a86826001600160c01b0316612460565b9050610a9385858361252c565b5050600190930192506109d0915050565b50505050565b6000838152609860205260408120805482919084908110610acd57610acd61536c565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610b535760405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b60448201526064016109c4565b602081015163ffffffff161580610b795750806020015163ffffffff168463ffffffff16105b610bae5760405162461bcd60e51b81526004016109c49060208082526004908201526331371e1960e11b604082015260600190565b60400151949350505050565b610bc2612619565b6001600160a01b038116600081815260c86020526040808220805460ff19166001179055517f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9190a250565b60013360009081526099602052604090206001015460ff166002811115610c3757610c37614a02565b14610c6c5760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610cad9084906153c8565b60405180910390a250565b610cc0612619565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c91906153db565b6001600160a01b0316336001600160a01b031614610d6c5760405162461bcd60e51b81526004016109c4906153f8565b610d7581612678565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190615442565b610e055760405162461bcd60e51b81526004016109c490615464565b60015481811614610e7e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610cad565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ef257610ef261536c565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b610f4e612619565b6001600160a01b038116600081815260c86020526040808220805460ff19169055517f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9190a250565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4091906153db565b61102b612619565b610d758161277d565b61103c612619565b610d75816127e6565b6040805180820190915260008082526020820152610f406110bf7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016110a49291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061284f565b61289d565b6001546002906004908116036110ec5760405162461bcd60e51b81526004016109c490615335565b600061113484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905084831461116e5760405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b60448201526064016109c4565b60005b8381101561149157600085858381811061118d5761118d61536c565b919091013560f81c915036905060008989858181106111ae576111ae61536c565b90506020028101906111c091906154ac565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154f5565b63ffffffff16811461128f5760405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b60448201526064016109c4565b6000805b828110156114365760008484838181106112af576112af61536c565b90506020020160208101906112c491906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561130f5761130f614a02565b600281111561132057611320614a02565b90525080519091506000611333826123f5565b905060016001600160c01b03821660ff8b161c8116146113805760405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b60448201526064016109c4565b856001600160a01b0316846001600160a01b0316116113cb5760405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b60448201526064016109c4565b5061142983838f8f8d908e60016113e29190615528565b926113ef9392919061553b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252c92505050565b5090925050600101611293565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611171565b50505050505050565b6114a2612619565b60005b815181101561155c57600060c860008484815181106114c6576114c661536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106115175761151761536c565b60200260200101516001600160a01b03167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc60405160405180910390a26001016114a5565b5050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115ba576115ba614a02565b60028111156115cb576115cb614a02565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116459190615442565b6116615760405162461bcd60e51b81526004016109c490615464565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a8612619565b609654829060ff908116908216106116eb5760405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b60448201526064016109c4565b6116f583836129bd565b505050565b609c818154811061170a57600080fd5b6000918252602090912001546001600160a01b0316905081565b61172c612619565b60005b815181101561155c57600160c860008484815181106117505761175061536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106117a1576117a161536c565b60200260200101516001600160a01b03167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f60405160405180910390a260010161172f565b609e546001600160a01b0316331461182d5760405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b60448201526064016109c4565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161189a9187908790819084018382808284376000920191909152505060965460ff16915061292c9050565b905060006118a7836123f5565b905060018085015460ff1660028111156118c3576118c3614a02565b1480156118d857506001600160c01b03821615155b80156118f657506118f66001600160c01b0383811690831681161490565b15611491576114918787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611943612619565b61194d6000612df2565b565b600061198f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a87878787876040516020016110a496959493929190615565565b9695505050505050565b6000610f40826123f5565b60006119b86064546001600160a01b031690565b905090565b60018054600091908116036119e45760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611a355760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b838914611a6d5760405162461bcd60e51b81526004016109c49060208082526004908201526338a632b760e11b604082015260600190565b6000611a793388612e44565b9050611ad933828888808060200260200160405190810160405280939291908181526020016000905b82821015611ace57611abf604083028601368190038101906155ed565b81526020019060010190611aa2565b505050505087612f79565b6000611b2033838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b90506000609760008e8e6000818110611b3b57611b3b61536c565b919091013560f81c825250602080820192909252604090810160009081208251606081018452905463ffffffff811680835261ffff600160201b8304811696840196909652600160301b909104909416928101929092528451805192945091611ba657611ba661536c565b602002602001015163ffffffff161115611cc757611c4b8d8d6000818110611bd057611bd061536c565b9050013560f81c60f81b60f81c8360400151600081518110611bf457611bf461536c565b6020026020010151338560200151600081518110611c1457611c1461536c565b60200260200101518c8c6000818110611c2f57611c2f61536c565b905060400201803603810190611c4591906155ed565b86613519565b611cc788886000818110611c6157611c6161536c565b9050604002016020016020810190611c7991906146dc565b8e8e600090600192611c8d9392919061553b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b50505050505050505050505050565b6001805460009190811603611cfd5760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611d4e5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b6000611d5a3385612e44565b90506000611da333838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b51600080805260976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c754825192935063ffffffff1691839190611deb57611deb61536c565b602002602001015163ffffffff161115611e305760405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b60448201526064016109c4565b505050505050505050565b6060600082516001600160401b03811115611e5857611e586146f9565b604051908082528060200260200182016040528015611e81578160200160208202803683370190505b50905060005b8351811015611ee257611eb385858381518110611ea657611ea661536c565b60200260200101516136e8565b828281518110611ec557611ec561536c565b63ffffffff90921660209283029190910190910152600101611e87565b509392505050565b60018054600290811603611f105760405162461bcd60e51b81526004016109c490615335565b6116f53384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611f58612619565b6116f58383836137a1565b600054610100900460ff1615808015611f835750600054600160ff909116105b80611f9d5750303b158015611f9d575060005460ff166001145b6120005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109c4565b6000805460ff191660011790558015612023576000805461ff0019166101001790555b82518451148015612035575081518351145b6120665760405162461bcd60e51b8152602060048201526002602482015261494560f01b60448201526064016109c4565b61206f89612df2565b6120798686613983565b6120828861277d565b61208b876127e6565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156121d2576121ca8582815181106121895761218961536c565b60200260200101518583815181106121a3576121a361536c565b60200260200101518584815181106121bd576121bd61536c565b60200260200101516137a1565b60010161216b565b508015611e30576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61222b612619565b6001600160a01b0381166122905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c4565b610d7581612df2565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231091906153db565b6001600160a01b0316336001600160a01b0316146123405760405162461bcd60e51b81526004016109c4906153f8565b6001541981196001541916146123be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cad565b6000818152609860205260408120548082036124145750600092915050565b600083815260986020526040902061242d600183615609565b8154811061243d5761243d61536c565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061246e84613a6f565b61ffff166001600160401b03811115612489576124896146f9565b6040519080825280601f01601f1916602001820160405280156124b3576020820181803683370190505b5090506000805b8251821080156124cb575061010081105b15612522576001811b935085841615612512578060f81b8383815181106124f4576124f461536c565b60200101906001600160f81b031916908160001a9053508160010191505b61251b8161561c565b90506124ba565b5090949350505050565b60018260200151600281111561254457612544614a02565b1461254e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906125a390889086908890600401615635565b6020604051808303816000875af11580156125c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e69190615665565b90506001600160c01b03811615612612576126128561260d836001600160c01b0316612460565b612a6a565b5050505050565b336126226119a4565b6001600160a01b03161461194d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c4565b6001600160a01b0381166127065760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016109c4565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f4061285c613a9a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806128cd600080516020615b01833981519152866156a4565b90505b6128d981613bc1565b9093509150600080516020615b018339815191528283098303612912576040805180820190915290815260208101919091529392505050565b600080516020615b018339815191526001820890506128d0565b60008061293884613c43565b9050808360ff166001901b116129b65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016109c4565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612a9e57612a9e614a02565b14612ad35760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b609654600090612ae790859060ff1661292c565b90506000612af4836123f5565b90506001600160c01b038216612b355760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b612b4c6001600160c01b0383811690831681161490565b612b815760405162461bcd60e51b81526004016109c49060208082526004908201526310a9bab160e11b604082015260600190565b6001600160c01b0382811619821616612b9a8482613dcb565b6001600160c01b038116612c695760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612c1a57600080fd5b505af1158015612c2e573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612cb7908a908a906004016156b8565b600060405180830381600087803b158015612cd157600080fd5b505af1158015612ce5573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d379087908a906004016156dc565b600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612db79087908a906004016156dc565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed391906156f5565b90506000819003610f40577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612f1887611045565b6040518463ffffffff1660e01b8152600401612f369392919061570e565b6020604051808303816000875af1158015612f55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b691906156f5565b6020808201516000908152609a909152604090205460ff1615612fc75760405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b60448201526064016109c4565b42816040015110156130035760405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b60448201526064016109c4565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610aa4926001600160a01b039092169161304e918891889188919061194f565b8351613f8c565b61307960405180606001604052806060815260200160608152602001606081525090565b60006130c186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905060006130ce886123f5565b90506001600160c01b03821661310f5760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b8082166001600160c01b0316156131515760405162461bcd60e51b81526004016109c49060208082526004908201526308509a5d60e21b604082015260600190565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b03838116908516179142916131899190615528565b106131be5760405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b60448201526064016109c4565b6131c88982613dcb565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131f891906153c8565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561323257613232614a02565b1461334b576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561328d5761328d614a02565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906132e2908d90899060040161577e565b600060405180830381600087803b1580156132fc57600080fd5b505af1158015613310573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061339b908d908c908c906004016157f2565b600060405180830381600087803b1580156133b557600080fd5b505af11580156133c9573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692506325504777915061341f908d908d908d908d90600401615817565b6000604051808303816000875af115801561343e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346691908101906158a7565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d906134c3908c908c908c9060040161590a565b6000604051808303816000875af11580156134e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350a9190810190615924565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152600360248201526206368360ec1b60448201526064016109c4565b8760ff16846000015160ff16146135b15760405162461bcd60e51b815260206004820152600360248201526263683160e81b60448201526064016109c4565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364691906159b2565b90506136528185614146565b6001600160601b0316866001600160601b0316116136985760405162461bcd60e51b815260206004820152600360248201526231b41960e91b60448201526064016109c4565b6136a2888561416a565b6001600160601b0316816001600160601b031610611e305760405162461bcd60e51b815260206004820152600360248201526263683360e81b60448201526064016109c4565b600081815260986020526040812054815b8181101561377057600161370d8284615609565b6137179190615609565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061374a5761374a61536c565b60009182526020909120015463ffffffff1611613768575050610f40565b6001016136f9565b5060405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b60448201526064016109c4565b60965460ff1660c081106137e05760405162461bcd60e51b81526004016109c4906020808252600490820152630e29ac2f60e31b604082015260600190565b6137eb8160016159cf565b6096805460ff191660ff929092169190911790558061380a81866129bd565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a779061385d908490889088906004016159e8565b600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561396f57600080fd5b505af1158015611e30573d6000803e3d6000fd5b6000546201000090046001600160a01b03161580156139aa57506001600160a01b03821615155b613a2c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261155c82612678565b6000805b8215610f4057613a84600184615609565b9092169180613a9281615a64565b915050613a73565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613af357507f000000000000000000000000000000000000000000000000000000000000000046145b15613b1d57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615b018339815191526003600080516020615b0183398151915286600080516020615b01833981519152888909090890506000613c37827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615b01833981519152614184565b91959194509092505050565b600061010082511115613ccc5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016109c4565b8151600003613cdd57506000919050565b60008083600081518110613cf357613cf361536c565b0160200151600160f89190911c81901b92505b8451811015613dc257848181518110613d2157613d2161536c565b0160200151600160f89190911c1b9150828211613db65760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016109c4565b91811791600101613d06565b50909392505050565b60008281526098602052604081205490819003613e73576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120613e8c600184615609565b81548110613e9c57613e9c61536c565b6000918252602090912001805490915063ffffffff438116911603613ede5780546001600160401b0316600160401b6001600160c01b03851602178155610aa4565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156140a657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613fcc90869086906004016156dc565b602060405180830381865afa158015613fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400d9190615a85565b6001600160e01b031916146116f55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016109c4565b826001600160a01b03166140ba838361422d565b6001600160a01b0316146116f55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016109c4565b6020810151600090612710906141609061ffff1685615aaf565b6129b69190615ada565b6040810151600090612710906141609061ffff1685615aaf565b60008061418f614593565b6141976145b1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806141d457fe5b50826142225760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016109c4565b505195945050505050565b600080600061423c8585614249565b91509150611ee2816142b7565b600080825160410361427f5760208301516040840151606085015160001a6142738782858561446d565b945094505050506142b0565b82516040036142a8576020830151604084015161429d86838361455a565b9350935050506142b0565b506000905060025b9250929050565b60008160048111156142cb576142cb614a02565b036142d35750565b60018160048111156142e7576142e7614a02565b036143345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109c4565b600281600481111561434857614348614a02565b036143955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109c4565b60038160048111156143a9576143a9614a02565b036144015760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109c4565b600481600481111561441557614415614a02565b03610d755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109c4565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144a45750600090506003614551565b8460ff16601b141580156144bc57508460ff16601c14155b156144cd5750600090506004614551565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614521573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661454a57600060019250925050614551565b9150600090505b94509492505050565b6000806001600160ff1b0383168161457760ff86901c601b615528565b90506145858782888561446d565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126145e157600080fd5b5081356001600160401b038111156145f857600080fd5b6020830191508360208260051b85010111156142b057600080fd5b6000806020838503121561462657600080fd5b82356001600160401b0381111561463c57600080fd5b614648858286016145cf565b90969095509350505050565b60006020828403121561466657600080fd5b5035919050565b63ffffffff81168114610d7557600080fd5b60008060006060848603121561469457600080fd5b8335925060208401356146a68161466d565b929592945050506040919091013590565b6001600160a01b0381168114610d7557600080fd5b80356146d7816146b7565b919050565b6000602082840312156146ee57600080fd5b81356129b6816146b7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614731576147316146f9565b60405290565b604080519081016001600160401b0381118282101715614731576147316146f9565b604051601f8201601f191681016001600160401b0381118282101715614781576147816146f9565b604052919050565b60006001600160401b038311156147a2576147a26146f9565b6147b5601f8401601f1916602001614759565b90508281528383830111156147c957600080fd5b828260208301376000602084830101529392505050565b6000602082840312156147f257600080fd5b81356001600160401b0381111561480857600080fd5b8201601f8101841361481957600080fd5b61482884823560208401614789565b949350505050565b6000806040838503121561484357600080fd5b50508035926020909101359150565b803560ff811681146146d757600080fd5b60006020828403121561487557600080fd5b6129b682614852565b815181526020808301519082015260408101610f40565b60008083601f8401126148a757600080fd5b5081356001600160401b038111156148be57600080fd5b6020830191508360208285010111156142b057600080fd5b600080600080604085870312156148ec57600080fd5b84356001600160401b038082111561490357600080fd5b61490f888389016145cf565b9096509450602087013591508082111561492857600080fd5b5061493587828801614895565b95989497509550505050565b60006001600160401b0382111561495a5761495a6146f9565b5060051b60200190565b6000602080838503121561497757600080fd5b82356001600160401b0381111561498d57600080fd5b8301601f8101851361499e57600080fd5b80356149b16149ac82614941565b614759565b81815260059190911b820183019083810190878311156149d057600080fd5b928401925b828410156149f75783356149e8816146b7565b825292840192908401906149d5565b979650505050505050565b634e487b7160e01b600052602160045260246000fd5b60038110614a3657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614a5590840182614a18565b5092915050565b803561ffff811681146146d757600080fd5b600060608284031215614a8057600080fd5b614a8861470f565b90508135614a958161466d565b8152614aa360208301614a5c565b6020820152614ab460408301614a5c565b604082015292915050565b60008060808385031215614ad257600080fd5b614adb83614852565b9150614aea8460208501614a6e565b90509250929050565b600080600060408486031215614b0857600080fd5b8335614b13816146b7565b925060208401356001600160401b03811115614b2e57600080fd5b614b3a86828701614895565b9497909650939450505050565b600060408284031215614b5957600080fd5b614b61614737565b9050614b6c82614852565b81526020820135614b7c816146b7565b602082015292915050565b600080600080600060a08688031215614b9f57600080fd5b8535614baa816146b7565b945060208681013594506040808801356001600160401b03811115614bce57600080fd5b8801601f81018a13614bdf57600080fd5b8035614bed6149ac82614941565b8082825260208201915060208360061b85010192508c831115614c0f57600080fd5b6020840193505b82841015614c3757614c288d85614b47565b82529284019290850190614c16565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614c6757600080fd5b50919050565b60008083601f840112614c7f57600080fd5b5081356001600160401b03811115614c9657600080fd5b6020830191508360208260061b85010111156142b057600080fd5b600060608284031215614cc357600080fd5b614ccb61470f565b905081356001600160401b03811115614ce357600080fd5b8201601f81018413614cf457600080fd5b614d0384823560208401614789565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614d3f57600080fd5b89356001600160401b0380821115614d5657600080fd5b614d628d838e01614895565b909b50995060208c0135915080821115614d7b57600080fd5b614d878d838e01614895565b9099509750879150614d9c8d60408e01614c54565b96506101408c0135915080821115614db357600080fd5b614dbf8d838e01614c6d565b90965094506101608c0135915080821115614dd957600080fd5b614de58d838e01614cb1565b93506101808c0135915080821115614dfc57600080fd5b50614e098c828d01614cb1565b9150509295985092959850929598565b6000806000806000806101608789031215614e3357600080fd5b86356001600160401b0380821115614e4a57600080fd5b614e568a838b01614895565b90985096506020890135915080821115614e6f57600080fd5b614e7b8a838b01614895565b9096509450849150614e908a60408b01614c54565b9350610140890135915080821115614ea757600080fd5b50614eb489828a01614cb1565b9150509295509295509295565b60008060408385031215614ed457600080fd5b8235614edf8161466d565b91506020838101356001600160401b03811115614efb57600080fd5b8401601f81018613614f0c57600080fd5b8035614f1a6149ac82614941565b81815260059190911b82018301908381019088831115614f3957600080fd5b928401925b82841015614f5757833582529284019290840190614f3e565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614fa457835163ffffffff1683529284019291840191600101614f82565b50909695505050505050565b60008060208385031215614fc357600080fd5b82356001600160401b03811115614fd957600080fd5b61464885828601614895565b6001600160601b0381168114610d7557600080fd5b600082601f83011261500b57600080fd5b8135602061501b6149ac83614941565b82815260069290921b8401810191818101908684111561503a57600080fd5b8286015b8481101561508b57604081890312156150575760008081fd5b61505f614737565b813561506a816146b7565b81528185013561507981614fe5565b8186015283529183019160400161503e565b509695505050505050565b600080600060a084860312156150ab57600080fd5b6150b58585614a6e565b925060608401356150c581614fe5565b915060808401356001600160401b038111156150e057600080fd5b6150ec86828701614ffa565b9150509250925092565b600082601f83011261510757600080fd5b813560206151176149ac83614941565b80838252602082019150606060206060860288010194508785111561513b57600080fd5b602087015b8581101561515f576151528982614a6e565b8452928401928101615140565b5090979650505050505050565b600082601f83011261517d57600080fd5b8135602061518d6149ac83614941565b8083825260208201915060208460051b8701019350868411156151af57600080fd5b602086015b8481101561508b5780356151c781614fe5565b83529183019183016151b4565b600082601f8301126151e557600080fd5b813560206151f56149ac83614941565b82815260059290921b8401810191818101908684111561521457600080fd5b8286015b8481101561508b5780356001600160401b038111156152375760008081fd5b6152458986838b0101614ffa565b845250918301918301615218565b600080600080600080600080610100898b03121561527057600080fd5b615279896146cc565b975061528760208a016146cc565b965061529560408a016146cc565b95506152a360608a016146cc565b94506080890135935060a08901356001600160401b03808211156152c657600080fd5b6152d28c838d016150f6565b945060c08b01359150808211156152e857600080fd5b6152f48c838d0161516c565b935060e08b013591508082111561530a57600080fd5b506153178b828c016151d4565b9150509295985092959890939650565b60208101610f408284614a18565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156153a85760208185018101518683018201520161538c565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006129b66020830184615382565b6000602082840312156153ed57600080fd5b81516129b6816146b7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561545457600080fd5b815180151581146129b657600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126154c357600080fd5b8301803591506001600160401b038211156154dd57600080fd5b6020019150600581901b36038213156142b057600080fd5b60006020828403121561550757600080fd5b81516129b68161466d565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f4057610f40615512565b6000808585111561554b57600080fd5b8386111561555857600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a166020860152604089604087015260c0606087015283895180865260e08801915060208b01955060005b818110156155cd578651805160ff16845286015185168684015295850195918301916001016155a3565b505060808701989098525050505060a09091019190915250949350505050565b6000604082840312156155ff57600080fd5b6129b68383614b47565b81810381811115610f4057610f40615512565b60006001820161562e5761562e615512565b5060010190565b60018060a01b038416815282602082015260606040820152600061565c6060830184615382565b95945050505050565b60006020828403121561567757600080fd5b81516001600160c01b03811681146129b657600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826156b3576156b361568e565b500690565b6001600160a01b038316815260406020820181905260009061482890830184615382565b8281526040602082015260006148286040830184615382565b60006020828403121561570757600080fd5b5051919050565b6001600160a01b03841681526101608101615736602083018580358252602090810135910152565b615750606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614828565b60018060a01b03831681526040602082015260008251606060408401526157a860a0840182615382565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061565c90830184866157c9565b60018060a01b038516815283602082015260606040820152600061198f6060830184866157c9565b600082601f83011261585057600080fd5b815160206158606149ac83614941565b8083825260208201915060208460051b87010193508684111561588257600080fd5b602086015b8481101561508b57805161589a81614fe5565b8352918301918301615887565b600080604083850312156158ba57600080fd5b82516001600160401b03808211156158d157600080fd5b6158dd8683870161583f565b935060208501519150808211156158f357600080fd5b506159008582860161583f565b9150509250929050565b83815260406020820152600061565c6040830184866157c9565b6000602080838503121561593757600080fd5b82516001600160401b0381111561594d57600080fd5b8301601f8101851361595e57600080fd5b805161596c6149ac82614941565b81815260059190911b8201830190838101908783111561598b57600080fd5b928401925b828410156149f75783516159a38161466d565b82529284019290840190615990565b6000602082840312156159c457600080fd5b81516129b681614fe5565b60ff8181168382160190811115610f4057610f40615512565b60006060820160ff8616835260206001600160601b03808716602086015260406060604087015283875180865260808801915060208901955060005b81811015615a5457865180516001600160a01b031684528601518516868401529585019591830191600101615a24565b50909a9950505050505050505050565b600061ffff808316818103615a7b57615a7b615512565b6001019392505050565b600060208284031215615a9757600080fd5b81516001600160e01b0319811681146129b657600080fd5b6001600160601b03818116838216028082169190828114615ad257615ad2615512565b505092915050565b60006001600160601b0380841680615af457615af461568e565b9216919091049291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207d5f90e3401cb54ad55455b7cbc4f8abf3101a8a6465b53d917fe6ec5da1e0c764736f6c63430008180033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4900000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778","output":"0x608060405234801561001057600080fd5b506004361061035c5760003560e01c80635b0b829f116101d35780639e9923c211610104578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610897578063f2fde38b1461093a578063fabc1cbc1461094d578063fd39105a1461096057600080fd5b8063d72d8dd614610869578063d75b4c8814610871578063dd8283f31461088457600080fd5b8063a96f783e116100de578063a96f783e14610806578063c391425e1461080f578063ca0de8821461082f578063ca4f2d971461085657600080fd5b80639e9923c2146107a55780639feab859146107cc578063a50857bf146107f357600080fd5b8063715018a611610171578063886f11951161014b578063886f1195146107525780638da5cb5b1461076b5780639aa1653d146107735780639b5d177b1461079257600080fd5b8063715018a61461072457806384ca52131461072c578063871ef0491461073f57600080fd5b80636347c900116101ad5780636347c900146106c457806368304835146106d75780636c708904146106fe5780636e3b17db1461071157600080fd5b80635b0b829f146106825780635c975abb146106955780635df459461461069d57600080fd5b8063249a0c42116102ad5780633af32abf1161024b57806353abfad41161022557806353abfad4146106285780635865c60c1461063b578063595c6a671461065b5780635ac86ab71461066357600080fd5b80633af32abf146105c95780633c2a7f4c146105f55780635140a5481461061557600080fd5b8063296bb06411610287578063296bb0641461056957806329d1e0c31461057c5780632cdd1e861461058f5780633998fdd3146105a257600080fd5b8063249a0c421461052357806328f61b311461054357806329092d0e1461055657600080fd5b80630d3f21341161031a57806313542a4e116102f457806313542a4e1461046b578063136439dd146104945780631478851f146104a75780631eb812da146104da57600080fd5b80630d3f21341461042557806310d67a2f14610438578063125e05841461044b57600080fd5b8062cf2ab51461036157806303fd34921461037657806304ec6351146103a9578063054310e6146103d45780630a3b0a4f146103ff5780630cf4b76714610412575b600080fd5b61037461036f366004614613565b61099c565b005b610396610384366004614654565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6103bc6103b736600461467f565b610aaa565b6040516001600160c01b0390911681526020016103a0565b609d546103e7906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b61037461040d3660046146dc565b610bba565b6103746104203660046147e0565b610c0e565b610374610433366004614654565b610cb8565b6103746104463660046146dc565b610cc5565b6103966104593660046146dc565b609f6020526000908152604090205481565b6103966104793660046146dc565b6001600160a01b031660009081526099602052604090205490565b6103746104a2366004614654565b610d78565b6104ca6104b5366004614654565b609a6020526000908152604090205460ff1681565b60405190151581526020016103a0565b6104ed6104e8366004614830565b610eb5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016103a0565b610396610531366004614863565b609b6020526000908152604090205481565b609e546103e7906001600160a01b031681565b6103746105643660046146dc565b610f46565b6103e7610577366004614654565b610f97565b61037461058a3660046146dc565b611023565b61037461059d3660046146dc565b611034565b6103e77f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b6104ca6105d73660046146dc565b6001600160a01b0316600090815260c8602052604090205460ff1690565b6106086106033660046146dc565b611045565b6040516103a0919061487e565b6103746106233660046148d6565b6110c4565b610374610636366004614964565b61149a565b61064e6106493660046146dc565b611560565b6040516103a09190614a3a565b6103746115d4565b6104ca610671366004614863565b6001805460ff9092161b9081161490565b610374610690366004614abf565b6116a0565b600154610396565b6103e77f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b6103e76106d2366004614654565b6116fa565b6103e77f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b61037461070c366004614964565b611724565b61037461071f366004614af3565b6117e6565b61037461193b565b61039661073a366004614b87565b61194f565b6103bc61074d366004614654565b611999565b6000546103e7906201000090046001600160a01b031681565b6103e76119a4565b6096546107809060ff1681565b60405160ff90911681526020016103a0565b6103746107a0366004614d20565b6119bd565b6103e77f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377881565b6103967f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b610374610801366004614e19565b611cd6565b61039660a05481565b61082261081d366004614ec1565b611e3b565b6040516103a09190614f66565b6103967f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b610374610864366004614fb0565b611eea565b609c54610396565b61037461087f366004615096565b611f50565b610374610892366004615253565b611f63565b6109066108a5366004614863565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016103a0565b6103746109483660046146dc565b612223565b61037461095b366004614654565b612299565b61098f61096e3660046146dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103a09190615327565b6001546002906004908116036109cd5760405162461bcd60e51b81526004016109c490615335565b60405180910390fd5b60005b82811015610aa45760008484838181106109ec576109ec61536c565b9050602002016020810190610a0191906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610a4c57610a4c614a02565b6002811115610a5d57610a5d614a02565b90525080519091506000610a70826123f5565b90506000610a86826001600160c01b0316612460565b9050610a9385858361252c565b5050600190930192506109d0915050565b50505050565b6000838152609860205260408120805482919084908110610acd57610acd61536c565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610b535760405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b60448201526064016109c4565b602081015163ffffffff161580610b795750806020015163ffffffff168463ffffffff16105b610bae5760405162461bcd60e51b81526004016109c49060208082526004908201526331371e1960e11b604082015260600190565b60400151949350505050565b610bc2612619565b6001600160a01b038116600081815260c86020526040808220805460ff19166001179055517f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9190a250565b60013360009081526099602052604090206001015460ff166002811115610c3757610c37614a02565b14610c6c5760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610cad9084906153c8565b60405180910390a250565b610cc0612619565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c91906153db565b6001600160a01b0316336001600160a01b031614610d6c5760405162461bcd60e51b81526004016109c4906153f8565b610d7581612678565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190615442565b610e055760405162461bcd60e51b81526004016109c490615464565b60015481811614610e7e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610cad565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ef257610ef261536c565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b610f4e612619565b6001600160a01b038116600081815260c86020526040808220805460ff19169055517f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9190a250565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316906347b314e890602401602060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4091906153db565b61102b612619565b610d758161277d565b61103c612619565b610d75816127e6565b6040805180820190915260008082526020820152610f406110bf7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016110a49291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061284f565b61289d565b6001546002906004908116036110ec5760405162461bcd60e51b81526004016109c490615335565b600061113484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905084831461116e5760405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b60448201526064016109c4565b60005b8381101561149157600085858381811061118d5761118d61536c565b919091013560f81c915036905060008989858181106111ae576111ae61536c565b90506020028101906111c091906154ac565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03169063f341092290602401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154f5565b63ffffffff16811461128f5760405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b60448201526064016109c4565b6000805b828110156114365760008484838181106112af576112af61536c565b90506020020160208101906112c491906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561130f5761130f614a02565b600281111561132057611320614a02565b90525080519091506000611333826123f5565b905060016001600160c01b03821660ff8b161c8116146113805760405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b60448201526064016109c4565b856001600160a01b0316846001600160a01b0316116113cb5760405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b60448201526064016109c4565b5061142983838f8f8d908e60016113e29190615528565b926113ef9392919061553b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252c92505050565b5090925050600101611293565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611171565b50505050505050565b6114a2612619565b60005b815181101561155c57600060c860008484815181106114c6576114c661536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106115175761151761536c565b60200260200101516001600160a01b03167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc60405160405180910390a26001016114a5565b5050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115ba576115ba614a02565b60028111156115cb576115cb614a02565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116459190615442565b6116615760405162461bcd60e51b81526004016109c490615464565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a8612619565b609654829060ff908116908216106116eb5760405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b60448201526064016109c4565b6116f583836129bd565b505050565b609c818154811061170a57600080fd5b6000918252602090912001546001600160a01b0316905081565b61172c612619565b60005b815181101561155c57600160c860008484815181106117505761175061536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106117a1576117a161536c565b60200260200101516001600160a01b03167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f60405160405180910390a260010161172f565b609e546001600160a01b0316331461182d5760405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b60448201526064016109c4565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161189a9187908790819084018382808284376000920191909152505060965460ff16915061292c9050565b905060006118a7836123f5565b905060018085015460ff1660028111156118c3576118c3614a02565b1480156118d857506001600160c01b03821615155b80156118f657506118f66001600160c01b0383811690831681161490565b15611491576114918787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611943612619565b61194d6000612df2565b565b600061198f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a87878787876040516020016110a496959493929190615565565b9695505050505050565b6000610f40826123f5565b60006119b86064546001600160a01b031690565b905090565b60018054600091908116036119e45760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611a355760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b838914611a6d5760405162461bcd60e51b81526004016109c49060208082526004908201526338a632b760e11b604082015260600190565b6000611a793388612e44565b9050611ad933828888808060200260200160405190810160405280939291908181526020016000905b82821015611ace57611abf604083028601368190038101906155ed565b81526020019060010190611aa2565b505050505087612f79565b6000611b2033838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b90506000609760008e8e6000818110611b3b57611b3b61536c565b919091013560f81c825250602080820192909252604090810160009081208251606081018452905463ffffffff811680835261ffff600160201b8304811696840196909652600160301b909104909416928101929092528451805192945091611ba657611ba661536c565b602002602001015163ffffffff161115611cc757611c4b8d8d6000818110611bd057611bd061536c565b9050013560f81c60f81b60f81c8360400151600081518110611bf457611bf461536c565b6020026020010151338560200151600081518110611c1457611c1461536c565b60200260200101518c8c6000818110611c2f57611c2f61536c565b905060400201803603810190611c4591906155ed565b86613519565b611cc788886000818110611c6157611c6161536c565b9050604002016020016020810190611c7991906146dc565b8e8e600090600192611c8d9392919061553b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b50505050505050505050505050565b6001805460009190811603611cfd5760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611d4e5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b6000611d5a3385612e44565b90506000611da333838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b51600080805260976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c754825192935063ffffffff1691839190611deb57611deb61536c565b602002602001015163ffffffff161115611e305760405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b60448201526064016109c4565b505050505050505050565b6060600082516001600160401b03811115611e5857611e586146f9565b604051908082528060200260200182016040528015611e81578160200160208202803683370190505b50905060005b8351811015611ee257611eb385858381518110611ea657611ea661536c565b60200260200101516136e8565b828281518110611ec557611ec561536c565b63ffffffff90921660209283029190910190910152600101611e87565b509392505050565b60018054600290811603611f105760405162461bcd60e51b81526004016109c490615335565b6116f53384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611f58612619565b6116f58383836137a1565b600054610100900460ff1615808015611f835750600054600160ff909116105b80611f9d5750303b158015611f9d575060005460ff166001145b6120005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109c4565b6000805460ff191660011790558015612023576000805461ff0019166101001790555b82518451148015612035575081518351145b6120665760405162461bcd60e51b8152602060048201526002602482015261494560f01b60448201526064016109c4565b61206f89612df2565b6120798686613983565b6120828861277d565b61208b876127e6565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81166001600160a01b03199283161790925585548085018755850180547f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49841690831617905585549384019095559190920180547f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377890921691909316179091555b84518110156121d2576121ca8582815181106121895761218961536c565b60200260200101518583815181106121a3576121a361536c565b60200260200101518584815181106121bd576121bd61536c565b60200260200101516137a1565b60010161216b565b508015611e30576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61222b612619565b6001600160a01b0381166122905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c4565b610d7581612df2565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231091906153db565b6001600160a01b0316336001600160a01b0316146123405760405162461bcd60e51b81526004016109c4906153f8565b6001541981196001541916146123be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cad565b6000818152609860205260408120548082036124145750600092915050565b600083815260986020526040902061242d600183615609565b8154811061243d5761243d61536c565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061246e84613a6f565b61ffff166001600160401b03811115612489576124896146f9565b6040519080825280601f01601f1916602001820160405280156124b3576020820181803683370190505b5090506000805b8251821080156124cb575061010081105b15612522576001811b935085841615612512578060f81b8383815181106124f4576124f461536c565b60200101906001600160f81b031916908160001a9053508160010191505b61251b8161561c565b90506124ba565b5090949350505050565b60018260200151600281111561254457612544614a02565b1461254e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16906366acfefe906125a390889086908890600401615635565b6020604051808303816000875af11580156125c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e69190615665565b90506001600160c01b03811615612612576126128561260d836001600160c01b0316612460565b612a6a565b5050505050565b336126226119a4565b6001600160a01b03161461194d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c4565b6001600160a01b0381166127065760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016109c4565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f4061285c613a9a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806128cd600080516020615b01833981519152866156a4565b90505b6128d981613bc1565b9093509150600080516020615b018339815191528283098303612912576040805180820190915290815260208101919091529392505050565b600080516020615b018339815191526001820890506128d0565b60008061293884613c43565b9050808360ff166001901b116129b65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016109c4565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612a9e57612a9e614a02565b14612ad35760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b609654600090612ae790859060ff1661292c565b90506000612af4836123f5565b90506001600160c01b038216612b355760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b612b4c6001600160c01b0383811690831681161490565b612b815760405162461bcd60e51b81526004016109c49060208082526004908201526310a9bab160e11b604082015260600190565b6001600160c01b0382811619821616612b9a8482613dcb565b6001600160c01b038116612c695760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169063a364f4da90602401600060405180830381600087803b158015612c1a57600080fd5b505af1158015612c2e573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49169063f4e24fe590612cb7908a908a906004016156b8565b600060405180830381600087803b158015612cd157600080fd5b505af1158015612ce5573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16925063bd29b8cd9150612d379087908a906004016156dc565b600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377816925063bd29b8cd9150612db79087908a906004016156dc565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49909116906313542a4e90602401602060405180830381865afa158015612eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed391906156f5565b90506000819003610f40577f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031663bf79ce588484612f1887611045565b6040518463ffffffff1660e01b8152600401612f369392919061570e565b6020604051808303816000875af1158015612f55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b691906156f5565b6020808201516000908152609a909152604090205460ff1615612fc75760405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b60448201526064016109c4565b42816040015110156130035760405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b60448201526064016109c4565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610aa4926001600160a01b039092169161304e918891889188919061194f565b8351613f8c565b61307960405180606001604052806060815260200160608152602001606081525090565b60006130c186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905060006130ce886123f5565b90506001600160c01b03821661310f5760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b8082166001600160c01b0316156131515760405162461bcd60e51b81526004016109c49060208082526004908201526308509a5d60e21b604082015260600190565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b03838116908516179142916131899190615528565b106131be5760405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b60448201526064016109c4565b6131c88982613dcb565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131f891906153c8565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561323257613232614a02565b1461334b576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561328d5761328d614a02565b021790555050604051639926ee7d60e01b81526001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169150639926ee7d906132e2908d90899060040161577e565b600060405180830381600087803b1580156132fc57600080fd5b505af1158015613310573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc491690633fb279529061339b908d908c908c906004016157f2565b600060405180830381600087803b1580156133b557600080fd5b505af11580156133c9573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1692506325504777915061341f908d908d908d908d90600401615817565b6000604051808303816000875af115801561343e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346691908101906158a7565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778169062bff04d906134c3908c908c908c9060040161590a565b6000604051808303816000875af11580156134e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350a9190810190615924565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152600360248201526206368360ec1b60448201526064016109c4565b8760ff16846000015160ff16146135b15760405162461bcd60e51b815260206004820152600360248201526263683160e81b60448201526064016109c4565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690635401ed2790604401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364691906159b2565b90506136528185614146565b6001600160601b0316866001600160601b0316116136985760405162461bcd60e51b815260206004820152600360248201526231b41960e91b60448201526064016109c4565b6136a2888561416a565b6001600160601b0316816001600160601b031610611e305760405162461bcd60e51b815260206004820152600360248201526263683360e81b60448201526064016109c4565b600081815260986020526040812054815b8181101561377057600161370d8284615609565b6137179190615609565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061374a5761374a61536c565b60009182526020909120015463ffffffff1611613768575050610f40565b6001016136f9565b5060405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b60448201526064016109c4565b60965460ff1660c081106137e05760405162461bcd60e51b81526004016109c4906020808252600490820152630e29ac2f60e31b604082015260600190565b6137eb8160016159cf565b6096805460ff191660ff929092169190911790558061380a81866129bd565b60405160016296b58960e01b031981526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e169063ff694a779061385d908490889088906004016159e8565b600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561396f57600080fd5b505af1158015611e30573d6000803e3d6000fd5b6000546201000090046001600160a01b03161580156139aa57506001600160a01b03821615155b613a2c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261155c82612678565b6000805b8215610f4057613a84600184615609565b9092169180613a9281615a64565b915050613a73565b6000306001600160a01b037f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57016148015613af357507f0000000000000000000000000000000000000000000000000000000000007a6946145b15613b1d57507fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d11828401527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615b018339815191526003600080516020615b0183398151915286600080516020615b01833981519152888909090890506000613c37827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615b01833981519152614184565b91959194509092505050565b600061010082511115613ccc5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016109c4565b8151600003613cdd57506000919050565b60008083600081518110613cf357613cf361536c565b0160200151600160f89190911c81901b92505b8451811015613dc257848181518110613d2157613d2161536c565b0160200151600160f89190911c1b9150828211613db65760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016109c4565b91811791600101613d06565b50909392505050565b60008281526098602052604081205490819003613e73576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120613e8c600184615609565b81548110613e9c57613e9c61536c565b6000918252602090912001805490915063ffffffff438116911603613ede5780546001600160401b0316600160401b6001600160c01b03851602178155610aa4565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156140a657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613fcc90869086906004016156dc565b602060405180830381865afa158015613fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400d9190615a85565b6001600160e01b031916146116f55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016109c4565b826001600160a01b03166140ba838361422d565b6001600160a01b0316146116f55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016109c4565b6020810151600090612710906141609061ffff1685615aaf565b6129b69190615ada565b6040810151600090612710906141609061ffff1685615aaf565b60008061418f614593565b6141976145b1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806141d457fe5b50826142225760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016109c4565b505195945050505050565b600080600061423c8585614249565b91509150611ee2816142b7565b600080825160410361427f5760208301516040840151606085015160001a6142738782858561446d565b945094505050506142b0565b82516040036142a8576020830151604084015161429d86838361455a565b9350935050506142b0565b506000905060025b9250929050565b60008160048111156142cb576142cb614a02565b036142d35750565b60018160048111156142e7576142e7614a02565b036143345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109c4565b600281600481111561434857614348614a02565b036143955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109c4565b60038160048111156143a9576143a9614a02565b036144015760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109c4565b600481600481111561441557614415614a02565b03610d755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109c4565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144a45750600090506003614551565b8460ff16601b141580156144bc57508460ff16601c14155b156144cd5750600090506004614551565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614521573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661454a57600060019250925050614551565b9150600090505b94509492505050565b6000806001600160ff1b0383168161457760ff86901c601b615528565b90506145858782888561446d565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126145e157600080fd5b5081356001600160401b038111156145f857600080fd5b6020830191508360208260051b85010111156142b057600080fd5b6000806020838503121561462657600080fd5b82356001600160401b0381111561463c57600080fd5b614648858286016145cf565b90969095509350505050565b60006020828403121561466657600080fd5b5035919050565b63ffffffff81168114610d7557600080fd5b60008060006060848603121561469457600080fd5b8335925060208401356146a68161466d565b929592945050506040919091013590565b6001600160a01b0381168114610d7557600080fd5b80356146d7816146b7565b919050565b6000602082840312156146ee57600080fd5b81356129b6816146b7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614731576147316146f9565b60405290565b604080519081016001600160401b0381118282101715614731576147316146f9565b604051601f8201601f191681016001600160401b0381118282101715614781576147816146f9565b604052919050565b60006001600160401b038311156147a2576147a26146f9565b6147b5601f8401601f1916602001614759565b90508281528383830111156147c957600080fd5b828260208301376000602084830101529392505050565b6000602082840312156147f257600080fd5b81356001600160401b0381111561480857600080fd5b8201601f8101841361481957600080fd5b61482884823560208401614789565b949350505050565b6000806040838503121561484357600080fd5b50508035926020909101359150565b803560ff811681146146d757600080fd5b60006020828403121561487557600080fd5b6129b682614852565b815181526020808301519082015260408101610f40565b60008083601f8401126148a757600080fd5b5081356001600160401b038111156148be57600080fd5b6020830191508360208285010111156142b057600080fd5b600080600080604085870312156148ec57600080fd5b84356001600160401b038082111561490357600080fd5b61490f888389016145cf565b9096509450602087013591508082111561492857600080fd5b5061493587828801614895565b95989497509550505050565b60006001600160401b0382111561495a5761495a6146f9565b5060051b60200190565b6000602080838503121561497757600080fd5b82356001600160401b0381111561498d57600080fd5b8301601f8101851361499e57600080fd5b80356149b16149ac82614941565b614759565b81815260059190911b820183019083810190878311156149d057600080fd5b928401925b828410156149f75783356149e8816146b7565b825292840192908401906149d5565b979650505050505050565b634e487b7160e01b600052602160045260246000fd5b60038110614a3657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614a5590840182614a18565b5092915050565b803561ffff811681146146d757600080fd5b600060608284031215614a8057600080fd5b614a8861470f565b90508135614a958161466d565b8152614aa360208301614a5c565b6020820152614ab460408301614a5c565b604082015292915050565b60008060808385031215614ad257600080fd5b614adb83614852565b9150614aea8460208501614a6e565b90509250929050565b600080600060408486031215614b0857600080fd5b8335614b13816146b7565b925060208401356001600160401b03811115614b2e57600080fd5b614b3a86828701614895565b9497909650939450505050565b600060408284031215614b5957600080fd5b614b61614737565b9050614b6c82614852565b81526020820135614b7c816146b7565b602082015292915050565b600080600080600060a08688031215614b9f57600080fd5b8535614baa816146b7565b945060208681013594506040808801356001600160401b03811115614bce57600080fd5b8801601f81018a13614bdf57600080fd5b8035614bed6149ac82614941565b8082825260208201915060208360061b85010192508c831115614c0f57600080fd5b6020840193505b82841015614c3757614c288d85614b47565b82529284019290850190614c16565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614c6757600080fd5b50919050565b60008083601f840112614c7f57600080fd5b5081356001600160401b03811115614c9657600080fd5b6020830191508360208260061b85010111156142b057600080fd5b600060608284031215614cc357600080fd5b614ccb61470f565b905081356001600160401b03811115614ce357600080fd5b8201601f81018413614cf457600080fd5b614d0384823560208401614789565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614d3f57600080fd5b89356001600160401b0380821115614d5657600080fd5b614d628d838e01614895565b909b50995060208c0135915080821115614d7b57600080fd5b614d878d838e01614895565b9099509750879150614d9c8d60408e01614c54565b96506101408c0135915080821115614db357600080fd5b614dbf8d838e01614c6d565b90965094506101608c0135915080821115614dd957600080fd5b614de58d838e01614cb1565b93506101808c0135915080821115614dfc57600080fd5b50614e098c828d01614cb1565b9150509295985092959850929598565b6000806000806000806101608789031215614e3357600080fd5b86356001600160401b0380821115614e4a57600080fd5b614e568a838b01614895565b90985096506020890135915080821115614e6f57600080fd5b614e7b8a838b01614895565b9096509450849150614e908a60408b01614c54565b9350610140890135915080821115614ea757600080fd5b50614eb489828a01614cb1565b9150509295509295509295565b60008060408385031215614ed457600080fd5b8235614edf8161466d565b91506020838101356001600160401b03811115614efb57600080fd5b8401601f81018613614f0c57600080fd5b8035614f1a6149ac82614941565b81815260059190911b82018301908381019088831115614f3957600080fd5b928401925b82841015614f5757833582529284019290840190614f3e565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614fa457835163ffffffff1683529284019291840191600101614f82565b50909695505050505050565b60008060208385031215614fc357600080fd5b82356001600160401b03811115614fd957600080fd5b61464885828601614895565b6001600160601b0381168114610d7557600080fd5b600082601f83011261500b57600080fd5b8135602061501b6149ac83614941565b82815260069290921b8401810191818101908684111561503a57600080fd5b8286015b8481101561508b57604081890312156150575760008081fd5b61505f614737565b813561506a816146b7565b81528185013561507981614fe5565b8186015283529183019160400161503e565b509695505050505050565b600080600060a084860312156150ab57600080fd5b6150b58585614a6e565b925060608401356150c581614fe5565b915060808401356001600160401b038111156150e057600080fd5b6150ec86828701614ffa565b9150509250925092565b600082601f83011261510757600080fd5b813560206151176149ac83614941565b80838252602082019150606060206060860288010194508785111561513b57600080fd5b602087015b8581101561515f576151528982614a6e565b8452928401928101615140565b5090979650505050505050565b600082601f83011261517d57600080fd5b8135602061518d6149ac83614941565b8083825260208201915060208460051b8701019350868411156151af57600080fd5b602086015b8481101561508b5780356151c781614fe5565b83529183019183016151b4565b600082601f8301126151e557600080fd5b813560206151f56149ac83614941565b82815260059290921b8401810191818101908684111561521457600080fd5b8286015b8481101561508b5780356001600160401b038111156152375760008081fd5b6152458986838b0101614ffa565b845250918301918301615218565b600080600080600080600080610100898b03121561527057600080fd5b615279896146cc565b975061528760208a016146cc565b965061529560408a016146cc565b95506152a360608a016146cc565b94506080890135935060a08901356001600160401b03808211156152c657600080fd5b6152d28c838d016150f6565b945060c08b01359150808211156152e857600080fd5b6152f48c838d0161516c565b935060e08b013591508082111561530a57600080fd5b506153178b828c016151d4565b9150509295985092959890939650565b60208101610f408284614a18565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156153a85760208185018101518683018201520161538c565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006129b66020830184615382565b6000602082840312156153ed57600080fd5b81516129b6816146b7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561545457600080fd5b815180151581146129b657600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126154c357600080fd5b8301803591506001600160401b038211156154dd57600080fd5b6020019150600581901b36038213156142b057600080fd5b60006020828403121561550757600080fd5b81516129b68161466d565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f4057610f40615512565b6000808585111561554b57600080fd5b8386111561555857600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a166020860152604089604087015260c0606087015283895180865260e08801915060208b01955060005b818110156155cd578651805160ff16845286015185168684015295850195918301916001016155a3565b505060808701989098525050505060a09091019190915250949350505050565b6000604082840312156155ff57600080fd5b6129b68383614b47565b81810381811115610f4057610f40615512565b60006001820161562e5761562e615512565b5060010190565b60018060a01b038416815282602082015260606040820152600061565c6060830184615382565b95945050505050565b60006020828403121561567757600080fd5b81516001600160c01b03811681146129b657600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826156b3576156b361568e565b500690565b6001600160a01b038316815260406020820181905260009061482890830184615382565b8281526040602082015260006148286040830184615382565b60006020828403121561570757600080fd5b5051919050565b6001600160a01b03841681526101608101615736602083018580358252602090810135910152565b615750606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614828565b60018060a01b03831681526040602082015260008251606060408401526157a860a0840182615382565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061565c90830184866157c9565b60018060a01b038516815283602082015260606040820152600061198f6060830184866157c9565b600082601f83011261585057600080fd5b815160206158606149ac83614941565b8083825260208201915060208460051b87010193508684111561588257600080fd5b602086015b8481101561508b57805161589a81614fe5565b8352918301918301615887565b600080604083850312156158ba57600080fd5b82516001600160401b03808211156158d157600080fd5b6158dd8683870161583f565b935060208501519150808211156158f357600080fd5b506159008582860161583f565b9150509250929050565b83815260406020820152600061565c6040830184866157c9565b6000602080838503121561593757600080fd5b82516001600160401b0381111561594d57600080fd5b8301601f8101851361595e57600080fd5b805161596c6149ac82614941565b81815260059190911b8201830190838101908783111561598b57600080fd5b928401925b828410156149f75783516159a38161466d565b82529284019290840190615990565b6000602082840312156159c457600080fd5b81516129b681614fe5565b60ff8181168382160190811115610f4057610f40615512565b60006060820160ff8616835260206001600160601b03808716602086015260406060604087015283875180865260808801915060208901955060005b81811015615a5457865180516001600160a01b031684528601518516868401529585019591830191600101615a24565b50909a9950505050505050505050565b600061ffff808316818103615a7b57615a7b615512565b6001019392505050565b600060208284031215615a9757600080fd5b81516001600160e01b0319811681146129b657600080fd5b6001600160601b03818116838216028082169190828114615ad257615ad2615512565b505092915050565b60006001600160601b0380841680615af457615af461568e565b9216919091049291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207d5f90e3401cb54ad55455b7cbc4f8abf3101a8a6465b53d917fe6ec5da1e0c764736f6c63430008180033","gas_used":4706930,"gas_limit":6245022,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b506004361061035c5760003560e01c80635b0b829f116101d35780639e9923c211610104578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610897578063f2fde38b1461093a578063fabc1cbc1461094d578063fd39105a1461096057600080fd5b8063d72d8dd614610869578063d75b4c8814610871578063dd8283f31461088457600080fd5b8063a96f783e116100de578063a96f783e14610806578063c391425e1461080f578063ca0de8821461082f578063ca4f2d971461085657600080fd5b80639e9923c2146107a55780639feab859146107cc578063a50857bf146107f357600080fd5b8063715018a611610171578063886f11951161014b578063886f1195146107525780638da5cb5b1461076b5780639aa1653d146107735780639b5d177b1461079257600080fd5b8063715018a61461072457806384ca52131461072c578063871ef0491461073f57600080fd5b80636347c900116101ad5780636347c900146106c457806368304835146106d75780636c708904146106fe5780636e3b17db1461071157600080fd5b80635b0b829f146106825780635c975abb146106955780635df459461461069d57600080fd5b8063249a0c42116102ad5780633af32abf1161024b57806353abfad41161022557806353abfad4146106285780635865c60c1461063b578063595c6a671461065b5780635ac86ab71461066357600080fd5b80633af32abf146105c95780633c2a7f4c146105f55780635140a5481461061557600080fd5b8063296bb06411610287578063296bb0641461056957806329d1e0c31461057c5780632cdd1e861461058f5780633998fdd3146105a257600080fd5b8063249a0c421461052357806328f61b311461054357806329092d0e1461055657600080fd5b80630d3f21341161031a57806313542a4e116102f457806313542a4e1461046b578063136439dd146104945780631478851f146104a75780631eb812da146104da57600080fd5b80630d3f21341461042557806310d67a2f14610438578063125e05841461044b57600080fd5b8062cf2ab51461036157806303fd34921461037657806304ec6351146103a9578063054310e6146103d45780630a3b0a4f146103ff5780630cf4b76714610412575b600080fd5b61037461036f366004614613565b61099c565b005b610396610384366004614654565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6103bc6103b736600461467f565b610aaa565b6040516001600160c01b0390911681526020016103a0565b609d546103e7906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b61037461040d3660046146dc565b610bba565b6103746104203660046147e0565b610c0e565b610374610433366004614654565b610cb8565b6103746104463660046146dc565b610cc5565b6103966104593660046146dc565b609f6020526000908152604090205481565b6103966104793660046146dc565b6001600160a01b031660009081526099602052604090205490565b6103746104a2366004614654565b610d78565b6104ca6104b5366004614654565b609a6020526000908152604090205460ff1681565b60405190151581526020016103a0565b6104ed6104e8366004614830565b610eb5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016103a0565b610396610531366004614863565b609b6020526000908152604090205481565b609e546103e7906001600160a01b031681565b6103746105643660046146dc565b610f46565b6103e7610577366004614654565b610f97565b61037461058a3660046146dc565b611023565b61037461059d3660046146dc565b611034565b6103e77f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b6104ca6105d73660046146dc565b6001600160a01b0316600090815260c8602052604090205460ff1690565b6106086106033660046146dc565b611045565b6040516103a0919061487e565b6103746106233660046148d6565b6110c4565b610374610636366004614964565b61149a565b61064e6106493660046146dc565b611560565b6040516103a09190614a3a565b6103746115d4565b6104ca610671366004614863565b6001805460ff9092161b9081161490565b610374610690366004614abf565b6116a0565b600154610396565b6103e77f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b6103e76106d2366004614654565b6116fa565b6103e77f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b61037461070c366004614964565b611724565b61037461071f366004614af3565b6117e6565b61037461193b565b61039661073a366004614b87565b61194f565b6103bc61074d366004614654565b611999565b6000546103e7906201000090046001600160a01b031681565b6103e76119a4565b6096546107809060ff1681565b60405160ff90911681526020016103a0565b6103746107a0366004614d20565b6119bd565b6103e77f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377881565b6103967f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b610374610801366004614e19565b611cd6565b61039660a05481565b61082261081d366004614ec1565b611e3b565b6040516103a09190614f66565b6103967f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b610374610864366004614fb0565b611eea565b609c54610396565b61037461087f366004615096565b611f50565b610374610892366004615253565b611f63565b6109066108a5366004614863565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016103a0565b6103746109483660046146dc565b612223565b61037461095b366004614654565b612299565b61098f61096e3660046146dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103a09190615327565b6001546002906004908116036109cd5760405162461bcd60e51b81526004016109c490615335565b60405180910390fd5b60005b82811015610aa45760008484838181106109ec576109ec61536c565b9050602002016020810190610a0191906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610a4c57610a4c614a02565b6002811115610a5d57610a5d614a02565b90525080519091506000610a70826123f5565b90506000610a86826001600160c01b0316612460565b9050610a9385858361252c565b5050600190930192506109d0915050565b50505050565b6000838152609860205260408120805482919084908110610acd57610acd61536c565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610b535760405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b60448201526064016109c4565b602081015163ffffffff161580610b795750806020015163ffffffff168463ffffffff16105b610bae5760405162461bcd60e51b81526004016109c49060208082526004908201526331371e1960e11b604082015260600190565b60400151949350505050565b610bc2612619565b6001600160a01b038116600081815260c86020526040808220805460ff19166001179055517f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9190a250565b60013360009081526099602052604090206001015460ff166002811115610c3757610c37614a02565b14610c6c5760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610cad9084906153c8565b60405180910390a250565b610cc0612619565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c91906153db565b6001600160a01b0316336001600160a01b031614610d6c5760405162461bcd60e51b81526004016109c4906153f8565b610d7581612678565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190615442565b610e055760405162461bcd60e51b81526004016109c490615464565b60015481811614610e7e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610cad565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ef257610ef261536c565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b610f4e612619565b6001600160a01b038116600081815260c86020526040808220805460ff19169055517f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9190a250565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316906347b314e890602401602060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4091906153db565b61102b612619565b610d758161277d565b61103c612619565b610d75816127e6565b6040805180820190915260008082526020820152610f406110bf7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016110a49291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061284f565b61289d565b6001546002906004908116036110ec5760405162461bcd60e51b81526004016109c490615335565b600061113484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905084831461116e5760405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b60448201526064016109c4565b60005b8381101561149157600085858381811061118d5761118d61536c565b919091013560f81c915036905060008989858181106111ae576111ae61536c565b90506020028101906111c091906154ac565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03169063f341092290602401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154f5565b63ffffffff16811461128f5760405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b60448201526064016109c4565b6000805b828110156114365760008484838181106112af576112af61536c565b90506020020160208101906112c491906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561130f5761130f614a02565b600281111561132057611320614a02565b90525080519091506000611333826123f5565b905060016001600160c01b03821660ff8b161c8116146113805760405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b60448201526064016109c4565b856001600160a01b0316846001600160a01b0316116113cb5760405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b60448201526064016109c4565b5061142983838f8f8d908e60016113e29190615528565b926113ef9392919061553b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252c92505050565b5090925050600101611293565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611171565b50505050505050565b6114a2612619565b60005b815181101561155c57600060c860008484815181106114c6576114c661536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106115175761151761536c565b60200260200101516001600160a01b03167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc60405160405180910390a26001016114a5565b5050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115ba576115ba614a02565b60028111156115cb576115cb614a02565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116459190615442565b6116615760405162461bcd60e51b81526004016109c490615464565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a8612619565b609654829060ff908116908216106116eb5760405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b60448201526064016109c4565b6116f583836129bd565b505050565b609c818154811061170a57600080fd5b6000918252602090912001546001600160a01b0316905081565b61172c612619565b60005b815181101561155c57600160c860008484815181106117505761175061536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106117a1576117a161536c565b60200260200101516001600160a01b03167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f60405160405180910390a260010161172f565b609e546001600160a01b0316331461182d5760405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b60448201526064016109c4565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161189a9187908790819084018382808284376000920191909152505060965460ff16915061292c9050565b905060006118a7836123f5565b905060018085015460ff1660028111156118c3576118c3614a02565b1480156118d857506001600160c01b03821615155b80156118f657506118f66001600160c01b0383811690831681161490565b15611491576114918787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611943612619565b61194d6000612df2565b565b600061198f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a87878787876040516020016110a496959493929190615565565b9695505050505050565b6000610f40826123f5565b60006119b86064546001600160a01b031690565b905090565b60018054600091908116036119e45760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611a355760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b838914611a6d5760405162461bcd60e51b81526004016109c49060208082526004908201526338a632b760e11b604082015260600190565b6000611a793388612e44565b9050611ad933828888808060200260200160405190810160405280939291908181526020016000905b82821015611ace57611abf604083028601368190038101906155ed565b81526020019060010190611aa2565b505050505087612f79565b6000611b2033838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b90506000609760008e8e6000818110611b3b57611b3b61536c565b919091013560f81c825250602080820192909252604090810160009081208251606081018452905463ffffffff811680835261ffff600160201b8304811696840196909652600160301b909104909416928101929092528451805192945091611ba657611ba661536c565b602002602001015163ffffffff161115611cc757611c4b8d8d6000818110611bd057611bd061536c565b9050013560f81c60f81b60f81c8360400151600081518110611bf457611bf461536c565b6020026020010151338560200151600081518110611c1457611c1461536c565b60200260200101518c8c6000818110611c2f57611c2f61536c565b905060400201803603810190611c4591906155ed565b86613519565b611cc788886000818110611c6157611c6161536c565b9050604002016020016020810190611c7991906146dc565b8e8e600090600192611c8d9392919061553b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b50505050505050505050505050565b6001805460009190811603611cfd5760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611d4e5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b6000611d5a3385612e44565b90506000611da333838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b51600080805260976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c754825192935063ffffffff1691839190611deb57611deb61536c565b602002602001015163ffffffff161115611e305760405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b60448201526064016109c4565b505050505050505050565b6060600082516001600160401b03811115611e5857611e586146f9565b604051908082528060200260200182016040528015611e81578160200160208202803683370190505b50905060005b8351811015611ee257611eb385858381518110611ea657611ea661536c565b60200260200101516136e8565b828281518110611ec557611ec561536c565b63ffffffff90921660209283029190910190910152600101611e87565b509392505050565b60018054600290811603611f105760405162461bcd60e51b81526004016109c490615335565b6116f53384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611f58612619565b6116f58383836137a1565b600054610100900460ff1615808015611f835750600054600160ff909116105b80611f9d5750303b158015611f9d575060005460ff166001145b6120005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109c4565b6000805460ff191660011790558015612023576000805461ff0019166101001790555b82518451148015612035575081518351145b6120665760405162461bcd60e51b8152602060048201526002602482015261494560f01b60448201526064016109c4565b61206f89612df2565b6120798686613983565b6120828861277d565b61208b876127e6565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81166001600160a01b03199283161790925585548085018755850180547f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49841690831617905585549384019095559190920180547f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377890921691909316179091555b84518110156121d2576121ca8582815181106121895761218961536c565b60200260200101518583815181106121a3576121a361536c565b60200260200101518584815181106121bd576121bd61536c565b60200260200101516137a1565b60010161216b565b508015611e30576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61222b612619565b6001600160a01b0381166122905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c4565b610d7581612df2565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231091906153db565b6001600160a01b0316336001600160a01b0316146123405760405162461bcd60e51b81526004016109c4906153f8565b6001541981196001541916146123be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cad565b6000818152609860205260408120548082036124145750600092915050565b600083815260986020526040902061242d600183615609565b8154811061243d5761243d61536c565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061246e84613a6f565b61ffff166001600160401b03811115612489576124896146f9565b6040519080825280601f01601f1916602001820160405280156124b3576020820181803683370190505b5090506000805b8251821080156124cb575061010081105b15612522576001811b935085841615612512578060f81b8383815181106124f4576124f461536c565b60200101906001600160f81b031916908160001a9053508160010191505b61251b8161561c565b90506124ba565b5090949350505050565b60018260200151600281111561254457612544614a02565b1461254e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16906366acfefe906125a390889086908890600401615635565b6020604051808303816000875af11580156125c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e69190615665565b90506001600160c01b03811615612612576126128561260d836001600160c01b0316612460565b612a6a565b5050505050565b336126226119a4565b6001600160a01b03161461194d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c4565b6001600160a01b0381166127065760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016109c4565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f4061285c613a9a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806128cd600080516020615b01833981519152866156a4565b90505b6128d981613bc1565b9093509150600080516020615b018339815191528283098303612912576040805180820190915290815260208101919091529392505050565b600080516020615b018339815191526001820890506128d0565b60008061293884613c43565b9050808360ff166001901b116129b65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016109c4565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612a9e57612a9e614a02565b14612ad35760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b609654600090612ae790859060ff1661292c565b90506000612af4836123f5565b90506001600160c01b038216612b355760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b612b4c6001600160c01b0383811690831681161490565b612b815760405162461bcd60e51b81526004016109c49060208082526004908201526310a9bab160e11b604082015260600190565b6001600160c01b0382811619821616612b9a8482613dcb565b6001600160c01b038116612c695760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169063a364f4da90602401600060405180830381600087803b158015612c1a57600080fd5b505af1158015612c2e573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49169063f4e24fe590612cb7908a908a906004016156b8565b600060405180830381600087803b158015612cd157600080fd5b505af1158015612ce5573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16925063bd29b8cd9150612d379087908a906004016156dc565b600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377816925063bd29b8cd9150612db79087908a906004016156dc565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49909116906313542a4e90602401602060405180830381865afa158015612eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed391906156f5565b90506000819003610f40577f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031663bf79ce588484612f1887611045565b6040518463ffffffff1660e01b8152600401612f369392919061570e565b6020604051808303816000875af1158015612f55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b691906156f5565b6020808201516000908152609a909152604090205460ff1615612fc75760405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b60448201526064016109c4565b42816040015110156130035760405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b60448201526064016109c4565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610aa4926001600160a01b039092169161304e918891889188919061194f565b8351613f8c565b61307960405180606001604052806060815260200160608152602001606081525090565b60006130c186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905060006130ce886123f5565b90506001600160c01b03821661310f5760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b8082166001600160c01b0316156131515760405162461bcd60e51b81526004016109c49060208082526004908201526308509a5d60e21b604082015260600190565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b03838116908516179142916131899190615528565b106131be5760405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b60448201526064016109c4565b6131c88982613dcb565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131f891906153c8565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561323257613232614a02565b1461334b576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561328d5761328d614a02565b021790555050604051639926ee7d60e01b81526001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169150639926ee7d906132e2908d90899060040161577e565b600060405180830381600087803b1580156132fc57600080fd5b505af1158015613310573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc491690633fb279529061339b908d908c908c906004016157f2565b600060405180830381600087803b1580156133b557600080fd5b505af11580156133c9573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1692506325504777915061341f908d908d908d908d90600401615817565b6000604051808303816000875af115801561343e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346691908101906158a7565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778169062bff04d906134c3908c908c908c9060040161590a565b6000604051808303816000875af11580156134e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350a9190810190615924565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152600360248201526206368360ec1b60448201526064016109c4565b8760ff16846000015160ff16146135b15760405162461bcd60e51b815260206004820152600360248201526263683160e81b60448201526064016109c4565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690635401ed2790604401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364691906159b2565b90506136528185614146565b6001600160601b0316866001600160601b0316116136985760405162461bcd60e51b815260206004820152600360248201526231b41960e91b60448201526064016109c4565b6136a2888561416a565b6001600160601b0316816001600160601b031610611e305760405162461bcd60e51b815260206004820152600360248201526263683360e81b60448201526064016109c4565b600081815260986020526040812054815b8181101561377057600161370d8284615609565b6137179190615609565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061374a5761374a61536c565b60009182526020909120015463ffffffff1611613768575050610f40565b6001016136f9565b5060405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b60448201526064016109c4565b60965460ff1660c081106137e05760405162461bcd60e51b81526004016109c4906020808252600490820152630e29ac2f60e31b604082015260600190565b6137eb8160016159cf565b6096805460ff191660ff929092169190911790558061380a81866129bd565b60405160016296b58960e01b031981526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e169063ff694a779061385d908490889088906004016159e8565b600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561396f57600080fd5b505af1158015611e30573d6000803e3d6000fd5b6000546201000090046001600160a01b03161580156139aa57506001600160a01b03821615155b613a2c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261155c82612678565b6000805b8215610f4057613a84600184615609565b9092169180613a9281615a64565b915050613a73565b6000306001600160a01b037f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57016148015613af357507f0000000000000000000000000000000000000000000000000000000000007a6946145b15613b1d57507fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d11828401527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615b018339815191526003600080516020615b0183398151915286600080516020615b01833981519152888909090890506000613c37827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615b01833981519152614184565b91959194509092505050565b600061010082511115613ccc5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016109c4565b8151600003613cdd57506000919050565b60008083600081518110613cf357613cf361536c565b0160200151600160f89190911c81901b92505b8451811015613dc257848181518110613d2157613d2161536c565b0160200151600160f89190911c1b9150828211613db65760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016109c4565b91811791600101613d06565b50909392505050565b60008281526098602052604081205490819003613e73576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120613e8c600184615609565b81548110613e9c57613e9c61536c565b6000918252602090912001805490915063ffffffff438116911603613ede5780546001600160401b0316600160401b6001600160c01b03851602178155610aa4565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156140a657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613fcc90869086906004016156dc565b602060405180830381865afa158015613fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400d9190615a85565b6001600160e01b031916146116f55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016109c4565b826001600160a01b03166140ba838361422d565b6001600160a01b0316146116f55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016109c4565b6020810151600090612710906141609061ffff1685615aaf565b6129b69190615ada565b6040810151600090612710906141609061ffff1685615aaf565b60008061418f614593565b6141976145b1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806141d457fe5b50826142225760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016109c4565b505195945050505050565b600080600061423c8585614249565b91509150611ee2816142b7565b600080825160410361427f5760208301516040840151606085015160001a6142738782858561446d565b945094505050506142b0565b82516040036142a8576020830151604084015161429d86838361455a565b9350935050506142b0565b506000905060025b9250929050565b60008160048111156142cb576142cb614a02565b036142d35750565b60018160048111156142e7576142e7614a02565b036143345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109c4565b600281600481111561434857614348614a02565b036143955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109c4565b60038160048111156143a9576143a9614a02565b036144015760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109c4565b600481600481111561441557614415614a02565b03610d755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109c4565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144a45750600090506003614551565b8460ff16601b141580156144bc57508460ff16601c14155b156144cd5750600090506004614551565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614521573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661454a57600060019250925050614551565b9150600090505b94509492505050565b6000806001600160ff1b0383168161457760ff86901c601b615528565b90506145858782888561446d565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126145e157600080fd5b5081356001600160401b038111156145f857600080fd5b6020830191508360208260051b85010111156142b057600080fd5b6000806020838503121561462657600080fd5b82356001600160401b0381111561463c57600080fd5b614648858286016145cf565b90969095509350505050565b60006020828403121561466657600080fd5b5035919050565b63ffffffff81168114610d7557600080fd5b60008060006060848603121561469457600080fd5b8335925060208401356146a68161466d565b929592945050506040919091013590565b6001600160a01b0381168114610d7557600080fd5b80356146d7816146b7565b919050565b6000602082840312156146ee57600080fd5b81356129b6816146b7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614731576147316146f9565b60405290565b604080519081016001600160401b0381118282101715614731576147316146f9565b604051601f8201601f191681016001600160401b0381118282101715614781576147816146f9565b604052919050565b60006001600160401b038311156147a2576147a26146f9565b6147b5601f8401601f1916602001614759565b90508281528383830111156147c957600080fd5b828260208301376000602084830101529392505050565b6000602082840312156147f257600080fd5b81356001600160401b0381111561480857600080fd5b8201601f8101841361481957600080fd5b61482884823560208401614789565b949350505050565b6000806040838503121561484357600080fd5b50508035926020909101359150565b803560ff811681146146d757600080fd5b60006020828403121561487557600080fd5b6129b682614852565b815181526020808301519082015260408101610f40565b60008083601f8401126148a757600080fd5b5081356001600160401b038111156148be57600080fd5b6020830191508360208285010111156142b057600080fd5b600080600080604085870312156148ec57600080fd5b84356001600160401b038082111561490357600080fd5b61490f888389016145cf565b9096509450602087013591508082111561492857600080fd5b5061493587828801614895565b95989497509550505050565b60006001600160401b0382111561495a5761495a6146f9565b5060051b60200190565b6000602080838503121561497757600080fd5b82356001600160401b0381111561498d57600080fd5b8301601f8101851361499e57600080fd5b80356149b16149ac82614941565b614759565b81815260059190911b820183019083810190878311156149d057600080fd5b928401925b828410156149f75783356149e8816146b7565b825292840192908401906149d5565b979650505050505050565b634e487b7160e01b600052602160045260246000fd5b60038110614a3657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614a5590840182614a18565b5092915050565b803561ffff811681146146d757600080fd5b600060608284031215614a8057600080fd5b614a8861470f565b90508135614a958161466d565b8152614aa360208301614a5c565b6020820152614ab460408301614a5c565b604082015292915050565b60008060808385031215614ad257600080fd5b614adb83614852565b9150614aea8460208501614a6e565b90509250929050565b600080600060408486031215614b0857600080fd5b8335614b13816146b7565b925060208401356001600160401b03811115614b2e57600080fd5b614b3a86828701614895565b9497909650939450505050565b600060408284031215614b5957600080fd5b614b61614737565b9050614b6c82614852565b81526020820135614b7c816146b7565b602082015292915050565b600080600080600060a08688031215614b9f57600080fd5b8535614baa816146b7565b945060208681013594506040808801356001600160401b03811115614bce57600080fd5b8801601f81018a13614bdf57600080fd5b8035614bed6149ac82614941565b8082825260208201915060208360061b85010192508c831115614c0f57600080fd5b6020840193505b82841015614c3757614c288d85614b47565b82529284019290850190614c16565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614c6757600080fd5b50919050565b60008083601f840112614c7f57600080fd5b5081356001600160401b03811115614c9657600080fd5b6020830191508360208260061b85010111156142b057600080fd5b600060608284031215614cc357600080fd5b614ccb61470f565b905081356001600160401b03811115614ce357600080fd5b8201601f81018413614cf457600080fd5b614d0384823560208401614789565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614d3f57600080fd5b89356001600160401b0380821115614d5657600080fd5b614d628d838e01614895565b909b50995060208c0135915080821115614d7b57600080fd5b614d878d838e01614895565b9099509750879150614d9c8d60408e01614c54565b96506101408c0135915080821115614db357600080fd5b614dbf8d838e01614c6d565b90965094506101608c0135915080821115614dd957600080fd5b614de58d838e01614cb1565b93506101808c0135915080821115614dfc57600080fd5b50614e098c828d01614cb1565b9150509295985092959850929598565b6000806000806000806101608789031215614e3357600080fd5b86356001600160401b0380821115614e4a57600080fd5b614e568a838b01614895565b90985096506020890135915080821115614e6f57600080fd5b614e7b8a838b01614895565b9096509450849150614e908a60408b01614c54565b9350610140890135915080821115614ea757600080fd5b50614eb489828a01614cb1565b9150509295509295509295565b60008060408385031215614ed457600080fd5b8235614edf8161466d565b91506020838101356001600160401b03811115614efb57600080fd5b8401601f81018613614f0c57600080fd5b8035614f1a6149ac82614941565b81815260059190911b82018301908381019088831115614f3957600080fd5b928401925b82841015614f5757833582529284019290840190614f3e565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614fa457835163ffffffff1683529284019291840191600101614f82565b50909695505050505050565b60008060208385031215614fc357600080fd5b82356001600160401b03811115614fd957600080fd5b61464885828601614895565b6001600160601b0381168114610d7557600080fd5b600082601f83011261500b57600080fd5b8135602061501b6149ac83614941565b82815260069290921b8401810191818101908684111561503a57600080fd5b8286015b8481101561508b57604081890312156150575760008081fd5b61505f614737565b813561506a816146b7565b81528185013561507981614fe5565b8186015283529183019160400161503e565b509695505050505050565b600080600060a084860312156150ab57600080fd5b6150b58585614a6e565b925060608401356150c581614fe5565b915060808401356001600160401b038111156150e057600080fd5b6150ec86828701614ffa565b9150509250925092565b600082601f83011261510757600080fd5b813560206151176149ac83614941565b80838252602082019150606060206060860288010194508785111561513b57600080fd5b602087015b8581101561515f576151528982614a6e565b8452928401928101615140565b5090979650505050505050565b600082601f83011261517d57600080fd5b8135602061518d6149ac83614941565b8083825260208201915060208460051b8701019350868411156151af57600080fd5b602086015b8481101561508b5780356151c781614fe5565b83529183019183016151b4565b600082601f8301126151e557600080fd5b813560206151f56149ac83614941565b82815260059290921b8401810191818101908684111561521457600080fd5b8286015b8481101561508b5780356001600160401b038111156152375760008081fd5b6152458986838b0101614ffa565b845250918301918301615218565b600080600080600080600080610100898b03121561527057600080fd5b615279896146cc565b975061528760208a016146cc565b965061529560408a016146cc565b95506152a360608a016146cc565b94506080890135935060a08901356001600160401b03808211156152c657600080fd5b6152d28c838d016150f6565b945060c08b01359150808211156152e857600080fd5b6152f48c838d0161516c565b935060e08b013591508082111561530a57600080fd5b506153178b828c016151d4565b9150509295985092959890939650565b60208101610f408284614a18565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156153a85760208185018101518683018201520161538c565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006129b66020830184615382565b6000602082840312156153ed57600080fd5b81516129b6816146b7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561545457600080fd5b815180151581146129b657600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126154c357600080fd5b8301803591506001600160401b038211156154dd57600080fd5b6020019150600581901b36038213156142b057600080fd5b60006020828403121561550757600080fd5b81516129b68161466d565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f4057610f40615512565b6000808585111561554b57600080fd5b8386111561555857600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a166020860152604089604087015260c0606087015283895180865260e08801915060208b01955060005b818110156155cd578651805160ff16845286015185168684015295850195918301916001016155a3565b505060808701989098525050505060a09091019190915250949350505050565b6000604082840312156155ff57600080fd5b6129b68383614b47565b81810381811115610f4057610f40615512565b60006001820161562e5761562e615512565b5060010190565b60018060a01b038416815282602082015260606040820152600061565c6060830184615382565b95945050505050565b60006020828403121561567757600080fd5b81516001600160c01b03811681146129b657600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826156b3576156b361568e565b500690565b6001600160a01b038316815260406020820181905260009061482890830184615382565b8281526040602082015260006148286040830184615382565b60006020828403121561570757600080fd5b5051919050565b6001600160a01b03841681526101608101615736602083018580358252602090810135910152565b615750606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614828565b60018060a01b03831681526040602082015260008251606060408401526157a860a0840182615382565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061565c90830184866157c9565b60018060a01b038516815283602082015260606040820152600061198f6060830184866157c9565b600082601f83011261585057600080fd5b815160206158606149ac83614941565b8083825260208201915060208460051b87010193508684111561588257600080fd5b602086015b8481101561508b57805161589a81614fe5565b8352918301918301615887565b600080604083850312156158ba57600080fd5b82516001600160401b03808211156158d157600080fd5b6158dd8683870161583f565b935060208501519150808211156158f357600080fd5b506159008582860161583f565b9150509250929050565b83815260406020820152600061565c6040830184866157c9565b6000602080838503121561593757600080fd5b82516001600160401b0381111561594d57600080fd5b8301601f8101851361595e57600080fd5b805161596c6149ac82614941565b81815260059190911b8201830190838101908783111561598b57600080fd5b928401925b828410156149f75783516159a38161466d565b82529284019290840190615990565b6000602082840312156159c457600080fd5b81516129b681614fe5565b60ff8181168382160190811115610f4057610f40615512565b60006060820160ff8616835260206001600160601b03808716602086015260406060604087015283875180865260808801915060208901955060005b81811015615a5457865180516001600160a01b031684528601518516868401529585019591830191600101615a24565b50909a9950505050505050505050565b600061ffff808316818103615a7b57615a7b615512565b6001019392505050565b600060208284031215615a9757600080fd5b81516001600160e01b0319811681146129b657600080fd5b6001600160601b03818116838216028082169190828114615ad257615ad2615512565b505092915050565b60006001600160601b0380841680615af457615af461568e565b9216919091049291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207d5f90e3401cb54ad55455b7cbc4f8abf3101a8a6465b53d917fe6ec5da1e0c764736f6c63430008180033","nonce":47,"gas_used":5133604},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x4e5524","logs":[{"address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000001000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000"},"block_hash":"0x2a101f0fe94131bc266fd4a2a1ed44fc03ccf06310dee9943513aa0783839454","block_number":7},{"info":{"transaction_hash":"0xd44073f051108c8f3c39edf183d0bcaea084672b414c2374c6d6750e9ef9fa27","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xdf5b3547000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":38658,"gas_limit":66767,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xdf5b3547000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":31336,"gas_limit":58554,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x","nonce":30,"gas_used":60778},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xed6a","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000000000000000000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000002000000000000000000000000000000000000000000000000000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0x0e637d647581fe5de6fcbcd11328753276819facc3fd30917ff91c0602dcdcb1","block_number":17},{"info":{"transaction_hash":"0xbd915f86d3825918e7b3e23f3a26470ab72a7643e95da39926f2f79c5e79e809","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x09635f643e140090a9a8dcd712ed6285858cebef","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b506105298061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033","output":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033","gas_used":264506,"gas_limit":365977,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033","nonce":27,"gas_used":338612},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1dd7a5","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x81783d9d97c1968230d9d30cfdaa4670bb20c462f55b2c8713d06d119b5de3f7","block_number":14},{"info":{"transaction_hash":"0xd4bc553858d9284ea2380fa803173ac8864efeb45752b89fc1ab2c45958a1d1d","transaction_index":3,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0165878a594ca255338adfa4d48449f69242eb8f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":6,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x22fcb8","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851","block_number":3},{"info":{"transaction_hash":"0x827ffa4ca4cea822e05fb27b290eee847860bb15431bdace00adf814eaed3bac","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec400000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137780000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","output":"0x","gas_used":17021,"gas_limit":31821,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe60000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","output":"0x","gas_used":11547,"gas_limit":25979,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":42,"gas_used":38821},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x113588","logs":[{"address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000080000008000000000000000000000000000000000000000"},"block_hash":"0x659d0a1c2c9b1aaa8dcd8df9a51c1ced49fc8d55bed17519f0c69bbbc6e471db","block_number":5},{"info":{"transaction_hash":"0x9d63d02dcfd8e6a02a790d9642c049e0c622089ff1dc818e8f3c4bffb2c9da06","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b50611dbf806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113b8565b610131565b60405161008791906114a7565b60405180910390f35b6100a361009e3660046114e3565b610245565b6040516100879190611641565b6100c36100be3660046116be565b6106c5565b604051610087919061170d565b6100e36100de3660046117a5565b6107d2565b604051610087919061189e565b6101036100fe366004611959565b610eea565b60405161008791906119bc565b61012361011e3660046119f4565b6110a8565b604051610087929190611a2b565b606081516001600160401b0381111561014c5761014c61134f565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b03166313542a4e8483815181106101a5576101a5611a4c565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a62565b82828151811061022b5761022b611a4c565b602090810291909101015260010161017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ab9190611a7b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190611a7b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190611a7b565b9050600086516001600160401b038111156103945761039461134f565b6040519080825280602002602001820160405280156103c757816020015b60608152602001906001900390816103b25790505b50905060005b87518110156106b95760008882815181106103ea576103ea611a4c565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa15801561044b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104739190810190611a98565b905080516001600160401b0381111561048e5761048e61134f565b6040519080825280602002602001820160405280156104d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104ac5790505b508484815181106104ec576104ec611a4c565b602002602001018190525060005b81518110156106ae576040518060600160405280876001600160a01b03166347b314e885858151811061052f5761052f611a4c565b60200260200101516040518263ffffffff1660e01b815260040161055591815260200190565b602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105969190611a7b565b6001600160a01b031681526020018383815181106105b6576105b6611a4c565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105e4576105e4611a4c565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611b28565b6001600160601b031681525085858151811061068257610682611a4c565b6020026020010151828151811061069b5761069b611a4c565b60209081029190910101526001016104fa565b5050506001016103cd565b50979650505050505050565b606081516001600160401b038111156106e0576106e061134f565b604051908082528060200260200182016040528015610709578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b031663296bb06484838151811061073957610739611a4c565b60200260200101516040518263ffffffff1660e01b815260040161075f91815260200190565b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611a7b565b8282815181106107b2576107b2611a4c565b6001600160a01b039092166020928302919091019091015260010161070f565b6107fd6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611a7b565b905061088e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108be908b9089908990600401611b51565b600060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109039190810190611b98565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290610935908b908b908b90600401611c4f565b600060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097a9190810190611b98565b6040820152856001600160401b038111156109975761099761134f565b6040519080825280602002602001820160405280156109ca57816020015b60608152602001906001900390816109b55790505b50606082015260005b60ff8116871115610dfb576000856001600160401b038111156109f8576109f861134f565b604051908082528060200260200182016040528015610a21578160200160208202803683370190505b5083606001518360ff1681518110610a3b57610a3b611a4c565b602002602001018190525060005b86811015610d055760008c6001600160a01b03166304ec63518a8a85818110610a7457610a74611a4c565b905060200201358e88600001518681518110610a9257610a92611a4c565b60200260200101516040518463ffffffff1660e01b8152600401610acf9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c78565b9050806001600160c01b0316600003610bbb5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bd057610bd0611a4c565b60016001600160c01b038516919093013560f81c1c82169091039050610cfc57856001600160a01b031663dd9846b98a8a85818110610c1157610c11611a4c565b905060200201358d8d8860ff16818110610c2d57610c2d611a4c565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ca1565b85606001518560ff1681518110610cc057610cc0611a4c565b60200260200101518481518110610cd957610cd9611a4c565b63ffffffff9092166020928302919091019091015282610cf881611cd4565b9350505b50600101610a49565b506000816001600160401b03811115610d2057610d2061134f565b604051908082528060200260200182016040528015610d49578160200160208202803683370190505b50905060005b82811015610dc05784606001518460ff1681518110610d7057610d70611a4c565b60200260200101518181518110610d8957610d89611a4c565b6020026020010151828281518110610da357610da3611a4c565b63ffffffff90921660209283029190910190910152600101610d4f565b508084606001518460ff1681518110610ddb57610ddb611a4c565b602002602001018190525050508080610df390611ced565b9150506109d3565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190611a7b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610e93908b908b908e90600401611d0c565b600060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed89190810190611b98565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f1c929190611d36565b600060405180830381865afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f619190810190611b98565b9050600084516001600160401b03811115610f7e57610f7e61134f565b604051908082528060200260200182016040528015610fa7578160200160208202803683370190505b50905060005b855181101561109e57866001600160a01b03166304ec6351878381518110610fd757610fd7611a4c565b602002602001015187868581518110610ff257610ff2611a4c565b60200260200101516040518463ffffffff1660e01b815260040161102f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c78565b6001600160c01b031682828151811061108b5761108b611a4c565b6020908102919091010152600101610fad565b5095945050505050565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106110e3576110e3611a4c565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e9061111f9088908690600401611d36565b600060405180830381865afa15801561113c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111649190810190611b98565b60008151811061117657611176611a4c565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190611c78565b6001600160c01b03169050600061121c8261123a565b90508161122a8a838a610245565b9550955050505050935093915050565b606060008061124884611306565b61ffff166001600160401b038111156112635761126361134f565b6040519080825280601f01601f19166020018201604052801561128d576020820181803683370190505b5090506000805b8251821080156112a5575061010081105b156112fc576001811b9350858416156112ec578060f81b8383815181106112ce576112ce611a4c565b60200101906001600160f81b031916908160001a9053508160010191505b6112f581611cd4565b9050611294565b5090949350505050565b6000805b82156113315761131b600184611d55565b909216918061132981611d68565b91505061130a565b92915050565b6001600160a01b038116811461134c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561138d5761138d61134f565b604052919050565b60006001600160401b038211156113ae576113ae61134f565b5060051b60200190565b600080604083850312156113cb57600080fd5b82356113d681611337565b91506020838101356001600160401b038111156113f257600080fd5b8401601f8101861361140357600080fd5b803561141661141182611395565b611365565b81815260059190911b8201830190838101908883111561143557600080fd5b928401925b8284101561145c57833561144d81611337565b8252928401929084019061143a565b80955050505050509250929050565b60008151808452602080850194506020840160005b8381101561149c57815187529582019590820190600101611480565b509495945050505050565b6020815260006114ba602083018461146b565b9392505050565b63ffffffff8116811461134c57600080fd5b80356114de816114c1565b919050565b6000806000606084860312156114f857600080fd5b833561150381611337565b92506020848101356001600160401b038082111561152057600080fd5b818701915087601f83011261153457600080fd5b8135818111156115465761154661134f565b611558601f8201601f19168501611365565b9150808252888482850101111561156e57600080fd5b8084840185840137600084828401015250809450505050611591604085016114d3565b90509250925092565b600082825180855260208086019550808260051b8401018186016000805b8581101561163357868403601f19018a52825180518086529086019086860190845b8181101561161e57835180516001600160a01b03168452898101518a8501526040908101516001600160601b031690840152928801926060909201916001016115da565b50509a86019a945050918401916001016115b8565b509198975050505050505050565b6020815260006114ba602083018461159a565b600082601f83011261166557600080fd5b8135602061167561141183611395565b8083825260208201915060208460051b87010193508684111561169757600080fd5b602086015b848110156116b3578035835291830191830161169c565b509695505050505050565b600080604083850312156116d157600080fd5b82356116dc81611337565b915060208301356001600160401b038111156116f757600080fd5b61170385828601611654565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561174e5783516001600160a01b031683529284019291840191600101611729565b50909695505050505050565b60008083601f84011261176c57600080fd5b5081356001600160401b0381111561178357600080fd5b6020830191508360208260051b850101111561179e57600080fd5b9250929050565b600080600080600080608087890312156117be57600080fd5b86356117c981611337565b955060208701356117d9816114c1565b945060408701356001600160401b03808211156117f557600080fd5b818901915089601f83011261180957600080fd5b81358181111561181857600080fd5b8a602082850101111561182a57600080fd5b60208301965080955050606089013591508082111561184857600080fd5b5061185589828a0161175a565b979a9699509497509295939492505050565b60008151808452602080850194506020840160005b8381101561149c57815163ffffffff168752958201959082019060010161187c565b6000602080835283516080828501526118ba60a0850182611867565b905081850151601f19808684030160408701526118d78383611867565b925060408701519150808684030160608701526118f48383611867565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561194b5784878303018452611939828751611867565b9588019593880193915060010161191f565b509998505050505050505050565b60008060006060848603121561196e57600080fd5b833561197981611337565b925060208401356001600160401b0381111561199457600080fd5b6119a086828701611654565b92505060408401356119b1816114c1565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561174e578351835292840192918401916001016119d8565b600080600060608486031215611a0957600080fd5b8335611a1481611337565b92506020840135915060408401356119b1816114c1565b828152604060208201526000611a44604083018461159a565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a7457600080fd5b5051919050565b600060208284031215611a8d57600080fd5b81516114ba81611337565b60006020808385031215611aab57600080fd5b82516001600160401b03811115611ac157600080fd5b8301601f81018513611ad257600080fd5b8051611ae061141182611395565b81815260059190911b82018301908381019087831115611aff57600080fd5b928401925b82841015611b1d57835182529284019290840190611b04565b979650505050505050565b600060208284031215611b3a57600080fd5b81516001600160601b03811681146114ba57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611b7e57600080fd5b8260051b8085606085013791909101606001949350505050565b60006020808385031215611bab57600080fd5b82516001600160401b03811115611bc157600080fd5b8301601f81018513611bd257600080fd5b8051611be061141182611395565b81815260059190911b82018301908381019087831115611bff57600080fd5b928401925b82841015611b1d578351611c17816114c1565b82529284019290840190611c04565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611c6f604083018486611c26565b95945050505050565b600060208284031215611c8a57600080fd5b81516001600160c01b03811681146114ba57600080fd5b600060208284031215611cb357600080fd5b81516114ba816114c1565b634e487b7160e01b600052601160045260246000fd5b600060018201611ce657611ce6611cbe565b5060010190565b600060ff821660ff8103611d0357611d03611cbe565b60010192915050565b604081526000611d20604083018587611c26565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a44604083018461146b565b8181038181111561133157611331611cbe565b600061ffff808316818103611d7f57611d7f611cbe565b600101939250505056fea26469706673582212202b3e36f430d5f7f12f8124a33676c0954c36bdaf4a71ac7e145cf85fb593480b64736f6c63430008180033","output":"0x608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113b8565b610131565b60405161008791906114a7565b60405180910390f35b6100a361009e3660046114e3565b610245565b6040516100879190611641565b6100c36100be3660046116be565b6106c5565b604051610087919061170d565b6100e36100de3660046117a5565b6107d2565b604051610087919061189e565b6101036100fe366004611959565b610eea565b60405161008791906119bc565b61012361011e3660046119f4565b6110a8565b604051610087929190611a2b565b606081516001600160401b0381111561014c5761014c61134f565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b03166313542a4e8483815181106101a5576101a5611a4c565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a62565b82828151811061022b5761022b611a4c565b602090810291909101015260010161017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ab9190611a7b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190611a7b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190611a7b565b9050600086516001600160401b038111156103945761039461134f565b6040519080825280602002602001820160405280156103c757816020015b60608152602001906001900390816103b25790505b50905060005b87518110156106b95760008882815181106103ea576103ea611a4c565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa15801561044b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104739190810190611a98565b905080516001600160401b0381111561048e5761048e61134f565b6040519080825280602002602001820160405280156104d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104ac5790505b508484815181106104ec576104ec611a4c565b602002602001018190525060005b81518110156106ae576040518060600160405280876001600160a01b03166347b314e885858151811061052f5761052f611a4c565b60200260200101516040518263ffffffff1660e01b815260040161055591815260200190565b602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105969190611a7b565b6001600160a01b031681526020018383815181106105b6576105b6611a4c565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105e4576105e4611a4c565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611b28565b6001600160601b031681525085858151811061068257610682611a4c565b6020026020010151828151811061069b5761069b611a4c565b60209081029190910101526001016104fa565b5050506001016103cd565b50979650505050505050565b606081516001600160401b038111156106e0576106e061134f565b604051908082528060200260200182016040528015610709578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b031663296bb06484838151811061073957610739611a4c565b60200260200101516040518263ffffffff1660e01b815260040161075f91815260200190565b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611a7b565b8282815181106107b2576107b2611a4c565b6001600160a01b039092166020928302919091019091015260010161070f565b6107fd6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611a7b565b905061088e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108be908b9089908990600401611b51565b600060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109039190810190611b98565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290610935908b908b908b90600401611c4f565b600060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097a9190810190611b98565b6040820152856001600160401b038111156109975761099761134f565b6040519080825280602002602001820160405280156109ca57816020015b60608152602001906001900390816109b55790505b50606082015260005b60ff8116871115610dfb576000856001600160401b038111156109f8576109f861134f565b604051908082528060200260200182016040528015610a21578160200160208202803683370190505b5083606001518360ff1681518110610a3b57610a3b611a4c565b602002602001018190525060005b86811015610d055760008c6001600160a01b03166304ec63518a8a85818110610a7457610a74611a4c565b905060200201358e88600001518681518110610a9257610a92611a4c565b60200260200101516040518463ffffffff1660e01b8152600401610acf9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c78565b9050806001600160c01b0316600003610bbb5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bd057610bd0611a4c565b60016001600160c01b038516919093013560f81c1c82169091039050610cfc57856001600160a01b031663dd9846b98a8a85818110610c1157610c11611a4c565b905060200201358d8d8860ff16818110610c2d57610c2d611a4c565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ca1565b85606001518560ff1681518110610cc057610cc0611a4c565b60200260200101518481518110610cd957610cd9611a4c565b63ffffffff9092166020928302919091019091015282610cf881611cd4565b9350505b50600101610a49565b506000816001600160401b03811115610d2057610d2061134f565b604051908082528060200260200182016040528015610d49578160200160208202803683370190505b50905060005b82811015610dc05784606001518460ff1681518110610d7057610d70611a4c565b60200260200101518181518110610d8957610d89611a4c565b6020026020010151828281518110610da357610da3611a4c565b63ffffffff90921660209283029190910190910152600101610d4f565b508084606001518460ff1681518110610ddb57610ddb611a4c565b602002602001018190525050508080610df390611ced565b9150506109d3565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190611a7b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610e93908b908b908e90600401611d0c565b600060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed89190810190611b98565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f1c929190611d36565b600060405180830381865afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f619190810190611b98565b9050600084516001600160401b03811115610f7e57610f7e61134f565b604051908082528060200260200182016040528015610fa7578160200160208202803683370190505b50905060005b855181101561109e57866001600160a01b03166304ec6351878381518110610fd757610fd7611a4c565b602002602001015187868581518110610ff257610ff2611a4c565b60200260200101516040518463ffffffff1660e01b815260040161102f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c78565b6001600160c01b031682828151811061108b5761108b611a4c565b6020908102919091010152600101610fad565b5095945050505050565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106110e3576110e3611a4c565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e9061111f9088908690600401611d36565b600060405180830381865afa15801561113c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111649190810190611b98565b60008151811061117657611176611a4c565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190611c78565b6001600160c01b03169050600061121c8261123a565b90508161122a8a838a610245565b9550955050505050935093915050565b606060008061124884611306565b61ffff166001600160401b038111156112635761126361134f565b6040519080825280601f01601f19166020018201604052801561128d576020820181803683370190505b5090506000805b8251821080156112a5575061010081105b156112fc576001811b9350858416156112ec578060f81b8383815181106112ce576112ce611a4c565b60200101906001600160f81b031916908160001a9053508160010191505b6112f581611cd4565b9050611294565b5090949350505050565b6000805b82156113315761131b600184611d55565b909216918061132981611d68565b91505061130a565b92915050565b6001600160a01b038116811461134c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561138d5761138d61134f565b604052919050565b60006001600160401b038211156113ae576113ae61134f565b5060051b60200190565b600080604083850312156113cb57600080fd5b82356113d681611337565b91506020838101356001600160401b038111156113f257600080fd5b8401601f8101861361140357600080fd5b803561141661141182611395565b611365565b81815260059190911b8201830190838101908883111561143557600080fd5b928401925b8284101561145c57833561144d81611337565b8252928401929084019061143a565b80955050505050509250929050565b60008151808452602080850194506020840160005b8381101561149c57815187529582019590820190600101611480565b509495945050505050565b6020815260006114ba602083018461146b565b9392505050565b63ffffffff8116811461134c57600080fd5b80356114de816114c1565b919050565b6000806000606084860312156114f857600080fd5b833561150381611337565b92506020848101356001600160401b038082111561152057600080fd5b818701915087601f83011261153457600080fd5b8135818111156115465761154661134f565b611558601f8201601f19168501611365565b9150808252888482850101111561156e57600080fd5b8084840185840137600084828401015250809450505050611591604085016114d3565b90509250925092565b600082825180855260208086019550808260051b8401018186016000805b8581101561163357868403601f19018a52825180518086529086019086860190845b8181101561161e57835180516001600160a01b03168452898101518a8501526040908101516001600160601b031690840152928801926060909201916001016115da565b50509a86019a945050918401916001016115b8565b509198975050505050505050565b6020815260006114ba602083018461159a565b600082601f83011261166557600080fd5b8135602061167561141183611395565b8083825260208201915060208460051b87010193508684111561169757600080fd5b602086015b848110156116b3578035835291830191830161169c565b509695505050505050565b600080604083850312156116d157600080fd5b82356116dc81611337565b915060208301356001600160401b038111156116f757600080fd5b61170385828601611654565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561174e5783516001600160a01b031683529284019291840191600101611729565b50909695505050505050565b60008083601f84011261176c57600080fd5b5081356001600160401b0381111561178357600080fd5b6020830191508360208260051b850101111561179e57600080fd5b9250929050565b600080600080600080608087890312156117be57600080fd5b86356117c981611337565b955060208701356117d9816114c1565b945060408701356001600160401b03808211156117f557600080fd5b818901915089601f83011261180957600080fd5b81358181111561181857600080fd5b8a602082850101111561182a57600080fd5b60208301965080955050606089013591508082111561184857600080fd5b5061185589828a0161175a565b979a9699509497509295939492505050565b60008151808452602080850194506020840160005b8381101561149c57815163ffffffff168752958201959082019060010161187c565b6000602080835283516080828501526118ba60a0850182611867565b905081850151601f19808684030160408701526118d78383611867565b925060408701519150808684030160608701526118f48383611867565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561194b5784878303018452611939828751611867565b9588019593880193915060010161191f565b509998505050505050505050565b60008060006060848603121561196e57600080fd5b833561197981611337565b925060208401356001600160401b0381111561199457600080fd5b6119a086828701611654565b92505060408401356119b1816114c1565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561174e578351835292840192918401916001016119d8565b600080600060608486031215611a0957600080fd5b8335611a1481611337565b92506020840135915060408401356119b1816114c1565b828152604060208201526000611a44604083018461159a565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a7457600080fd5b5051919050565b600060208284031215611a8d57600080fd5b81516114ba81611337565b60006020808385031215611aab57600080fd5b82516001600160401b03811115611ac157600080fd5b8301601f81018513611ad257600080fd5b8051611ae061141182611395565b81815260059190911b82018301908381019087831115611aff57600080fd5b928401925b82841015611b1d57835182529284019290840190611b04565b979650505050505050565b600060208284031215611b3a57600080fd5b81516001600160601b03811681146114ba57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611b7e57600080fd5b8260051b8085606085013791909101606001949350505050565b60006020808385031215611bab57600080fd5b82516001600160401b03811115611bc157600080fd5b8301601f81018513611bd257600080fd5b8051611be061141182611395565b81815260059190911b82018301908381019087831115611bff57600080fd5b928401925b82841015611b1d578351611c17816114c1565b82529284019290840190611c04565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611c6f604083018486611c26565b95945050505050565b600060208284031215611c8a57600080fd5b81516001600160c01b03811681146114ba57600080fd5b600060208284031215611cb357600080fd5b81516114ba816114c1565b634e487b7160e01b600052601160045260246000fd5b600060018201611ce657611ce6611cbe565b5060010190565b600060ff821660ff8103611d0357611d03611cbe565b60010192915050565b604081526000611d20604083018587611c26565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a44604083018461146b565b8181038181111561133157611331611cbe565b600061ffff808316818103611d7f57611d7f611cbe565b600101939250505056fea26469706673582212202b3e36f430d5f7f12f8124a33676c0954c36bdaf4a71ac7e145cf85fb593480b64736f6c63430008180033","gas_used":1524589,"gas_limit":2033326,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113b8565b610131565b60405161008791906114a7565b60405180910390f35b6100a361009e3660046114e3565b610245565b6040516100879190611641565b6100c36100be3660046116be565b6106c5565b604051610087919061170d565b6100e36100de3660046117a5565b6107d2565b604051610087919061189e565b6101036100fe366004611959565b610eea565b60405161008791906119bc565b61012361011e3660046119f4565b6110a8565b604051610087929190611a2b565b606081516001600160401b0381111561014c5761014c61134f565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b03166313542a4e8483815181106101a5576101a5611a4c565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a62565b82828151811061022b5761022b611a4c565b602090810291909101015260010161017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ab9190611a7b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190611a7b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190611a7b565b9050600086516001600160401b038111156103945761039461134f565b6040519080825280602002602001820160405280156103c757816020015b60608152602001906001900390816103b25790505b50905060005b87518110156106b95760008882815181106103ea576103ea611a4c565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa15801561044b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104739190810190611a98565b905080516001600160401b0381111561048e5761048e61134f565b6040519080825280602002602001820160405280156104d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104ac5790505b508484815181106104ec576104ec611a4c565b602002602001018190525060005b81518110156106ae576040518060600160405280876001600160a01b03166347b314e885858151811061052f5761052f611a4c565b60200260200101516040518263ffffffff1660e01b815260040161055591815260200190565b602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105969190611a7b565b6001600160a01b031681526020018383815181106105b6576105b6611a4c565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105e4576105e4611a4c565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611b28565b6001600160601b031681525085858151811061068257610682611a4c565b6020026020010151828151811061069b5761069b611a4c565b60209081029190910101526001016104fa565b5050506001016103cd565b50979650505050505050565b606081516001600160401b038111156106e0576106e061134f565b604051908082528060200260200182016040528015610709578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b031663296bb06484838151811061073957610739611a4c565b60200260200101516040518263ffffffff1660e01b815260040161075f91815260200190565b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611a7b565b8282815181106107b2576107b2611a4c565b6001600160a01b039092166020928302919091019091015260010161070f565b6107fd6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611a7b565b905061088e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108be908b9089908990600401611b51565b600060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109039190810190611b98565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290610935908b908b908b90600401611c4f565b600060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097a9190810190611b98565b6040820152856001600160401b038111156109975761099761134f565b6040519080825280602002602001820160405280156109ca57816020015b60608152602001906001900390816109b55790505b50606082015260005b60ff8116871115610dfb576000856001600160401b038111156109f8576109f861134f565b604051908082528060200260200182016040528015610a21578160200160208202803683370190505b5083606001518360ff1681518110610a3b57610a3b611a4c565b602002602001018190525060005b86811015610d055760008c6001600160a01b03166304ec63518a8a85818110610a7457610a74611a4c565b905060200201358e88600001518681518110610a9257610a92611a4c565b60200260200101516040518463ffffffff1660e01b8152600401610acf9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c78565b9050806001600160c01b0316600003610bbb5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bd057610bd0611a4c565b60016001600160c01b038516919093013560f81c1c82169091039050610cfc57856001600160a01b031663dd9846b98a8a85818110610c1157610c11611a4c565b905060200201358d8d8860ff16818110610c2d57610c2d611a4c565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ca1565b85606001518560ff1681518110610cc057610cc0611a4c565b60200260200101518481518110610cd957610cd9611a4c565b63ffffffff9092166020928302919091019091015282610cf881611cd4565b9350505b50600101610a49565b506000816001600160401b03811115610d2057610d2061134f565b604051908082528060200260200182016040528015610d49578160200160208202803683370190505b50905060005b82811015610dc05784606001518460ff1681518110610d7057610d70611a4c565b60200260200101518181518110610d8957610d89611a4c565b6020026020010151828281518110610da357610da3611a4c565b63ffffffff90921660209283029190910190910152600101610d4f565b508084606001518460ff1681518110610ddb57610ddb611a4c565b602002602001018190525050508080610df390611ced565b9150506109d3565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190611a7b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610e93908b908b908e90600401611d0c565b600060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed89190810190611b98565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f1c929190611d36565b600060405180830381865afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f619190810190611b98565b9050600084516001600160401b03811115610f7e57610f7e61134f565b604051908082528060200260200182016040528015610fa7578160200160208202803683370190505b50905060005b855181101561109e57866001600160a01b03166304ec6351878381518110610fd757610fd7611a4c565b602002602001015187868581518110610ff257610ff2611a4c565b60200260200101516040518463ffffffff1660e01b815260040161102f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c78565b6001600160c01b031682828151811061108b5761108b611a4c565b6020908102919091010152600101610fad565b5095945050505050565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106110e3576110e3611a4c565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e9061111f9088908690600401611d36565b600060405180830381865afa15801561113c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111649190810190611b98565b60008151811061117657611176611a4c565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190611c78565b6001600160c01b03169050600061121c8261123a565b90508161122a8a838a610245565b9550955050505050935093915050565b606060008061124884611306565b61ffff166001600160401b038111156112635761126361134f565b6040519080825280601f01601f19166020018201604052801561128d576020820181803683370190505b5090506000805b8251821080156112a5575061010081105b156112fc576001811b9350858416156112ec578060f81b8383815181106112ce576112ce611a4c565b60200101906001600160f81b031916908160001a9053508160010191505b6112f581611cd4565b9050611294565b5090949350505050565b6000805b82156113315761131b600184611d55565b909216918061132981611d68565b91505061130a565b92915050565b6001600160a01b038116811461134c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561138d5761138d61134f565b604052919050565b60006001600160401b038211156113ae576113ae61134f565b5060051b60200190565b600080604083850312156113cb57600080fd5b82356113d681611337565b91506020838101356001600160401b038111156113f257600080fd5b8401601f8101861361140357600080fd5b803561141661141182611395565b611365565b81815260059190911b8201830190838101908883111561143557600080fd5b928401925b8284101561145c57833561144d81611337565b8252928401929084019061143a565b80955050505050509250929050565b60008151808452602080850194506020840160005b8381101561149c57815187529582019590820190600101611480565b509495945050505050565b6020815260006114ba602083018461146b565b9392505050565b63ffffffff8116811461134c57600080fd5b80356114de816114c1565b919050565b6000806000606084860312156114f857600080fd5b833561150381611337565b92506020848101356001600160401b038082111561152057600080fd5b818701915087601f83011261153457600080fd5b8135818111156115465761154661134f565b611558601f8201601f19168501611365565b9150808252888482850101111561156e57600080fd5b8084840185840137600084828401015250809450505050611591604085016114d3565b90509250925092565b600082825180855260208086019550808260051b8401018186016000805b8581101561163357868403601f19018a52825180518086529086019086860190845b8181101561161e57835180516001600160a01b03168452898101518a8501526040908101516001600160601b031690840152928801926060909201916001016115da565b50509a86019a945050918401916001016115b8565b509198975050505050505050565b6020815260006114ba602083018461159a565b600082601f83011261166557600080fd5b8135602061167561141183611395565b8083825260208201915060208460051b87010193508684111561169757600080fd5b602086015b848110156116b3578035835291830191830161169c565b509695505050505050565b600080604083850312156116d157600080fd5b82356116dc81611337565b915060208301356001600160401b038111156116f757600080fd5b61170385828601611654565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561174e5783516001600160a01b031683529284019291840191600101611729565b50909695505050505050565b60008083601f84011261176c57600080fd5b5081356001600160401b0381111561178357600080fd5b6020830191508360208260051b850101111561179e57600080fd5b9250929050565b600080600080600080608087890312156117be57600080fd5b86356117c981611337565b955060208701356117d9816114c1565b945060408701356001600160401b03808211156117f557600080fd5b818901915089601f83011261180957600080fd5b81358181111561181857600080fd5b8a602082850101111561182a57600080fd5b60208301965080955050606089013591508082111561184857600080fd5b5061185589828a0161175a565b979a9699509497509295939492505050565b60008151808452602080850194506020840160005b8381101561149c57815163ffffffff168752958201959082019060010161187c565b6000602080835283516080828501526118ba60a0850182611867565b905081850151601f19808684030160408701526118d78383611867565b925060408701519150808684030160608701526118f48383611867565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561194b5784878303018452611939828751611867565b9588019593880193915060010161191f565b509998505050505050505050565b60008060006060848603121561196e57600080fd5b833561197981611337565b925060208401356001600160401b0381111561199457600080fd5b6119a086828701611654565b92505060408401356119b1816114c1565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561174e578351835292840192918401916001016119d8565b600080600060608486031215611a0957600080fd5b8335611a1481611337565b92506020840135915060408401356119b1816114c1565b828152604060208201526000611a44604083018461159a565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a7457600080fd5b5051919050565b600060208284031215611a8d57600080fd5b81516114ba81611337565b60006020808385031215611aab57600080fd5b82516001600160401b03811115611ac157600080fd5b8301601f81018513611ad257600080fd5b8051611ae061141182611395565b81815260059190911b82018301908381019087831115611aff57600080fd5b928401925b82841015611b1d57835182529284019290840190611b04565b979650505050505050565b600060208284031215611b3a57600080fd5b81516001600160601b03811681146114ba57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611b7e57600080fd5b8260051b8085606085013791909101606001949350505050565b60006020808385031215611bab57600080fd5b82516001600160401b03811115611bc157600080fd5b8301601f81018513611bd257600080fd5b8051611be061141182611395565b81815260059190911b82018301908381019087831115611bff57600080fd5b928401925b82841015611b1d578351611c17816114c1565b82529284019290840190611c04565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611c6f604083018486611c26565b95945050505050565b600060208284031215611c8a57600080fd5b81516001600160c01b03811681146114ba57600080fd5b600060208284031215611cb357600080fd5b81516114ba816114c1565b634e487b7160e01b600052601160045260246000fd5b600060018201611ce657611ce6611cbe565b5060010190565b600060ff821660ff8103611d0357611d03611cbe565b60010192915050565b604081526000611d20604083018587611c26565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a44604083018461146b565b8181038181111561133157611331611cbe565b600061ffff808316818103611d7f57611d7f611cbe565b600101939250505056fea26469706673582212202b3e36f430d5f7f12f8124a33676c0954c36bdaf4a71ac7e145cf85fb593480b64736f6c63430008180033","nonce":53,"gas_used":1697863},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x19e847","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x4c8f7bfcf5d807fea30fbcc02c688bfccc118830bd778955769d2bcb0cbc8ddf","block_number":10},{"info":{"transaction_hash":"0x1d15ae6b01cf50f6bdf794782572de5debf9cb020716eec546a5c1a6694dd6d5","transaction_index":2,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x851356ae760d987e095750cceb3bc6014560891c","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405260405162000db238038062000db2833981016040819052620000269162000414565b828162000036828260006200004d565b50620000449050826200007f565b50505062000547565b6200005883620000f1565b600082511180620000665750805b156200007a5762000078838362000133565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c160008051602062000d6b833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ee8162000162565b50565b620000fc8162000200565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015b838360405180606001604052806027815260200162000d8b6027913962000297565b9392505050565b6001600160a01b038116620001cd5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b8060008051602062000d6b8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c4565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001df565b60606001600160a01b0384163b620003015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001c4565b600080856001600160a01b0316856040516200031e9190620004f4565b600060405180830381855af49150503d80600081146200035b576040519150601f19603f3d011682016040523d82523d6000602084013e62000360565b606091505b509092509050620003738282866200037d565b9695505050505050565b606083156200038e5750816200015b565b8251156200039f5782518084602001fd5b8160405162461bcd60e51b8152600401620001c4919062000512565b80516001600160a01b0381168114620003d357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200040b578181015183820152602001620003f1565b50506000910152565b6000806000606084860312156200042a57600080fd5b6200043584620003bb565b92506200044560208501620003bb565b60408501519092506001600160401b03808211156200046357600080fd5b818601915086601f8301126200047857600080fd5b8151818111156200048d576200048d620003d8565b604051601f8201601f19908116603f01168101908382118183101715620004b857620004b8620003d8565b81604052828152896020848701011115620004d257600080fd5b620004e5836020830160208801620003ee565b80955050505050509250925092565b6000825162000508818460208701620003ee565b9190910192915050565b602081526000825180602084015262000533816040850160208701620003ee565b601f01601f19169190910160400192915050565b61081480620005576000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","gas_used":464703,"gas_limit":636293,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033","nonce":36,"gas_used":572955},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x12407e","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400400000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000010000000000000400000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x86f63f579b0459b5ac7667ae5594c6ca15ea0c9a8bcfa6fccccebf14b813f1f0","block_number":2},{"info":{"transaction_hash":"0x6a56c67f42dceff96c7b0227655aea0199e6a87885116e2c3ef3d378b2712e2b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e2565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100e0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611b7f6101196000396000818161061701528181610657015281816107080152818161074801526107db0152611b7f6000f3fe6080604052600436106101395760003560e01c806373e289d0116100ab578063a7d318091161006f578063a7d31809146103f1578063c0c53b8b14610411578063c392299e14610431578063c891091314610444578063f2fde38b1461049b578063f83d08ba146104bb57600080fd5b806373e289d0146103735780638456cb59146103895780638da5cb5b1461039e578063953ef807146103bc578063a69df4b5146103dc57600080fd5b80634d5431ea116100fd5780634d5431ea146102a25780634f1ef286146102db57806352d1902d146102ee57806358b96e27146103035780635c975abb1461033b578063715018a61461035e57600080fd5b806317d89c4e146101cb5780632df4e21e146102175780632e1a7d4d1461024d5780633659cfe61461026d5780633f4ba83a1461028d57600080fd5b366101c65760fb546001600160a01b031633146101c45733600090815260fd60205260408120805434929061016f908490611619565b909155505033600081815260fd602052604080822060010191909155517f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770906101bb9034815260200190565b60405180910390a25b005b600080fd5b3480156101d757600080fd5b506102046101e6366004611641565b6001600160a01b0316600090815260fd602052604090206002015490565b6040519081526020015b60405180910390f35b34801561022357600080fd5b50610204610232366004611641565b6001600160a01b0316600090815260fd602052604090205490565b34801561025957600080fd5b506101c461026836600461165e565b6104d0565b34801561027957600080fd5b506101c4610288366004611641565b61060d565b34801561029957600080fd5b506101c46106ec565b3480156102ae57600080fd5b506102046102bd366004611641565b6001600160a01b0316600090815260fd602052604090206001015490565b6101c46102e936600461168d565b6106fe565b3480156102fa57600080fd5b506102046107ce565b34801561030f57600080fd5b5060fc54610323906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b34801561034757600080fd5b5060655460ff16604051901515815260200161020e565b34801561036a57600080fd5b506101c4610881565b34801561037f57600080fd5b50610204610e1081565b34801561039557600080fd5b506101c4610893565b3480156103aa57600080fd5b506033546001600160a01b0316610323565b3480156103c857600080fd5b5060fb54610323906001600160a01b031681565b3480156103e857600080fd5b506101c46108a3565b3480156103fd57600080fd5b506101c461040c36600461179d565b61093a565b34801561041d57600080fd5b506101c461042c36600461185c565b610bd0565b6101c461043f3660046118a7565b610e1a565b34801561045057600080fd5b5061048061045f366004611641565b60fd6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161020e565b3480156104a757600080fd5b506101c46104b6366004611641565b610ebb565b3480156104c757600080fd5b506101c4610f31565b6104d8610fa7565b33600090815260fd60205260409020805482111561051b5780546040516321c3d50f60e01b81526004810191909152602481018390526044015b60405180910390fd5b6001810154158061052f5750428160010154115b1561055c576001810154604051635f6e272d60e11b81526004810191909152426024820152604401610512565b8181600001600082825461057091906118d7565b909155505060006001820181905560405133917fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd91a2604051339083156108fc029084906000818181858888f193505050501580156105d3573d6000803e3d6000fd5b5060405182815233907feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9060200160405180910390a25050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106555760405162461bcd60e51b8152600401610512906118ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661069e600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146106c45760405162461bcd60e51b815260040161051290611936565b6106cd81610fed565b604080516000808252602082019092526106e991839190610ff5565b50565b6106f4611160565b6106fc6111ba565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107465760405162461bcd60e51b8152600401610512906118ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661078f600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146107b55760405162461bcd60e51b815260040161051290611936565b6107be82610fed565b6107ca82826001610ff5565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461086e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610512565b50600080516020611b0383398151915290565b610889611160565b6106fc600061120c565b61089b611160565b6106fc61125e565b6108ab610fa7565b33600090815260fd602052604081205490036108dc5760405163b38340cf60e01b8152336004820152602401610512565b6108e8610e1042611619565b33600081815260fd6020526040908190206001018390555190917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439161093091815260200190565b60405180910390a2565b60fc546001600160a01b03163314610967576040516302a5785160e31b8152336004820152602401610512565b61096f610fa7565b83600081900361099257604051630c43ac2960e41b815260040160405180910390fd5b826000036109b3576040516351d432c560e11b815260040160405180910390fd5b836109be8285611982565b116109f057836109ce8285611982565b604051637899ec7160e01b815260048101929092526024820152604401610512565b60005b818163ffffffff161015610ad157600087878363ffffffff16818110610a1b57610a1b611999565b9050602002016020810190610a309190611641565b6001600160a01b038116600090815260fd60205260409020805491925090861115610a8a578054604051634f779ceb60e01b81526001600160a01b0384166004820152602481019190915260448101879052606401610512565b600281018054906000610a9c836119af565b919050555085816000016000828254610ab591906118d7565b9250508190555050508080610ac9906119c8565b9150506109f3565b5060fb5460405163d66eaabd60e01b81526001600160a01b039091169063d66eaabd908690610b0a908d908d908d9089906004016119eb565b6000604051808303818588803b158015610b2357600080fd5b505af1158015610b37573d6000803e3d6000fd5b505060408051878152602081018690528d94507f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c935001905060405180910390a260fc546001600160a01b03166108fc85610b928487611982565b610b9c91906118d7565b6040518115909202916000818181858888f19350505050158015610bc4573d6000803e3d6000fd5b50505050505050505050565b600054610100900460ff1615808015610bf05750600054600160ff909116105b80610c0a5750303b158015610c0a575060005460ff166001145b610c6d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610512565b6000805460ff191660011790558015610c90576000805461ff0019166101001790555b6001600160a01b038416610cdf57604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606401610512565b6001600160a01b038316610d3657604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606401610512565b6001600160a01b038216610d7d57604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606401610512565b610d8561129b565b610d8d6112ca565b610d956112f1565b610d9e8361120c565b60fb80546001600160a01b038087166001600160a01b03199283161790925560fc8054928516929091169190911790558015610e14576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610e22611160565b60fb54604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610e6857600080fd5b505af1158015610e7c573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f19350505050158015610eb6573d6000803e3d6000fd5b505050565b610ec3611160565b6001600160a01b038116610f285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610512565b6106e98161120c565b610f39610fa7565b33600090815260fd60205260408120549003610f6a5760405163366095e160e11b8152336004820152602401610512565b33600081815260fd6020526040808220600101829055517fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd9190a2565b60655460ff16156106fc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610512565b6106e9611160565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561102857610eb683611320565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611082575060408051601f3d908101601f1916820190925261107f91810190611a2b565b60015b6110e55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610512565b600080516020611b0383398151915281146111545760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610512565b50610eb68383836113bc565b6033546001600160a01b031633146106fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610512565b6111c26113e1565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611266610fa7565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111ef3390565b600054610100900460ff166112c25760405162461bcd60e51b815260040161051290611a44565b6106fc61142a565b600054610100900460ff166106fc5760405162461bcd60e51b815260040161051290611a44565b600054610100900460ff166113185760405162461bcd60e51b815260040161051290611a44565b6106fc61145a565b6001600160a01b0381163b61138d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610512565b600080516020611b0383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6113c58361148d565b6000825111806113d25750805b15610eb657610e1483836114cd565b60655460ff166106fc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610512565b600054610100900460ff166114515760405162461bcd60e51b815260040161051290611a44565b6106fc3361120c565b600054610100900460ff166114815760405162461bcd60e51b815260040161051290611a44565b6065805460ff19169055565b61149681611320565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6115355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610512565b600080846001600160a01b0316846040516115509190611ab3565b600060405180830381855af49150503d806000811461158b576040519150601f19603f3d011682016040523d82523d6000602084013e611590565b606091505b50915091506115b88282604051806060016040528060278152602001611b23602791396115c3565b925050505b92915050565b606083156115d25750816115fc565b8251156115e25782518084602001fd5b8160405162461bcd60e51b81526004016105129190611acf565b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156115bd576115bd611603565b6001600160a01b03811681146106e957600080fd5b60006020828403121561165357600080fd5b81356115fc8161162c565b60006020828403121561167057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156116a057600080fd5b82356116ab8161162c565b9150602083013567ffffffffffffffff808211156116c857600080fd5b818501915085601f8301126116dc57600080fd5b8135818111156116ee576116ee611677565b604051601f8201601f19908116603f0116810190838211818310171561171657611716611677565b8160405282815288602084870101111561172f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f84011261176357600080fd5b50813567ffffffffffffffff81111561177b57600080fd5b6020830191508360208260051b850101111561179657600080fd5b9250929050565b60008060008060008060008060c0898b0312156117b957600080fd5b88359750602089013567ffffffffffffffff808211156117d857600080fd5b818b0191508b601f8301126117ec57600080fd5b8135818111156117fb57600080fd5b8c602082850101111561180d57600080fd5b6020830199508098505060408b013591508082111561182b57600080fd5b506118388b828c01611751565b999c989b5096999698976060880135976080810135975060a0013595509350505050565b60008060006060848603121561187157600080fd5b833561187c8161162c565b9250602084013561188c8161162c565b9150604084013561189c8161162c565b809150509250925092565b600080604083850312156118ba57600080fd5b8235915060208301356118cc8161162c565b809150509250929050565b818103818111156115bd576115bd611603565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b80820281158282048414176115bd576115bd611603565b634e487b7160e01b600052603260045260246000fd5b6000600182016119c1576119c1611603565b5060010190565b600063ffffffff8083168181036119e1576119e1611603565b6001019392505050565b848152606060208201528260608201528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b600060208284031215611a3d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611aaa578181015183820152602001611a92565b50506000910152565b60008251611ac5818460208701611a8f565b9190910192915050565b6020815260008251806020840152611aee816040850160208701611a8f565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fe4d8620c34457d343e8ef7d48b551e27cee4fde238226317eb7e02cabac65a64736f6c63430008180033","output":"0x6080604052600436106101395760003560e01c806373e289d0116100ab578063a7d318091161006f578063a7d31809146103f1578063c0c53b8b14610411578063c392299e14610431578063c891091314610444578063f2fde38b1461049b578063f83d08ba146104bb57600080fd5b806373e289d0146103735780638456cb59146103895780638da5cb5b1461039e578063953ef807146103bc578063a69df4b5146103dc57600080fd5b80634d5431ea116100fd5780634d5431ea146102a25780634f1ef286146102db57806352d1902d146102ee57806358b96e27146103035780635c975abb1461033b578063715018a61461035e57600080fd5b806317d89c4e146101cb5780632df4e21e146102175780632e1a7d4d1461024d5780633659cfe61461026d5780633f4ba83a1461028d57600080fd5b366101c65760fb546001600160a01b031633146101c45733600090815260fd60205260408120805434929061016f908490611619565b909155505033600081815260fd602052604080822060010191909155517f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770906101bb9034815260200190565b60405180910390a25b005b600080fd5b3480156101d757600080fd5b506102046101e6366004611641565b6001600160a01b0316600090815260fd602052604090206002015490565b6040519081526020015b60405180910390f35b34801561022357600080fd5b50610204610232366004611641565b6001600160a01b0316600090815260fd602052604090205490565b34801561025957600080fd5b506101c461026836600461165e565b6104d0565b34801561027957600080fd5b506101c4610288366004611641565b61060d565b34801561029957600080fd5b506101c46106ec565b3480156102ae57600080fd5b506102046102bd366004611641565b6001600160a01b0316600090815260fd602052604090206001015490565b6101c46102e936600461168d565b6106fe565b3480156102fa57600080fd5b506102046107ce565b34801561030f57600080fd5b5060fc54610323906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b34801561034757600080fd5b5060655460ff16604051901515815260200161020e565b34801561036a57600080fd5b506101c4610881565b34801561037f57600080fd5b50610204610e1081565b34801561039557600080fd5b506101c4610893565b3480156103aa57600080fd5b506033546001600160a01b0316610323565b3480156103c857600080fd5b5060fb54610323906001600160a01b031681565b3480156103e857600080fd5b506101c46108a3565b3480156103fd57600080fd5b506101c461040c36600461179d565b61093a565b34801561041d57600080fd5b506101c461042c36600461185c565b610bd0565b6101c461043f3660046118a7565b610e1a565b34801561045057600080fd5b5061048061045f366004611641565b60fd6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161020e565b3480156104a757600080fd5b506101c46104b6366004611641565b610ebb565b3480156104c757600080fd5b506101c4610f31565b6104d8610fa7565b33600090815260fd60205260409020805482111561051b5780546040516321c3d50f60e01b81526004810191909152602481018390526044015b60405180910390fd5b6001810154158061052f5750428160010154115b1561055c576001810154604051635f6e272d60e11b81526004810191909152426024820152604401610512565b8181600001600082825461057091906118d7565b909155505060006001820181905560405133917fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd91a2604051339083156108fc029084906000818181858888f193505050501580156105d3573d6000803e3d6000fd5b5060405182815233907feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9060200160405180910390a25050565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036106555760405162461bcd60e51b8152600401610512906118ea565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b031661069e600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146106c45760405162461bcd60e51b815260040161051290611936565b6106cd81610fed565b604080516000808252602082019092526106e991839190610ff5565b50565b6106f4611160565b6106fc6111ba565b565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036107465760405162461bcd60e51b8152600401610512906118ea565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b031661078f600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146107b55760405162461bcd60e51b815260040161051290611936565b6107be82610fed565b6107ca82826001610ff5565b5050565b6000306001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0161461086e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610512565b50600080516020611b0383398151915290565b610889611160565b6106fc600061120c565b61089b611160565b6106fc61125e565b6108ab610fa7565b33600090815260fd602052604081205490036108dc5760405163b38340cf60e01b8152336004820152602401610512565b6108e8610e1042611619565b33600081815260fd6020526040908190206001018390555190917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439161093091815260200190565b60405180910390a2565b60fc546001600160a01b03163314610967576040516302a5785160e31b8152336004820152602401610512565b61096f610fa7565b83600081900361099257604051630c43ac2960e41b815260040160405180910390fd5b826000036109b3576040516351d432c560e11b815260040160405180910390fd5b836109be8285611982565b116109f057836109ce8285611982565b604051637899ec7160e01b815260048101929092526024820152604401610512565b60005b818163ffffffff161015610ad157600087878363ffffffff16818110610a1b57610a1b611999565b9050602002016020810190610a309190611641565b6001600160a01b038116600090815260fd60205260409020805491925090861115610a8a578054604051634f779ceb60e01b81526001600160a01b0384166004820152602481019190915260448101879052606401610512565b600281018054906000610a9c836119af565b919050555085816000016000828254610ab591906118d7565b9250508190555050508080610ac9906119c8565b9150506109f3565b5060fb5460405163d66eaabd60e01b81526001600160a01b039091169063d66eaabd908690610b0a908d908d908d9089906004016119eb565b6000604051808303818588803b158015610b2357600080fd5b505af1158015610b37573d6000803e3d6000fd5b505060408051878152602081018690528d94507f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c935001905060405180910390a260fc546001600160a01b03166108fc85610b928487611982565b610b9c91906118d7565b6040518115909202916000818181858888f19350505050158015610bc4573d6000803e3d6000fd5b50505050505050505050565b600054610100900460ff1615808015610bf05750600054600160ff909116105b80610c0a5750303b158015610c0a575060005460ff166001145b610c6d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610512565b6000805460ff191660011790558015610c90576000805461ff0019166101001790555b6001600160a01b038416610cdf57604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606401610512565b6001600160a01b038316610d3657604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606401610512565b6001600160a01b038216610d7d57604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606401610512565b610d8561129b565b610d8d6112ca565b610d956112f1565b610d9e8361120c565b60fb80546001600160a01b038087166001600160a01b03199283161790925560fc8054928516929091169190911790558015610e14576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610e22611160565b60fb54604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610e6857600080fd5b505af1158015610e7c573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f19350505050158015610eb6573d6000803e3d6000fd5b505050565b610ec3611160565b6001600160a01b038116610f285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610512565b6106e98161120c565b610f39610fa7565b33600090815260fd60205260408120549003610f6a5760405163366095e160e11b8152336004820152602401610512565b33600081815260fd6020526040808220600101829055517fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd9190a2565b60655460ff16156106fc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610512565b6106e9611160565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561102857610eb683611320565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611082575060408051601f3d908101601f1916820190925261107f91810190611a2b565b60015b6110e55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610512565b600080516020611b0383398151915281146111545760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610512565b50610eb68383836113bc565b6033546001600160a01b031633146106fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610512565b6111c26113e1565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611266610fa7565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111ef3390565b600054610100900460ff166112c25760405162461bcd60e51b815260040161051290611a44565b6106fc61142a565b600054610100900460ff166106fc5760405162461bcd60e51b815260040161051290611a44565b600054610100900460ff166113185760405162461bcd60e51b815260040161051290611a44565b6106fc61145a565b6001600160a01b0381163b61138d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610512565b600080516020611b0383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6113c58361148d565b6000825111806113d25750805b15610eb657610e1483836114cd565b60655460ff166106fc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610512565b600054610100900460ff166114515760405162461bcd60e51b815260040161051290611a44565b6106fc3361120c565b600054610100900460ff166114815760405162461bcd60e51b815260040161051290611a44565b6065805460ff19169055565b61149681611320565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6115355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610512565b600080846001600160a01b0316846040516115509190611ab3565b600060405180830381855af49150503d806000811461158b576040519150601f19603f3d011682016040523d82523d6000602084013e611590565b606091505b50915091506115b88282604051806060016040528060278152602001611b23602791396115c3565b925050505b92915050565b606083156115d25750816115fc565b8251156115e25782518084602001fd5b8160405162461bcd60e51b81526004016105129190611acf565b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156115bd576115bd611603565b6001600160a01b03811681146106e957600080fd5b60006020828403121561165357600080fd5b81356115fc8161162c565b60006020828403121561167057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156116a057600080fd5b82356116ab8161162c565b9150602083013567ffffffffffffffff808211156116c857600080fd5b818501915085601f8301126116dc57600080fd5b8135818111156116ee576116ee611677565b604051601f8201601f19908116603f0116810190838211818310171561171657611716611677565b8160405282815288602084870101111561172f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f84011261176357600080fd5b50813567ffffffffffffffff81111561177b57600080fd5b6020830191508360208260051b850101111561179657600080fd5b9250929050565b60008060008060008060008060c0898b0312156117b957600080fd5b88359750602089013567ffffffffffffffff808211156117d857600080fd5b818b0191508b601f8301126117ec57600080fd5b8135818111156117fb57600080fd5b8c602082850101111561180d57600080fd5b6020830199508098505060408b013591508082111561182b57600080fd5b506118388b828c01611751565b999c989b5096999698976060880135976080810135975060a0013595509350505050565b60008060006060848603121561187157600080fd5b833561187c8161162c565b9250602084013561188c8161162c565b9150604084013561189c8161162c565b809150509250925092565b600080604083850312156118ba57600080fd5b8235915060208301356118cc8161162c565b809150509250929050565b818103818111156115bd576115bd611603565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b80820281158282048414176115bd576115bd611603565b634e487b7160e01b600052603260045260246000fd5b6000600182016119c1576119c1611603565b5060010190565b600063ffffffff8083168181036119e1576119e1611603565b6001019392505050565b848152606060208201528260608201528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b600060208284031215611a3d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611aaa578181015183820152602001611a92565b50506000910152565b60008251611ac5818460208701611a8f565b9190910192915050565b6020815260008251806020840152611aee816040850160208701611a8f565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fe4d8620c34457d343e8ef7d48b551e27cee4fde238226317eb7e02cabac65a64736f6c63430008180033","gas_used":1432843,"gas_limit":1912039,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080604052600436106101395760003560e01c806373e289d0116100ab578063a7d318091161006f578063a7d31809146103f1578063c0c53b8b14610411578063c392299e14610431578063c891091314610444578063f2fde38b1461049b578063f83d08ba146104bb57600080fd5b806373e289d0146103735780638456cb59146103895780638da5cb5b1461039e578063953ef807146103bc578063a69df4b5146103dc57600080fd5b80634d5431ea116100fd5780634d5431ea146102a25780634f1ef286146102db57806352d1902d146102ee57806358b96e27146103035780635c975abb1461033b578063715018a61461035e57600080fd5b806317d89c4e146101cb5780632df4e21e146102175780632e1a7d4d1461024d5780633659cfe61461026d5780633f4ba83a1461028d57600080fd5b366101c65760fb546001600160a01b031633146101c45733600090815260fd60205260408120805434929061016f908490611619565b909155505033600081815260fd602052604080822060010191909155517f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770906101bb9034815260200190565b60405180910390a25b005b600080fd5b3480156101d757600080fd5b506102046101e6366004611641565b6001600160a01b0316600090815260fd602052604090206002015490565b6040519081526020015b60405180910390f35b34801561022357600080fd5b50610204610232366004611641565b6001600160a01b0316600090815260fd602052604090205490565b34801561025957600080fd5b506101c461026836600461165e565b6104d0565b34801561027957600080fd5b506101c4610288366004611641565b61060d565b34801561029957600080fd5b506101c46106ec565b3480156102ae57600080fd5b506102046102bd366004611641565b6001600160a01b0316600090815260fd602052604090206001015490565b6101c46102e936600461168d565b6106fe565b3480156102fa57600080fd5b506102046107ce565b34801561030f57600080fd5b5060fc54610323906001600160a01b031681565b6040516001600160a01b03909116815260200161020e565b34801561034757600080fd5b5060655460ff16604051901515815260200161020e565b34801561036a57600080fd5b506101c4610881565b34801561037f57600080fd5b50610204610e1081565b34801561039557600080fd5b506101c4610893565b3480156103aa57600080fd5b506033546001600160a01b0316610323565b3480156103c857600080fd5b5060fb54610323906001600160a01b031681565b3480156103e857600080fd5b506101c46108a3565b3480156103fd57600080fd5b506101c461040c36600461179d565b61093a565b34801561041d57600080fd5b506101c461042c36600461185c565b610bd0565b6101c461043f3660046118a7565b610e1a565b34801561045057600080fd5b5061048061045f366004611641565b60fd6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161020e565b3480156104a757600080fd5b506101c46104b6366004611641565b610ebb565b3480156104c757600080fd5b506101c4610f31565b6104d8610fa7565b33600090815260fd60205260409020805482111561051b5780546040516321c3d50f60e01b81526004810191909152602481018390526044015b60405180910390fd5b6001810154158061052f5750428160010154115b1561055c576001810154604051635f6e272d60e11b81526004810191909152426024820152604401610512565b8181600001600082825461057091906118d7565b909155505060006001820181905560405133917fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd91a2604051339083156108fc029084906000818181858888f193505050501580156105d3573d6000803e3d6000fd5b5060405182815233907feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9060200160405180910390a25050565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036106555760405162461bcd60e51b8152600401610512906118ea565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b031661069e600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146106c45760405162461bcd60e51b815260040161051290611936565b6106cd81610fed565b604080516000808252602082019092526106e991839190610ff5565b50565b6106f4611160565b6106fc6111ba565b565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036107465760405162461bcd60e51b8152600401610512906118ea565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b031661078f600080516020611b03833981519152546001600160a01b031690565b6001600160a01b0316146107b55760405162461bcd60e51b815260040161051290611936565b6107be82610fed565b6107ca82826001610ff5565b5050565b6000306001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0161461086e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610512565b50600080516020611b0383398151915290565b610889611160565b6106fc600061120c565b61089b611160565b6106fc61125e565b6108ab610fa7565b33600090815260fd602052604081205490036108dc5760405163b38340cf60e01b8152336004820152602401610512565b6108e8610e1042611619565b33600081815260fd6020526040908190206001018390555190917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439161093091815260200190565b60405180910390a2565b60fc546001600160a01b03163314610967576040516302a5785160e31b8152336004820152602401610512565b61096f610fa7565b83600081900361099257604051630c43ac2960e41b815260040160405180910390fd5b826000036109b3576040516351d432c560e11b815260040160405180910390fd5b836109be8285611982565b116109f057836109ce8285611982565b604051637899ec7160e01b815260048101929092526024820152604401610512565b60005b818163ffffffff161015610ad157600087878363ffffffff16818110610a1b57610a1b611999565b9050602002016020810190610a309190611641565b6001600160a01b038116600090815260fd60205260409020805491925090861115610a8a578054604051634f779ceb60e01b81526001600160a01b0384166004820152602481019190915260448101879052606401610512565b600281018054906000610a9c836119af565b919050555085816000016000828254610ab591906118d7565b9250508190555050508080610ac9906119c8565b9150506109f3565b5060fb5460405163d66eaabd60e01b81526001600160a01b039091169063d66eaabd908690610b0a908d908d908d9089906004016119eb565b6000604051808303818588803b158015610b2357600080fd5b505af1158015610b37573d6000803e3d6000fd5b505060408051878152602081018690528d94507f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c935001905060405180910390a260fc546001600160a01b03166108fc85610b928487611982565b610b9c91906118d7565b6040518115909202916000818181858888f19350505050158015610bc4573d6000803e3d6000fd5b50505050505050505050565b600054610100900460ff1615808015610bf05750600054600160ff909116105b80610c0a5750303b158015610c0a575060005460ff166001145b610c6d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610512565b6000805460ff191660011790558015610c90576000805461ff0019166101001790555b6001600160a01b038416610cdf57604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606401610512565b6001600160a01b038316610d3657604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606401610512565b6001600160a01b038216610d7d57604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606401610512565b610d8561129b565b610d8d6112ca565b610d956112f1565b610d9e8361120c565b60fb80546001600160a01b038087166001600160a01b03199283161790925560fc8054928516929091169190911790558015610e14576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610e22611160565b60fb54604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015610e6857600080fd5b505af1158015610e7c573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f19350505050158015610eb6573d6000803e3d6000fd5b505050565b610ec3611160565b6001600160a01b038116610f285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610512565b6106e98161120c565b610f39610fa7565b33600090815260fd60205260408120549003610f6a5760405163366095e160e11b8152336004820152602401610512565b33600081815260fd6020526040808220600101829055517fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd9190a2565b60655460ff16156106fc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610512565b6106e9611160565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561102857610eb683611320565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611082575060408051601f3d908101601f1916820190925261107f91810190611a2b565b60015b6110e55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610512565b600080516020611b0383398151915281146111545760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610512565b50610eb68383836113bc565b6033546001600160a01b031633146106fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610512565b6111c26113e1565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611266610fa7565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111ef3390565b600054610100900460ff166112c25760405162461bcd60e51b815260040161051290611a44565b6106fc61142a565b600054610100900460ff166106fc5760405162461bcd60e51b815260040161051290611a44565b600054610100900460ff166113185760405162461bcd60e51b815260040161051290611a44565b6106fc61145a565b6001600160a01b0381163b61138d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610512565b600080516020611b0383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6113c58361148d565b6000825111806113d25750805b15610eb657610e1483836114cd565b60655460ff166106fc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610512565b600054610100900460ff166114515760405162461bcd60e51b815260040161051290611a44565b6106fc3361120c565b600054610100900460ff166114815760405162461bcd60e51b815260040161051290611a44565b6065805460ff19169055565b61149681611320565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6115355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610512565b600080846001600160a01b0316846040516115509190611ab3565b600060405180830381855af49150503d806000811461158b576040519150601f19603f3d011682016040523d82523d6000602084013e611590565b606091505b50915091506115b88282604051806060016040528060278152602001611b23602791396115c3565b925050505b92915050565b606083156115d25750816115fc565b8251156115e25782518084602001fd5b8160405162461bcd60e51b81526004016105129190611acf565b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156115bd576115bd611603565b6001600160a01b03811681146106e957600080fd5b60006020828403121561165357600080fd5b81356115fc8161162c565b60006020828403121561167057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156116a057600080fd5b82356116ab8161162c565b9150602083013567ffffffffffffffff808211156116c857600080fd5b818501915085601f8301126116dc57600080fd5b8135818111156116ee576116ee611677565b604051601f8201601f19908116603f0116810190838211818310171561171657611716611677565b8160405282815288602084870101111561172f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f84011261176357600080fd5b50813567ffffffffffffffff81111561177b57600080fd5b6020830191508360208260051b850101111561179657600080fd5b9250929050565b60008060008060008060008060c0898b0312156117b957600080fd5b88359750602089013567ffffffffffffffff808211156117d857600080fd5b818b0191508b601f8301126117ec57600080fd5b8135818111156117fb57600080fd5b8c602082850101111561180d57600080fd5b6020830199508098505060408b013591508082111561182b57600080fd5b506118388b828c01611751565b999c989b5096999698976060880135976080810135975060a0013595509350505050565b60008060006060848603121561187157600080fd5b833561187c8161162c565b9250602084013561188c8161162c565b9150604084013561189c8161162c565b809150509250925092565b600080604083850312156118ba57600080fd5b8235915060208301356118cc8161162c565b809150509250929050565b818103818111156115bd576115bd611603565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b80820281158282048414176115bd576115bd611603565b634e487b7160e01b600052603260045260246000fd5b6000600182016119c1576119c1611603565b5060010190565b600063ffffffff8083168181036119e1576119e1611603565b6001019392505050565b848152606060208201528260608201528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b600060208284031215611a3d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611aaa578181015183820152602001611a92565b50506000910152565b60008251611ac5818460208701611a8f565b9190910192915050565b6020815260008251806020840152611aee816040850160208701611a8f565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fe4d8620c34457d343e8ef7d48b551e27cee4fde238226317eb7e02cabac65a64736f6c63430008180033","nonce":56,"gas_used":1599305},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x186749","logs":[{"address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000001000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000"},"block_hash":"0x8f6def7598ebf6325464e3f3f7fd9c78a13f01f5a08eed69ddbd87c3874c510b","block_number":13},{"info":{"transaction_hash":"0x51e3b6ec5dce1003f9129d8ba4e6e8efe484f2334549a0618ce1c15d7e357f5f","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007a6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033","output":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033","gas_used":362115,"gas_limit":494948,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033","nonce":0,"gas_used":443273},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x6c389","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe70403fd18eed35975aef85d0c451e71d41f2f325dc562c97b4a4a743f2a4c2d","block_number":1},{"info":{"transaction_hash":"0x270f5665c89b4abca1028c602097170fb3da69543a0a0d50d7b432b3900a04b6","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","gas_used":465106,"gas_limit":636783,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033","nonce":3,"gas_used":573230},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8bf2e","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851","block_number":3},{"info":{"transaction_hash":"0xc306370c87100e2e71910501503177521e8539499355f8f32be48183e250fbc3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x851356ae760d987e095750cceb3bc6014560891c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x4223d5510000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650","output":"0x","gas_used":33879,"gas_limit":34262,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0xde0b6b3a7640000","data":"0x4223d5510000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650","output":"0x","gas_used":26584,"gas_limit":26584,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x0ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0","0x0000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650"],"data":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":58,"gas_used":55311},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xd80f","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x0ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0","0x0000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650"],"data":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"}],"logsBloom":"0x00000000000000000000000000000000000400000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000020000000000000000000008000000000000000000000040000000000000000000000000000000000080000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x28c4f9417781b5960ed4eafbbd149bdcff425b90f1b31bd09f0c65c6578cab21","block_number":15}],"historical_states":null} \ No newline at end of file +{"block":{"number":"0x21","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x68b895df","gas_limit":"0x1c9c380","basefee":"0x1c9bbe8","difficulty":"0x0","prevrandao":"0xbaf3d2a9f9d6d4fe51ab4f874031b413f2a433db66c378415ac9833889ca7b12","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x3ad3939","code":"0x","storage":{}},"0x0000000000000000000000000000000000000002":{"nonce":0,"balance":"0x0","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x000000000000000000000000000000000000000000000000000000000000001e","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x06530dd13afb697b81e2d602a279ebaec8ca2e31":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","0xcaab7b9788e698b855a97db004a643ebe958e7ce2716f8894c26742dd5905ba0":"0x0000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf"}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff","0x0000000000000000000000000000000000000000000000000000000000000003":"0x54657374546f6b656e0000000000000000000000000000000000000000000012","0x0000000000000000000000000000000000000000000000000000000000000004":"0x5445535400000000000000000000000000000000000000000000000000000008","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"}},"0x0b306bf915c4d645ff596e518faf3f9669b97016":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x0d09209634e053e5a243a04ae58095f3083a1fcf":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","storage":{}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x0e801d84fa97b50751dbf25036d067dcf18858bf":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081630491b41c1461187b57508063087324611461181e5780631f9b74e0146117b857806320b66298146114ff57806325504777146112f15780632cd95940146111f55780633ca5a5f5146111c35780634bd26e09146111845780635401ed271461115c5780635e5a67751461113a5780635f1f2d7714610da157806366acfefe14610c615780636d14a98714610c1d5780637c17234714610c0357806381c07502146109405780639f3ccf65146108e7578063ac6bfb0314610899578063adc804da14610831578063b6904b78146107f1578063bc9a40c31461074a578063bd29b8cd14610623578063c46778a5146105e9578063c601527d146104eb578063c8294c56146104a0578063d5eccc0514610442578063dd9846b91461041b578063df5cf723146103d7578063f2be94ae14610368578063f851e1981461030a578063fa28c627146102b75763ff694a7714610171575f80fd5b346102b35760603660031901126102b35761018a6118a9565b610192611a52565b906044356001600160401b0381116102b3576101b2903690600401611a68565b6101e6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b6101fe8260ff165f52600160205260405f2054151590565b6102505760ff9261021261021892846125cf565b8261256c565b165f52600160205261024e60405f2060405190610234826119bd565b63ffffffff431682525f60208301525f6040830152611e93565b005b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608490fd5b5f80fd5b346102b35760206001600160601b036102fc6102f66102d536611b0d565b90825f949394526002875260405f2060ff82165f52875260405f2093612acb565b906118c9565b505460401c16604051908152f35b346102b35760403660031901126102b35760606103306103286118b9565b600435611df3565b61036660405180926001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565bf35b346102b35760803660031901126102b35760206001600160601b03604061038d6118a9565b610395611a3f565b906044355f526002855260ff835f2091165f5284526103cc6103c56103bf845f20606435906118c9565b50611d51565b9182612964565b015116604051908152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b346102b357602061043461042e36611b0d565b91612acb565b63ffffffff60405191168152f35b346102b35760203660031901126102b35760ff61045d6118a9565b165f90815260016020526040902080545f19810190811161048c576102fc6001600160601b03916020936118c9565b634e487b7160e01b5f52601160045260245ffd5b346102b35760603660031901126102b35760206001600160601b0360406104c56118a9565b60ff6104cf611a3f565b91165f52600184526103cc6103c56103bf604435855f206118c9565b346102b35760403660031901126102b3576105046118a9565b6024356001600160401b0381116102b357610523903690600401611a68565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e9361058a915f916105af575b506001600160a01b03163314611bc3565b6105aa6105a58260ff165f52600160205260405f2054151590565b611b3e565b6125cf565b6105d1915060203d6020116105d7575b6105c98183611a07565b810190611ba4565b85610579565b503d6105bf565b6040513d5f823e3d90fd5b346102b35760203660031901126102b35760ff6106046118a9565b165f525f60205260206001600160601b0360405f205416604051908152f35b346102b35760403660031901126102b3576004356024356001600160401b0381116102b35761065690369060040161190e565b61068a337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f5b81811061069557005b6106a0818385611d31565b3560f81c906106bd8260ff165f52600160205260405f2054151590565b156106df576106d8826106d260019488612146565b90612497565b500161068c565b60405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608490fd5b346102b35760403660031901126102b3576107636118a9565b61076b611a52565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e936107d1915f916105af57506001600160a01b03163314611bc3565b6107ec6105a58260ff165f52600160205260405f2054151590565b61256c565b346102b35760403660031901126102b35760ff61080c6118a9565b610814611d98565b50165f52600160205260606103306103bf60243560405f206118c9565b346102b35760403660031901126102b35760ff61084c6118a9565b610854611db6565b50165f5260036020526040610876610870602435835f206118c9565b50611dce565b6001600160601b03602083519260018060a01b0381511684520151166020820152f35b346102b35760603660031901126102b3576108b26118a9565b6108ba611d98565b506024355f52600260205260ff60405f2091165f5260205260606103306103bf60405f20604435906118c9565b346102b35760403660031901126102b3576109006118a9565b60ff60243591165f52600460205260405f2080548210156102b357602091610927916118c9565b905460405160039290921b1c6001600160a01b03168152f35b346102b35760403660031901126102b35760043563ffffffff81168091036102b3576024356001600160401b0381116102b35761098190369060040161190e565b9061098b82611a28565b926109996040519485611a07565b8284526109a583611a28565b602085019390601f19013685375f5b818110610a05578486604051918291602083019060208452518091526040830191905f5b8181106109e6575050500390f35b825163ffffffff168452859450602093840193909201916001016109d8565b610a10818386611d31565b3560f81c5f8181526001602052604090205415610b8957805f52600160205260405f20805415610b75575f528363ffffffff60205f20541611610ae457805f52600160205260405f20545f5b818110610a6f575b5050506001016109b4565b825f52600160205260405f20610a858284611d8b565b5f19810190811161048c57610aa063ffffffff9189936118c9565b5054161115610ab157600101610a5c565b90610abc9250611d8b565b5f1981019190821161048c5763ffffffff60019216610adb8289611d3d565b52908780610a64565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a490fd5b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a490fd5b346102b3575f3660031901126102b3576020604051818152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346102b357610c6f3661193b565b929091610ca6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f935f5b818110610cc5576040516001600160c01b0387168152602090f35b610cd0818387611d31565b3560f81c90610ced8260ff165f52600160205260405f2054151590565b15610d3657610d1382610d0287600195611f1d565b15610d1a575b6106d29082886122ea565b5001610caa565b5083811b60c085901b859003908116991698909817975f610d08565b60405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608490fd5b346102b35760403660031901126102b357610dba6118a9565b602435906001600160401b0382116102b357366023830112156102b357816004013591610de683611a28565b92610df46040519485611a07565b8084526024602085019160051b830101913683116102b357602401905b82821061112a575050604051638da5cb5b60e01b815290506020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de57610e7c915f9161110b57506001600160a01b03163314611bc3565b610e976105a58260ff165f52600160205260405f2054151590565b81519081156110a05760ff1691825f52600360205260405f20835f52600460205260405f20935f5b848110610ec857005b817f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f76020610f00610ef98589611d3d565b51876118c9565b50546040516001600160a01b039091168152a2817f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a756040610f44610ef98589611d3d565b505481516001600160a01b0390911681525f6020820152a282545f19810190811161048c57610f7390846118c9565b50610f88610f818387611d3d565b51856118c9565b61105f57818103611072575b50508254801561104b575f1901610fab81856118c9565b61105f575f9055835585545f19810190811161048c57610fce61101891886118c9565b905460039190911b1c6001600160a01b0316610ff4610fed8488611d3d565b51896118c9565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b855490811561104b576001915f190161103181896118c9565b815490858060a01b039060031b1b19169055875501610ebf565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f525f60045260245ffd5b815481546001600160a01b039091166001600160a01b03199182168117835592541690911790558680610f94565b60405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608490fd5b611124915060203d6020116105d7576105c98183611a07565b84610579565b8135815260209182019101610e11565b346102b3575f3660031901126102b3576020604051670de0b6b3a76400008152f35b346102b35760403660031901126102b35760206001600160601b0360406103cc6103286118b9565b346102b35760403660031901126102b35761119d6118b9565b6004355f52600260205260ff60405f2091165f52602052602060405f2054604051908152f35b346102b35760203660031901126102b35760ff6111de6118a9565b165f526003602052602060405f2054604051908152f35b346102b35760403660031901126102b35761120e6118b9565b6004355f52600260205260ff60405f2091165f5260205260405f2080549061123582611a28565b916112436040519384611a07565b8083526020830180925f5260205f205f915b8383106112d4578486604051918291602083019060208452518091526040830191905f5b818110611287575050500390f35b9193509160206060826112c660019488516001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565b019401910191849392611279565b6001602081926112e385611d51565b815201920192019190611255565b346102b3576112ff3661193b565b91929190611337337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b61134082611cff565b9261134a83611cff565b925f5b818110611382576113708661137e87604051938493604085526040850190611981565b908382036020850152611981565b0390f35b61138d818386611d31565b3560f81c906113aa8260ff165f52600160205260405f2054151590565b1561149c576113b98483611f1d565b9290921561140b5782816113d36001956113ef948d6122ea565b916001600160601b036113e6868d611d3d565b91169052612497565b6001600160601b036114018389611d3d565b911690520161134d565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a490fd5b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b346102b35760603660031901126102b3576115186118a9565b6024356001600160401b0381116102b3576115379036906004016118de565b916044356001600160401b0381116102b3576115579036906004016118de565b604051638da5cb5b60e01b8152919290916020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de576115bb915f9161179957506001600160a01b03163314611bc3565b6115d66105a58260ff165f52600160205260405f2054151590565b841561172f578482036116c45760ff1691825f52600360205260405f20935f5b8681106115ff57005b806116516116186116136001948888611c54565b611c64565b61162d611626848c88611c54565b358a6118c9565b5080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b857f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75611681611626848c88611c54565b50848060a01b03905416611699611613858a8a611c54565b604080516001600160a01b039390931683526001600160601b0391909116602083015290a2016115f6565b60405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608490fd5b608460405162461bcd60e51b815260206004820152604060248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152fd5b6117b2915060203d6020116105d7576105c98183611a07565b87610579565b346102b35760403660031901126102b3576117d16118a9565b602435906001600160a01b03821682036102b357602091816118076105a561180c9460ff165f52600160205260405f2054151590565b611f1d565b506001600160601b0360405191168152f35b346102b35760403660031901126102b3576118376118a9565b60ff60243591165f52600360205260405f2080548210156102b35760409161185e916118c9565b505481516001600160a01b038216815260a09190911c6020820152f35b346102b35760203660031901126102b35760209060ff6118996118a9565b165f526001825260405f20548152f35b6004359060ff821682036102b357565b6024359060ff821682036102b357565b8054821015610b75575f5260205f2001905f90565b9181601f840112156102b3578235916001600160401b0383116102b3576020808501948460051b0101116102b357565b9181601f840112156102b3578235916001600160401b0383116102b357602083818601950101116102b357565b60606003198201126102b3576004356001600160a01b03811681036102b3579160243591604435906001600160401b0382116102b35761197d9160040161190e565b9091565b90602080835192838152019201905f5b81811061199e5750505090565b82516001600160601b0316845260209384019390920191600101611991565b606081019081106001600160401b038211176119d857604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176119d857604052565b90601f801991011681019081106001600160401b038211176119d857604052565b6001600160401b0381116119d85760051b60200190565b6024359063ffffffff821682036102b357565b602435906001600160601b03821682036102b357565b81601f820112156102b357803590611a7f82611a28565b92611a8d6040519485611a07565b82845260208085019360061b830101918183116102b357602001925b828410611ab7575050505090565b6040848303126102b35760405190611ace826119ec565b84356001600160a01b03811681036102b35782526020850135906001600160601b03821682036102b35782602092836040950152815201930192611aa9565b60609060031901126102b3576004359060243560ff811681036102b3579060443563ffffffff811681036102b35790565b15611b4557565b60405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608490fd5b908160209103126102b357516001600160a01b03811681036102b35790565b15611bca57565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a490fd5b9190811015610b755760051b0190565b356001600160601b03811681036102b35790565b15611c7f57565b60405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a490fd5b90611d0982611a28565b611d166040519182611a07565b8281528092611d27601f1991611a28565b0190602036910137565b90821015610b75570190565b8051821015610b755760209160051b010190565b90604051611d5e816119bd565b60406001600160601b0382945463ffffffff8116845263ffffffff8160201c166020850152821c16910152565b9190820391821161048c57565b60405190611da5826119bd565b5f6040838281528260208201520152565b60405190611dc3826119ec565b5f6020838281520152565b90604051611ddb816119ec565b91546001600160a01b038116835260a01c6020830152565b90611dfc611d98565b50815f52600260205260405f2060ff82165f5260205260405f205490611e20611d98565b9282611e2c5750505090565b909192505f52600260205260ff60405f2091165f5260205260405f205f19820191821161048c57611e60916103bf916118c9565b90565b906bffffffffffffffffffffffff60401b82549160401b16906bffffffffffffffffffffffff60401b1916179055565b8054600160401b8110156119d857611eb0916001820181556118c9565b61105f578151815460208085015167ffffffff00000000911b1663ffffffff90921667ffffffffffffffff1990911617178155611efb916001600160601b0390604001511690611e63565b565b906001600160601b03809116911601906001600160601b03821161048c57565b919060ff5f931690815f52600360205260405f205490604051611f3f816119ec565b5f8082526020918201819052848152600480835260408083208151639004134760e01b81526001600160a01b03909616928601929092526024850152805460448501819052908252918120839260648401925b81811061212457505f939283900391508290507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa9081156105de575f91612094575b505f5b82811061200f575050505f525f6020526001600160601b0360405f2054166001600160601b038316101590565b835f5260036020526120276108708260405f206118c9565b6120318284611d3d565b51612040575b50600101611fe2565b6001600160601b03602061205784869a959a611d3d565b51920151169081810291818304149015171561048c576001916001600160601b03670de0b6b3a764000061208d93041690611efd565b9590612037565b90503d805f833e6120a58183611a07565b8101906020818303126102b3578051906001600160401b0382116102b357019080601f830112156102b35781516120db81611a28565b926120e96040519485611a07565b81845260208085019260051b8201019283116102b357602001905b828210612114575050505f611fdf565b8151815260209182019101612104565b82546001600160a01b0316845285945060209093019260019283019201611f92565b5f90805f52600260205260405f2060ff84165f5260205260405f205480155f146121ed57505f516020612c5a5f395f51905f5260406001600160601b0394835f526002602052815f2060ff82165f526020526121c3825f208351906121aa826119bd565b63ffffffff431682525f60208301525f85830152611e93565b60ff8251911681525f6020820152a2165f81810391125f82128116905f83139015161761048c5790565b908092505f52600260205260405f2060ff84165f5260205260405f20905f19810190811161048c5761221e916118c9565b50908154916001600160601b038360401c169283156122e1576001600160601b03945f516020612c5a5f395f51905f529260409263ffffffff438116911681036122835750805473ffffffffffffffffffffffff0000000000000000191690556121c3565b815467ffffffff000000001916602082901b67ffffffff0000000016179091556122dc90855f526002602052835f2060ff84165f52602052835f208451916122ca836119bd565b82525f60208301525f85830152611e93565b6121c3565b50505050505f90565b9190915f90805f52600260205260405f2060ff85165f5260205260405f205480155f1461239957505f516020612c5a5f395f51905f5260406001600160601b038095845f526002602052825f2060ff89165f5260205261236d835f20845190612352826119bd565b63ffffffff431682525f602083015284841686830152611e93565b60ff8351981688521695866020820152a216905f828203921281831281169183139015161761048c5790565b908092505f52600260205260405f2060ff85165f5260205260405f20905f19810190811161048c576123ca916118c9565b50908154916001600160601b038360401c16926001600160601b0385169081851461248c57855f516020612c5a5f395f51905f52936001600160601b039763ffffffff6040958a9582431692839116145f1461243057505061242b91611e63565b61236d565b835467ffffffff000000001916602083901b67ffffffff00000000161790935561242b92909150875f526002602052855f2060ff8c165f52602052855f209086519261247b846119bd565b83525f602084015286830152611e93565b505050505050505f90565b60ff165f81815260016020526040902080549192915f19810190811161048c576124c0916118c9565b509080156125595763ffffffff6124e58354926001600160601b038460401c16612c10565b938492438316921682036124fe575050611e6091611e63565b835467ffffffff000000001916602083901b67ffffffff000000001617909355611e60929091505f52600160205260405f206040519161253d836119bd565b82525f60208301526001600160601b0384166040830152611e93565b506001600160601b0391505460401c1690565b602060ff7f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf921692835f525f82526001600160601b0360405f20911690816001600160601b0319825416179055604051908152a2565b9190820180921161048c57565b81511561290c5760ff8251911691825f52600360205260405f20549260206125f784866125c2565b116128a6575f925b80841061260d575050505050565b90919293945f5b61261e86886125c2565b8110156126ba57835f52600360205261263a8160405f206118c9565b50546001600160a01b03908116906126528888611d3d565b5151161461266257600101612614565b60405162461bcd60e51b815260206004820152603d60248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608490fd5b509493929190926001600160601b0360206126d58386611d3d565b510151161561283f57815f52600360205260405f206126f48285611d3d565b51908054600160401b8110156119d857612713916001820181556118c9565b61105f5781516020929092015160a01b6001600160a01b0319166001600160a01b03929092169190911790555f828152600460205260409020906001600160a01b0361275f8286611d3d565b515116825490600160401b8210156119d857610ff48260019586612785950181556118c9565b827f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54046020848060a01b036127b98589611d3d565b515116604051908152a2827f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838060a01b036127f58488611d3d565b5151166001600160601b03602061280c868a611d3d565b510151604080516001600160a01b0394909416845291166001600160601b03166020830152819081010390a201926125ff565b60405162461bcd60e51b815260206004820152604660248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a490fd5b60405162461bcd60e51b815260206004820152604560248201525f516020612c7a5f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a490fd5b60405162461bcd60e51b815260206004820152603860248201525f516020612c7a5f395f51905f5260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608490fd5b63ffffffff808251169216918210612a41576020015163ffffffff168015918215612a37575b50501561299357565b60405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c490fd5b1090505f8061298a565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a490fd5b929190835f52600260205260405f2060ff82165f5260205260405f2054805b612baf5760405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e490fd5b845f52600260205260405f2060ff83165f5260205260405f205f1982019082821161048c57612be38263ffffffff926118c9565b50541663ffffffff85161015612c035750801561048c575f190180612aea565b63ffffffff169450505050565b905f811215612c4557600160ff1b811461048c576001600160601b0380915f03169116036001600160601b03811161048c5790565b906001600160601b03611e60921690611efd56fe2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220a53322900ef5b7e2b34473ed4ba3daa5d60bde2a416a384fe7e58d170c91dca164736f6c634300081b0033","storage":{}},"0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081632702747d146100b157508063793e1c8e1461009557637be6aa6b1461003d575f80fd5b346100915760203660031901126100915761008d61008161005c61010a565b60405163e481af9d60e01b6020820152600481529061007c602483610162565b610198565b60405191829182610120565b0390f35b5f80fd5b34610091575f36600319011261009157602060405161dead8152f35b34610091576040366003190112610091576100ca61010a565b906024356001600160a01b03811691908290036100915761008d92610081926333cfb7b760e01b602084015260248301526024825261007c604483610162565b600435906001600160a01b038216820361009157565b60206040818301928281528451809452019201905f5b8181106101435750505090565b82516001600160a01b0316845260209384019390920191600101610136565b90601f8019910116810190811067ffffffffffffffff82111761018457604052565b634e487b7160e01b5f52604160045260245ffd5b5f918291602082519201905afa3d156102d6573d9067ffffffffffffffff821161018457604051916101d4601f8201601f191660200184610162565b82523d5f602084013e5b806102cc575b1561028d5780518101906020818184019303126100915760208101519067ffffffffffffffff8211610091570181603f820112156100915760208101519167ffffffffffffffff8311610184578260051b9160208301936102486040519586610162565b84526020840192810160400191821161009157604001915b81831061026d5750505090565b82516001600160a01b038116810361009157815260209283019201610260565b5060405161029c604082610162565b600181526020808201903682378151156102b85761dead905290565b634e487b7160e01b5f52603260045260245ffd5b50805115156101e4565b6060906101de56fea264697066735822122076ca2349a6e41fd590991eccd3f6a0b9335745993e7c7a70c835b28e908b43eb64736f6c634300081b0033","storage":{}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c806306045a911461005a5763bd90df701461002f575f80fd5b34610056575f366003190112610056575f546040516001600160a01b039091168152602090f35b5f80fd5b3461005657610100366003190112610056576064356bffffffffffffffffffffffff1981168091036100565760a43567ffffffffffffffff81116100565736602382011215610056578060040135906100b28261025b565b916100c06040519384610225565b8083526020830191366024838301011161005657815f9260246020930185378401015260e4356001600160a01b0381169390849003610056575f9361018b610144869560018060a01b038754169560405194859260208401976306045a9160e01b8952600435602486015260243560448601526044356064860152608485015260843560a485015261010060c4850152518092816101248601528585015e8884838501015260c43560e4840152610104830152601f801991011681010301601f198101835282610225565b51915afa3d1561021d573d906101a08261025b565b916101ae6040519384610225565b82523d5f602084013e5b156101e357602081805181010312610056576020015180151580910361005657602090604051908152f35b60405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b6044820152606490fd5b6060906101b8565b90601f8019910116810190811067ffffffffffffffff82111761024757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161024757601f01601f19166020019056fea2646970667358221220911b56055980795aa4b8f8b72ea4e2298214c4b37162aa576fadfa991ca0846364736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c"}},"0x36c02da8a0983159322a80ffe9f24b1acff8b570":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c8062cf2ab51461038357806303fd34921461037e57806304ec635114610379578063054310e6146103745780630a3b0a4f1461036f5780630cf4b7671461036a5780630d3f21341461036557806310d67a2f14610360578063125e05841461035b57806313542a4e14610356578063136439dd146103515780631478851f1461034c5780631eb812da14610347578063249a0c421461034257806328f61b311461033d57806329092d0e14610338578063296bb0641461033357806329d1e0c31461032e5780632cdd1e86146103295780633998fdd3146103245780633af32abf1461031f5780633c2a7f4c1461031a5780635140a5481461031557806353abfad4146103105780635865c60c1461030b578063595c6a67146103065780635ac86ab7146103015780635b0b829f146102fc5780635c975abb146102f75780635df45946146102f25780636347c900146102ed57806368304835146102e85780636c708904146102e35780636e3b17db146102de578063715018a6146102d957806384ca5213146102d4578063871ef049146102cf578063886f1195146102ca5780638da5cb5b146102c55780639aa1653d146102c05780639b5d177b146102bb5780639e9923c2146102b65780639feab859146102b1578063a50857bf146102ac578063a96f783e146102a7578063c391425e146102a2578063ca0de8821461029d578063ca4f2d9714610298578063d72d8dd614610293578063d75b4c881461028e578063dd8283f314610289578063e65797ad14610284578063f2fde38b1461027f578063fabc1cbc1461027a5763fd39105a14610275575f80fd5b6122f2565b6121e0565b61214f565b6120bb565b61201c565b611dfe565b611d3e565b611cf1565b611cb7565b611c13565b611bb7565b611a97565b611a5d565b611a19565b611950565b61188d565b611865565b61183a565b61180a565b611794565b6116a4565b611566565b6114db565b611497565b61143d565b6113cb565b6113ae565b6112fa565b6112bc565b611234565b6111c8565b611114565b610df6565b610d8a565b610d4a565b610d06565b610cd9565b610cac565b610c09565b610ba0565b610b78565b610b46565b610acc565b610a9d565b610966565b61092b565b6108f0565b61084a565b61081c565b61076b565b610620565b6105be565b6104c5565b61048d565b6103bc565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460051b0101116103b857565b5f80fd5b346103b85760203660031901126103b8576004356001600160401b0381116103b8576103ec903690600401610388565b906104046103fe600480600154161490565b15612338565b5f5b82811061040f57005b806104876104206001938686612384565b3561042a816105e6565b838060a01b0381165f52609960205260405f2061046060ff8660405193610450856106a0565b80548552015416602083016123a1565b61048161047c6104708351612e1f565b6001600160c01b031690565b612eb4565b91612f96565b01610406565b346103b85760203660031901126103b8576004355f526098602052602060405f2054604051908152f35b63ffffffff8116036103b857565b346103b85760603660031901126103b8576024356105056104ff6004356104eb846104b7565b604435905f52609860205260405f20611423565b506123d3565b63ffffffff8082511692169182106105895760408161054d61057594610535602061055b96015163ffffffff1690565b9063ffffffff821615918215610579575b5050612404565b01516001600160c01b031690565b6040516001600160c01b0390911681529081906020820190565b0390f35b63ffffffff161190505f80610546565b60405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b6044820152606490fd5b5f9103126103b857565b346103b8575f3660031901126103b857609d546040516001600160a01b039091168152602090f35b6001600160a01b038116036103b857565b60043590610604826105e6565b565b60243590610604826105e6565b60443590610604826105e6565b346103b85760203660031901126103b85760043561063d816105e6565b61064561306c565b6001600160a01b03165f81815260c860205260408120805460ff191660011790557f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9080a2005b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176106bb57604052565b61068c565b606081019081106001600160401b038211176106bb57604052565b90601f801991011681019081106001600160401b038211176106bb57604052565b604051906106046040836106db565b604051906106046060836106db565b6001600160401b0381116106bb57601f01601f191660200190565b9291926107418261071a565b9161074f60405193846106db565b8294818452818301116103b8578281602093845f960137010152565b346103b85760203660031901126103b8576004356001600160401b0381116103b857366023820112156103b8576107ac903690602481600401359101610735565b335f52609960205260ff600160405f2001541660038110156108175760016107d49114612436565b335f5260996020527fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa61081260405f2054926040519182918261248e565b0390a2005b61119d565b346103b85760203660031901126103b85760043561083861306c565b60a055005b60643590610604826105e6565b346103b85760203660031901126103b85760048035610868816105e6565b5f5460405163755b36bd60e11b815292602091849190829060101c6001600160a01b03165afa9182156108eb576108ba926108b5915f916108bc575b506001600160a01b031633146124bf565b6130c4565b005b6108de915060203d6020116108e4575b6108d681836106db565b81019061249f565b5f6108a4565b503d6108cc565b6124b4565b346103b85760203660031901126103b85760043561090d816105e6565b60018060a01b03165f52609f602052602060405f2054604051908152f35b346103b85760203660031901126103b857600435610948816105e6565b60018060a01b03165f526099602052602060405f2054604051908152f35b346103b85760203660031901126103b8576004355f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb576109bf915f91610a6e575b50612536565b60015481811603610a0357806001557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806108123394829190602083019252565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610a90915060203d602011610a96575b610a8881836106db565b81019061251e565b5f6109b9565b503d610a7e565b346103b85760203660031901126103b8576004355f52609a602052602060ff60405f2054166040519015158152f35b346103b85760403660031901126103b8576060610b046104ff602435600435610af3612593565b505f52609860205260405f20611423565b6040519063ffffffff815116825263ffffffff6020820151166020830152604060018060c01b03910151166040820152f35b6004359060ff821682036103b857565b346103b85760203660031901126103b85760ff610b61610b36565b165f52609b602052602060405f2054604051908152f35b346103b8575f3660031901126103b857609e546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b857600435610bbd816105e6565b610bc561306c565b6001600160a01b03165f81815260c860205260408120805460ff191690557f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9080a2005b346103b85760203660031901126103b8576040516308f6629d60e31b815260048035908201526020816024816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa80156108eb57610575915f91610c8d575b506040516001600160a01b0390911681529081906020820190565b610ca6915060203d6020116108e4576108d681836106db565b5f610c72565b346103b85760203660031901126103b8576108ba600435610ccc816105e6565b610cd461306c565b6131bb565b346103b85760203660031901126103b8576108ba600435610cf9816105e6565b610d0161306c565b613219565b346103b8575f3660031901126103b8576040517f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b03168152602090f35b346103b85760203660031901126103b857600435610d67816105e6565b60018060a01b03165f5260c8602052602060ff60405f2054166040519015158152f35b346103b85760203660031901126103b8576040610db1600435610dac816105e6565b6125c9565b610dc78251809260208091805184520151910152565bf35b9181601f840112156103b8578235916001600160401b0383116103b857602083818601950101116103b857565b346103b85760403660031901126103b8576004356001600160401b0381116103b857610e26903690600401610388565b906024356001600160401b0381116103b857610e4783913690600401610dc9565b610e5b6103fe949294600480600154161490565b610e7a610e6a60965460ff1690565b610e75368488610735565b6133e2565b50610e8681841461262f565b7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316935f5b828110610ebc57005b610ee1610edb610ecd83868661266d565b356001600160f81b03191690565b60f81c90565b610eec828787612679565b6040516379a0849160e11b815260ff841660048201526020816024818d5afa9081156108eb57610f2c9163ffffffff915f91611047575b501682146126d2565b5f90815b8688838510610f9c575050505050509060019143610f598260ff165f52609b60205260405f2090565b557f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db460ff60405192169180610f9343829190602083019252565b0390a201610eb3565b86611038611031600195948b61103f95611022610fc3610fbe8d8f8e90612384565b612394565b9861100d611008610fec610fe78d60018060a01b03165f52609960205260405f2090565b6123ad565b99610ffa6104708c51612e1f565b60ff600192161c1660011490565b612709565b8a8060a01b03168a8060a01b038a1611612740565b61102b8261278a565b926127b8565b3691610735565b9083612f96565b920191610f30565b611068915060203d811161106e575b61106081836106db565b8101906126bd565b8c610f23565b503d611056565b6001600160401b0381116106bb5760051b60200190565b60206003198201126103b857600435906001600160401b0382116103b857806023830112156103b85781600401356110c381611075565b926110d160405194856106db565b8184526024602085019260051b8201019283116103b857602401905b8282106110fa5750505090565b602080918335611109816105e6565b8152019101906110ed565b346103b8576111223661108c565b61112a61306c565b5f5b81518110156108ba576001906001600160a01b0361114a82856127dd565b51165f5260c860205260405f2060ff19815416905561116981846127dd565b5160a083901b839003167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc5f80a20161112c565b634e487b7160e01b5f52602160045260245ffd5b6003111561081757565b9060038210156108175752565b346103b85760203660031901126103b8576004356111e5816105e6565b6111ed6125b1565b5060018060a01b03165f52609960205260405f2061121560ff600160405193610450856106a0565b60405180916105756020604084019280518552015160208401906111bb565b346103b8575f3660031901126103b8575f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb57611288915f91610a6e5750612536565b5f196001556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b346103b85760203660031901126103b8576020600160ff6112db610b36565b161b806001541614604051908152f35b359061ffff821682036103b857565b346103b85760803660031901126103b857611313610b36565b60603660231901126103b85760405161132b816106c0565b602435611337816104b7565b815260443561ffff811681036103b857602082015260643561ffff811681036103b857604082015261136761306c565b60ff6096541660ff83161015611380576108ba91613469565b60405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b6044820152606490fd5b346103b8575f3660031901126103b8576020600154604051908152f35b346103b8575f3660031901126103b8576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054821015611438575f5260205f2001905f90565b61140f565b346103b85760203660031901126103b857600435609c548110156103b857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c01546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b8576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b346103b8576114e93661108c565b6114f161306c565b5f5b81518110156108ba576001906001600160a01b0361151182856127dd565b51165f5260c860205260405f208260ff1982541617905561153281846127dd565b5160a083901b839003167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f5f80a2016114f3565b346103b85760403660031901126103b857600435611583816105e6565b6024356001600160401b0381116103b8576115a2903690600401610dc9565b609e549192916001600160a01b03163303611672576001600160a01b0382165f908152609f602090815260408083204290556099909152902080546001611612816116096116036104706115f860965460ff1690565b610e75368b8e610735565b94612e1f565b94015460ff1690565b61161b816111b1565b14918261165f575b82611646575b505061163157005b6108ba92611640913691610735565b906135c9565b81166001600160c01b0390811691161490505f80611629565b6001600160c01b03821615159250611623565b60405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b6044820152606490fd5b346103b8575f3660031901126103b8576116bc61306c565b606480546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b91908260409103126103b857604051611717816106a0565b8092803560ff811681036103b857825260209081013591611737836105e6565b0152565b9092919261174881611075565b9361175660405195866106db565b602085838152019160061b8301928184116103b857915b83831061177a5750505050565b602060409161178984866116ff565b81520192019161176d565b346103b85760a03660031901126103b8576004356117b1816105e6565b60243590604435906001600160401b0382116103b857366023830112156103b857610575926117ed6117fa93369060248160040135910161173b565b60643591608435936127f1565b6040519081529081906020820190565b346103b85760203660031901126103b8576020611828600435612e1f565b6040516001600160c01b039091168152f35b346103b8575f3660031901126103b8575f5460405160109190911c6001600160a01b03168152602090f35b346103b8575f3660031901126103b8576064546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b857602060ff60965416604051908152f35b6101009060431901126103b857604490565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460061b0101116103b857565b9190916060818403126103b85760405190611909826106c0565b819381356001600160401b0381116103b85782019181601f840112156103b85761193d604093928360208695359101610735565b8452602081013560208501520135910152565b346103b8576101a03660031901126103b8576004356001600160401b0381116103b857611981903690600401610dc9565b906024356001600160401b0381116103b8576119a1903690600401610dc9565b6119aa366118ad565b90610144356001600160401b0381116103b8576119cb9036906004016118bf565b929091610164356001600160401b0381116103b8576119ee9036906004016118ef565b9461018435976001600160401b0389116103b857611a136108ba9936906004016118ef565b976128ac565b346103b8575f3660031901126103b8576040517f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03168152602090f35b346103b8575f3660031901126103b85760206040517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68152f35b346103b8576101603660031901126103b8576004356001600160401b0381116103b857611ac8903690600401610dc9565b906024356001600160401b0381116103b857611ae8903690600401610dc9565b9092611af3366118ad565b92610144356001600160401b0381116103b857611b5c95611b4d611b1e611b559336906004016118ef565b96611b2f6103fe6001808054161490565b335f5260c8602052611b4760ff60405f205416612a07565b33613966565b943691610735565b9233613dd8565b5180511561143857602063ffffffff910151165f8052609760205263ffffffff60405f20541610611b8957005b60405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b6044820152606490fd5b346103b8575f3660031901126103b857602060a054604051908152f35b60206040818301928281528451809452019201905f5b818110611bf75750505090565b825163ffffffff16845260209384019390920191600101611bea565b346103b85760403660031901126103b857600435611c30816104b7565b602435906001600160401b0382116103b857366023830112156103b857816004013591611c5c83611075565b92611c6a60405194856106db565b8084526024602085019160051b830101913683116103b857602401905b828210611ca757610575611c9b8686612ab4565b60405191829182611bd4565b8135815260209182019101611c87565b346103b8575f3660031901126103b85760206040517f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8152f35b346103b85760203660031901126103b8576004356001600160401b0381116103b857611d38611d276108ba923690600401610dc9565b611031600280600154161415612338565b336135c9565b346103b8575f3660031901126103b8576020609c54604051908152f35b6001600160601b038116036103b857565b81601f820112156103b857803590611d8382611075565b92611d9160405194856106db565b82845260208085019360061b830101918183116103b857602001925b828410611dbb575050505090565b6040848303126103b85760206040918251611dd5816106a0565b8635611de0816105e6565b815282870135611def81611d5b565b83820152815201930192611dad565b346103b857366003190160a081126103b8576060136103b857604051611e23816106c0565b600435611e2f816104b7565b815260243561ffff811681036103b857602082015260443561ffff811681036103b857604082015260643590611e6482611d5b565b608435916001600160401b0383116103b857611e876108ba933690600401611d6c565b91611e9061306c565b6144df565b81601f820112156103b857803590611eac82611075565b92611eba60405194856106db565b828452602060608186019402830101918183116103b857602001925b828410611ee4575050505090565b6060848303126103b8576020606091604051611eff816106c0565b8635611f0a816104b7565b8152611f178388016112eb565b83820152611f27604088016112eb565b6040820152815201930192611ed6565b9080601f830112156103b8578135611f4e81611075565b92611f5c60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210611f845750505090565b602080918335611f9381611d5b565b815201910190611f77565b9080601f830112156103b8578135611fb581611075565b92611fc360405194856106db565b81845260208085019260051b820101918383116103b85760208201905b838210611fef57505050505090565b81356001600160401b0381116103b85760209161201187848094880101611d6c565b815201910190611fe0565b346103b8576101003660031901126103b8576120366105f7565b61203e610606565b90612047610613565b61204f61083d565b60843560a4356001600160401b0381116103b857612071903690600401611e95565b9160c4356001600160401b0381116103b857612091903690600401611f37565b9360e435966001600160401b0388116103b8576120b56108ba983690600401611f9e565b96612b8b565b346103b85760203660031901126103b85760ff6120d6610b36565b6120de612593565b50165f52609760205261057560405f2061ffff604051916120fe836106c0565b5463ffffffff81168352818160201c16602084015260301c16604082015260405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b346103b85760203660031901126103b85760043561216c816105e6565b61217461306c565b6001600160a01b0381161561218c576108ba906138a4565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b85760203660031901126103b8576004355f5460405163755b36bd60e11b8152906020908290600490829060101c6001600160a01b03165afa80156108eb5761223d915f916108bc57506001600160a01b031633146124bf565b6001541981198116036122875761225381600155565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c908060208101610812565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b346103b85760203660031901126103b85760043561230f816105e6565b60018060a01b03165f526099602052602060ff600160405f20015416610dc760405180926111bb565b1561233f57565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b91908110156114385760051b0190565b3561239e816105e6565b90565b60038210156108175752565b906106046040516123bd816106a0565b602060ff600183968054855201541691016123a1565b906040516123e0816106c0565b604081935463ffffffff8116835263ffffffff8160201c166020840152811c910152565b1561240b57565b606460405162461bcd60e51b815260206004820152600460248201526331371e1960e11b6044820152fd5b1561243d57565b60405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b6044820152606490fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061239e92818152019061246a565b908160209103126103b8575161239e816105e6565b6040513d5f823e3d90fd5b156124c657565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b908160209103126103b8575180151581036103b85790565b1561253d57565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b604051906125a0826106c0565b5f6040838281528260208201520152565b604051906125be826106a0565b5f6020838281520152565b61262a61239e916125d86125b1565b50604080517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6602082019081526001600160a01b03909316818301529081526126226060826106db565b519020613277565b6132c4565b1561263657565b60405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b6044820152606490fd5b90156114385790565b90821015611438570190565b91908110156114385760051b81013590601e19813603018212156103b85701908135916001600160401b0383116103b8576020018260051b360381136103b8579190565b908160209103126103b8575161239e816104b7565b156126d957565b60405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b6044820152606490fd5b1561271057565b60405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b6044820152606490fd5b1561274757565b60405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b906001820180921161279857565b612776565b9190820180921161279857565b906001116103b85790600190565b909392938483116103b85784116103b8578101920390565b8051156114385760200190565b80518210156114385760209160051b010190565b919493909260405192602084019460e08501917f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a875260018060a01b03166040860152606085015260c060808501528651809152602061010085019701905f5b81811061287e5750505061239e949561262292849260a084015260c083015203601f1981018352826106db565b8251805160ff168a526020908101516001600160a01b0316818b015260409099019890920191600101612851565b611b55819893839a956110316128f5612908999b9a9b6128d26103fe6001808054161490565b335f5260c86020526128ea60ff60405f205416612a07565b611b47888d14612a45565b96612901368c8e61173b565b8833613a9c565b9361293561293061291f610edb610ecd8589612664565b60ff165f52609760205260405f2090565b612a77565b9261294d61294387516127d0565b5163ffffffff1690565b63ffffffff61296c612963875163ffffffff1690565b63ffffffff1690565b91161161297c575b505050505050565b60206129f0611031946129f6936129eb611640986129fc9b6129a4610edb610ecd8b8f612664565b6129d06129bb896129c86129bb60408701516127d0565b516001600160601b031690565b9401516127d0565b906129e36129de8888612664565b612aa9565b923391614230565b612664565b01612394565b936127aa565b5f8080808080612974565b15612a0e57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606490fd5b15612a4c57565b606460405162461bcd60e51b815260206004820152600460248201526338a632b760e11b6044820152fd5b90604051612a84816106c0565b604061ffff82945463ffffffff81168452818160201c16602085015260301c16910152565b61239e9036906116ff565b9190805190612ac282611075565b91612ad060405193846106db565b808352612adf601f1991611075565b013660208401375f5b8151811015612b215780612b08612b01600193856127dd565b5187614386565b63ffffffff612b1783876127dd565b9116905201612ae8565b5090925050565b15612b2f57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b9694929091612bd59694925f5498612bbb60ff8b60081c16151515809b81612c4f575b8115612c2f575b50612b28565b89612bcc600160ff195f5416175f55565b612c1857612cf3565b612bdb57565b612be961ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612c2a61010061ff00195f5416175f55565b612cf3565b303b15915081612c41575b505f612bb5565b60ff1660011490505f612c3a565b600160ff8216109150612bae565b15612c6457565b60405162461bcd60e51b8152602060048201526002602482015261494560f01b6044820152606490fd5b609c54600160401b8110156106bb5760018101609c55609c5481101561143857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0180546001600160a01b0319166001600160a01b03909216919091179055565b612d2994610d019394612d24610cd4939b9a999b612d1f8d8b5190518091149081612e06575b50612c5d565b6138a4565b614669565b612d5b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316612c8e565b612d8d7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316612c8e565b612dbf7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316612c8e565b5f5b8151811015612dff5780612df9612dda600193856127dd565b51612de86129bb848a6127dd565b612df284886127dd565b51916144df565b01612dc1565b5050509050565b90508c51145f612d19565b5f1981019190821161279857565b805f52609860205260405f20549081155f14612e3b5750505f90565b5f52609860205260405f20905f19810190811161279857612e5b91611423565b505460401c90565b90612e6d8261071a565b612e7a60405191826106db565b8281528092612e8b601f199161071a565b0190602036910137565b5f1981146127985760010190565b908151811015611438570160200190565b5f81805b612f2e5750612eca9061ffff16612e63565b5f5f5b8251821080612f23575b15612f1c576001811b8416612ef5575b612ef090612e95565b612ecd565b906001612ef09160ff60f81b8460f81b165f1a612f128287612ea3565b5301919050612ee7565b5050905090565b506101008110612ed7565b5f1981018181116127985761ffff9116911661ffff8114612798576001019080612eb8565b908160209103126103b857516001600160c01b03811681036103b85790565b61239e939260609260018060a01b031682526020820152816040820152019061246a565b919060016020820151612fa8816111b1565b612fb1816111b1565b0361306757516040516333567f7f60e11b81529160209183918291612fdb91908760048501612f72565b03815f7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19081156108eb575f91613038575b506001600160c01b0316908161302c575050565b61164061060492612eb4565b61305a915060203d602011613060575b61305281836106db565b810190612f53565b5f613018565b503d613048565b505050565b6064546001600160a01b0316330361308057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381161561313e575f54604080516001600160a01b0360109390931c8316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a15f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b609d54604080516001600160a01b038084168252841660208201529192917f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c9190a16001600160a01b03166001600160a01b03199190911617609d55565b609e54604080516001600160a01b038084168252841660208201529192917f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc99190a16001600160a01b03166001600160a01b03199190911617609e55565b61327f614750565b9060405190602082019261190160f01b845260228301526042820152604281526132aa6062826106db565b51902090565b634e487b7160e01b5f52601260045260245ffd5b5f5160206150af5f395f51905f52906132db6125b1565b505f919006602060c0835b6133db575f935f5160206150af5f395f51905f526003818681818009090860405161331185826106db565b8436823784818560405161332582826106db565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206150af5f395f51905f5260a082015260056107cf195a01fa80156133e05761338f90614dab565b51916133db575f5160206150af5f395f51905f52828009146133c657505f5160206150af5f395f51905f5260015f940892936132e6565b929350506133d26106fc565b92835282015290565b6132b0565bfe5b9060016133f060ff936148e8565b928392161b11156133fe5790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b61352760ff7f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac921692835f52609760205260405f206134bf63ffffffff835116829063ffffffff1663ffffffff19825416179055565b6020820151815465ffff0000000067ffff000000000000604086015160301b169260201b169067ffffffff0000000019161717905560405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b0390a2565b1561353357565b606460405162461bcd60e51b8152602060048201526004602482015263071456d760e41b6044820152fd5b1561356557565b606460405162461bcd60e51b815260206004820152600460248201526310a9bab160e11b6044820152fd5b6001600160a01b03909116815260406020820181905261239e9291019061246a565b60409061239e93928152816020820152019061246a565b6001600160a01b0381165f9081526099602052604090209060018254920161360660016135f7835460ff1690565b613600816111b1565b14612436565b61366661362161047061361b60965460ff1690565b876133e2565b61362a85612e1f565b6001600160c01b039091169061364182151561352c565b6136578282166001600160c01b0316831461355e565b9019166001600160c01b031690565b6136708185614a4b565b6001600160c01b0316156137e9575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b857835f916136d5938360405180968195829463f4e24fe560e01b845260048401613590565b03925af180156108eb576137d5575b507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316803b156103b8575f604051809263bd29b8cd60e01b82528183816137378989600484016135b2565b03925af180156108eb576137c1575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031691823b156103b85761379c925f928360405180968195829463bd29b8cd60e01b8452600484016135b2565b03925af180156108eb576137ad5750565b806137bb5f610604936106db565b806105b4565b806137bb5f6137cf936106db565b5f613746565b806137bb5f6137e3936106db565b5f6136e4565b805460ff191660021790557f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b8576040516351b27a6d60e11b81526001600160a01b0383166004820152905f908290602490829084905af180156108eb57613890575b50816001600160a01b0382167f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e45f80a35f61367f565b806137bb5f61389e936106db565b5f61385a565b606480546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908160209103126103b8575190565b61012090604060c0610604959796949761016084019860018060a01b03168452613932602085018260208091803584520135910152565b80830180356060860152602001356080850152826080820160a08601370160e0830137019060208091805184520151910152565b6040516309aa152760e11b81526001600160a01b0382811660048301529091907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4916602083602481845afa9283156108eb575f93613a47575b5082156139cd575050905090565b602092506139fd935f6139df846125c9565b6040516317ef39cb60e31b81529687958694859391600485016138fb565b03925af19081156108eb575f91613a18575b50805f80612f1c565b613a3a915060203d602011613a40575b613a3281836106db565b8101906138ec565b5f613a0f565b503d613a28565b613a6191935060203d602011613a4057613a3281836106db565b915f6139bf565b15613a6f57565b60405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b6044820152606490fd5b91929092602082019283515f52609a60205260ff60405f205416613b155761060494613b0d926040850191613ad48351421115613a68565b613af7613aea88515f52609a60205260405f2090565b805460ff19166001179055565b609d546001600160a01b031696519251936127f1565b905191614c95565b60405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b6044820152606490fd5b60405190613b50826106c0565b60606040838281528260208201520152565b15613b6957565b606460405162461bcd60e51b815260206004820152600460248201526308509a5d60e21b6044820152fd5b15613b9b57565b60405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b6044820152606490fd5b6001602091835181550191015160038110156108175760ff80198354169116179055565b9060018060a01b031681526040602082015260806040613c17845160608386015260a085019061246a565b9360208101516060850152015191015290565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03909116815260406020820181905261239e93910191613c2a565b9080601f830112156103b8578151613c8381611075565b92613c9160405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613cb95750505090565b602080918351613cc881611d5b565b815201910190613cac565b9190916040818403126103b85780516001600160401b0381116103b85783613cfc918301613c6c565b9260208201516001600160401b0381116103b85761239e9201613c6c565b61239e949260609260018060a01b0316825260208201528160408201520191613c2a565b6020818303126103b8578051906001600160401b0382116103b857019080601f830112156103b8578151613d7181611075565b92613d7f60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613da75750505090565b602080918351613db6816104b7565b815201910190613d9a565b60409061239e949281528160208201520191613c2a565b91929394817fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa613ea9613e09613b43565b98613e9d613e2c6104708b610e758c613e2460965460ff1690565b923691610735565b613e3586612e1f565b6001600160c01b0390911690613e4c82151561352c565b60018060c01b0316613e66613e618284161590565b613b62565b6001600160a01b038a165f908152609f60205260409020613e9690613e8f905460a0549061279d565b4211613b94565b1785614a4b565b6040519182918261248e565b0390a26001613ed481613ecc8660018060a01b03165f52609960205260405f2090565b015460ff1690565b613edd816111b1565b03614072575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b8575f6040518092631fd93ca960e11b8252818381613f378b8b8b60048501613c4a565b03925af180156108eb5784935f92849261405e575b50613f6c876040519788948594632550477760e01b865260048601613d1a565b0381837f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19283156108eb575f938491859161403a575b5060408701526020860152613fd5604051948593849362bff04d60e01b855260048501613dc1565b0381837f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03165af19081156108eb575f91614018575b50815290565b61403491503d805f833e61402c81836106db565b810190613d3e565b5f614012565b905061405891503d8086833e61405081836106db565b810190613cd3565b5f613fad565b806137bb8561406c936106db565b5f613f4c565b6140a361407d6106fc565b838152600160208201526001600160a01b0385165f908152609960205260409020613bc8565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b857604051639926ee7d60e01b8152915f9183918290849082906140fa908a60048401613bec565b03925af180156108eb5761413f575b50806001600160a01b0383167fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe5f80a35f613ee3565b806137bb5f61414d936106db565b5f614109565b1561415a57565b60405162461bcd60e51b815260206004820152600360248201526206368360ec1b6044820152606490fd5b1561418c57565b60405162461bcd60e51b815260206004820152600360248201526263683160e81b6044820152606490fd5b908160209103126103b8575161239e81611d5b565b156141d357565b60405162461bcd60e51b815260206004820152600360248201526231b41960e91b6044820152606490fd5b1561420557565b60405162461bcd60e51b815260206004820152600360248201526263683360e81b6044820152606490fd5b6020919261428d6142806142b89896976142796142558783015160018060a01b031690565b6001600160a01b039081165f81815260996020526040902054969091161415614153565b5160ff1690565b60ff808516911614614185565b604051635401ed2760e01b8152600481019190915260ff909116602482015294859081906044820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa9283156108eb57610604945f9461433c575b50826143349261432f61431b936001600160601b0361432761431b82998b614d6a565b6001600160601b031690565b9116116141cc565b614d8d565b9116106141fe565b61431b919450926143349261432f6143736001600160601b039660203d60201161437f575b61436b81836106db565b8101906141b7565b969350509250926142f8565b503d614361565b815f52609860205260405f2054905f5b8281106143ca5760405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b6044820152606490fd5b808303838111612798576129636143e091612e11565b6144096143fe826143f9885f52609860205260405f2090565b611423565b505463ffffffff1690565b63ffffffff808516911611156144225750600101614396565b935050505090565b1561443157565b606460405162461bcd60e51b81526020600482015260046024820152630e29ac2f60e31b6044820152fd5b60ff60019116019060ff821161279857565b6080906001600160601b036020939460ff60608401961683521683820152606060408201528451809452019201905f5b8181106144ab5750505090565b825180516001600160a01b031685526020908101516001600160601b0316818601526040909401939092019160010161449e565b91906145226144f060965460ff1690565b9361450060c060ff87161061442a565b61451c61450c8661445c565b60ff1660ff196096541617609655565b84613469565b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031691823b156103b857614578925f928360405180968195829463ff694a7760e01b84528a6004850161446e565b03925af180156108eb57614655575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff83166004820152905f908290602490829084905af180156108eb57614641575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff90921660048301525f9082908183816024810161379c565b806137bb5f61464f936106db565b5f6145e8565b806137bb5f614663936106db565b5f614587565b5f5460101c6001600160a01b0316158061473e575b156146c3578161469061060493600155565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a26130c4565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b038116151561467e565b307f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5706001600160a01b0316148061483d575b156147ab577fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d1160408201527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608201524660808201523060a082015260a081526132aa60c0826106db565b507f0000000000000000000000000000000000000000000000000000000000007a694614614782565b1561486d57565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614966578151156149615761492461491a610edb61490c856127d0565b516001600160f81b03191690565b60ff600191161b90565b6001905b835182101561495c5760019061494761491a610edb61490c8689612ea3565b90614953818311614866565b17910190614928565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b8054600160401b8110156106bb576149fa91600182018155611423565b614a3857815160208084015160409485015163ffffffff909316911b67ffffffff00000000161767ffffffffffffffff199190931b16919091179055565b634e487b7160e01b5f525f60045260245ffd5b90614a5e825f52609860205260405f2090565b5480614aab5750614a7a610604925f52609860205260405f2090565b614aa6614a8561070b565b4363ffffffff168152925b5f60208501526001600160c01b03166040840152565b6149dd565b91614ad663ffffffff93614ad0614aca845f52609860205260405f2090565b91612e11565b90611423565b5090614ae6825463ffffffff1690565b43851694168403614b1157506106049250906001600160401b0382549181199060401b169116179055565b815467ffffffff000000001916602085901b67ffffffff000000001617909155610604929190614aa690614b4d905f52609860205260405f2090565b91614a90614b5961070b565b63ffffffff9095168552565b15614b6c57565b60405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a490fd5b908160209103126103b857516001600160e01b0319811681036103b85790565b15614c0e57565b60405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a490fd5b90813b15614d275791602091614cc193604051809581948293630b135d3f60e11b8452600484016135b2565b03916001600160a01b03165afa80156108eb57610604915f91614cf8575b506001600160e01b031916630b135d3f60e11b14614c07565b614d1a915060203d602011614d20575b614d1281836106db565b810190614be7565b5f614cdf565b503d614d08565b61060492614d3491614df7565b6001600160a01b03908116911614614b65565b906001600160601b03809116911602906001600160601b03821691820361279857565b614d886001600160601b039161ffff60206127109501511690614d47565b160490565b614d886001600160601b039161ffff60406127109501511690614d47565b15614db257565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b61239e91614e0491614e0c565b919091614e84565b815160418103614e38575090614e3491602082015190606060408401519301515f1a90615005565b9091565b604003614e715760406020830151920151918260ff1c91601b830180931161279857614e34936001600160ff1b03169260ff1690615005565b50505f90600290565b6005111561081757565b614e8d81614e7a565b80614e955750565b614e9e81614e7a565b60018103614eeb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b614ef481614e7a565b60028103614f415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b614f4a81614e7a565b60038103614fa25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b80614fae600492614e7a565b14614fb557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116150a35760ff16601b81141580615098575b61508d576020935f93604051938493608085019385528785015260408401526060830152838052039060015afa156108eb575f516001600160a01b0381161561508557905f90565b505f90600190565b505050505f90600490565b50601c81141561503d565b505050505f9060039056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122008e52422e3bba4dbde50639da22bb14dc5549ff1da95556698281d1600612a1464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":4,"balance":"0x21e19d79896c0580cf3","code":"0x","storage":{}},"0x4826533b4897376654bb4d4ad88b7fafd0c98528":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c8062bff04d146106b157806312d1d74d1461066c57806326d941f21461057f5780632ed583e5146104e55780636d14a987146104a15780638121906f1461046557806389026245146102f6578063a48bb0ac14610279578063bd29b8cd14610132578063caa3cd7614610118578063e2e68580146100d45763f34109221461009c575f80fd5b346100d05760203660031901126100d057602063ffffffff6100c46100bf6108cd565b610cb2565b54821c16604051908152f35b5f80fd5b346100d05760403660031901126100d05760ff6100ef6108cd565b165f52600160205260405f206024355f52602052602063ffffffff60405f205416604051908152f35b346100d0575f3660031901126100d05760206040515f8152f35b346100d05761014036610879565b9190610176337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b4363ffffffff16915f5b84811061018957005b8061019760019287866109ea565b3560f81c805f5260036020526101b260405f20541515610a0a565b805f528260205260405f20845f5260205263ffffffff60405f2054166101d782610cb2565b916101f66101ee63ffffffff855460201c16610a74565b809483610e78565b6102008382610c76565b928584018963ffffffff8254965416145f1461023d575f9150555b82860361022c575b50505001610180565b61023592610bc1565b868080610223565b50815f52600260205263ffffffff60405f2091165f5260205261027460405f20610265610978565b908a82525f6020830152610b7b565b61021b565b346100d05760403660031901126100d0576102f26102cd6102c761029b6108cd565b60ff6102a56108dd565b915f60206102b1610978565b8281520152165f52600360205260405f20610abf565b50610b5b565b60405191829182919091602063ffffffff816040840195828151168552015116910152565b0390f35b346100d05760403660031901126100d05761030f6108cd565b6103176108dd565b9063ffffffff6103278383610ce4565b16610339610334826109d2565b6109ac565b92818452610346826109d2565b602085019390601f19013685375f5b8381106103a0578486604051918291602083019060208452518091526040830191905f5b818110610387575050500390f35b8251845285945060209384019390920191600101610379565b6103b18363ffffffff831684610ddf565b6103bb8288610a8c565b526103c68187610a8c565b51156103d457600101610355565b60405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a490fd5b346100d05760203660031901126100d0576102f26102cd61049c6104876108cd565b5f6020610492610978565b8281520152610cb2565b610b5b565b346100d0575f3660031901126100d0576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346100d05760603660031901126100d0576104fe6108cd565b6105066108dd565b6044359163ffffffff831683036100d0576102f29261055c9260ff610556935f6020610530610978565b8281520152165f52600260205263ffffffff60405f2091165f5260205260405f20610b42565b50610aa0565b60405191829182919091602080604083019463ffffffff81511684520151910152565b346100d05760203660031901126100d05760ff61059a6108cd565b6105ce337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b16805f52600360205260405f205461060d575f52600360205261060b60405f206105f6610978565b9063ffffffff431682525f6020830152610ad4565b005b60405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608490fd5b346100d05760403660031901126100d0576102f261055c6106ac61068e6108cd565b6106966108dd565b905f60206106a2610978565b8281520152610c76565b610aa0565b346100d0576106bf36610879565b906106f4337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b610700610334836109d2565b9282845261070d836109d2565b602085019390601f19013685375f5b81811061076d578486604051918291602083019060208452518091526040830191905f5b81811061074e575050500390f35b825163ffffffff16845285945060209384019390920191600101610740565b6107788183866109ea565b3560f81c90815f52600360205261079460405f20541515610a0a565b61079d82610cb2565b600163ffffffff825460201c16019063ffffffff821161086557836107c88361080393600197610e78565b805f52600260205260405f2063ffffffff6107e285610a74565b165f5260205260405f20541561081c575b6107fc83610a74565b9087610bc1565b63ffffffff610812838a610a8c565b911690520161071c565b805f52600260205260405f2063ffffffff61083685610a74565b165f5260205261086060405f2061084b610978565b9063ffffffff431682525f6020830152610b7b565b6107f3565b634e487b7160e01b5f52601160045260245ffd5b60406003198201126100d0576004359160243567ffffffffffffffff81116100d057826023820112156100d05780600401359267ffffffffffffffff84116100d057602484830101116100d0576024019190565b6004359060ff821682036100d057565b6024359063ffffffff821682036100d057565b156108f757565b60405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a490fd5b604051906040820182811067ffffffffffffffff82111761099857604052565b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761099857604052565b67ffffffffffffffff81116109985760051b60200190565b908210156109f6570190565b634e487b7160e01b5f52603260045260245ffd5b15610a1157565b60405162461bcd60e51b815260206004820152603560248201527f496e64657852656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b63ffffffff5f199116019063ffffffff821161086557565b80518210156109f65760209160051b010190565b906001610aab610978565b9263ffffffff815416845201546020830152565b80548210156109f6575f5260205f2001905f90565b8054600160401b81101561099857610af191600182018155610abf565b610b2f578151815460209384015167ffffffffffffffff1990911663ffffffff9290921691909117921b67ffffffff0000000016919091179055565b565b634e487b7160e01b5f525f60045260245ffd5b80548210156109f6575f5260205f209060011b01905f90565b9063ffffffff610b69610978565b9254818116845260201c166020830152565b8054600160401b81101561099857610b9891600182018155610b42565b919091610b2f5760208163ffffffff8060019451161663ffffffff198554161784550151910155565b9160409063ffffffff60ff7f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f69486610bf98583610c76565b80544386169086168103610c3c5750600101555b1691825f526001602052835f20865f52602052835f2082821683198254161790558351928352166020820152a2565b9050610c7191508383165f526002602052865f208587165f52602052865f20610c63610978565b918252896020830152610b7b565b610c0d565b60ff165f90815260026020908152604080832063ffffffff9490941683529290522080545f19810190811161086557610cae91610b42565b5090565b60ff165f90815260036020526040902080545f19810190811161086557610cae91610abf565b8015610865575f190190565b60ff1690815f52600360205260405f2054805b610d845760405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a490fd5b825f52600360205260405f205f1982019082821161086557610da9916102c791610abf565b63ffffffff81511663ffffffff84161015610dce5750610dc890610cd8565b80610cf7565b6020015163ffffffff169392505050565b60ff909291921691825f52600260205260405f2063ffffffff82165f5260205260405f2054805b610e1257505050505f90565b835f52600260205260405f2063ffffffff83165f5260205260405f205f1982019082821161086557610e479161055691610b42565b63ffffffff81511663ffffffff85161015610e6c5750610e6690610cd8565b80610e06565b60200151949350505050565b919063ffffffff81541663ffffffff43168091145f14610eba5750610b2d92509067ffffffff0000000082549160201b169067ffffffff000000001916179055565b91905060ff610b2d93165f52600360205263ffffffff60405f2091610edd610978565b938452166020830152610ad456fea264697066735822122053d4af3d0c4f2686c612617d49f8b839866038606635662e26fbfc230a697ada64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x4c5859f0f772848b2d91f1d83e2fe57935348029":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610022575b3615610018575f80fd5b610020613ef5565b005b5f3560e01c806306045a91146102ec57806310d67a2f146102e7578063136439dd146102e2578063137122b5146102dd578063171f1d5b146102d857806318daeeaf146102d35780632e1a7d4d146102ce57806333cfb7b7146102c95780633bc28c8c146102c4578063416c7e5e146102bf5780634223d551146102ba5780634a5bf632146102b55780634ae07c37146102b0578063595c6a67146102ab5780635ac86ab7146102a65780635c975abb146102a15780635df459461461029c57806368304835146102975780636b3aa72e146102925780636d14a9871461028d57806370a0823114610238578063715018a614610288578063886f1195146102835780638da5cb5b1461027e57806395c6d604146102795780639926ee7d14610274578063a364f4da1461026f578063a98fb3551461026a578063ab21739a14610265578063b099627e14610260578063b753645e1461025b578063b98d090814610256578063d66eaabd14610251578063df5cf7231461024c578063e481af9d14610247578063ea5ca34b14610242578063f2fde38b1461023d578063f474b52014610238578063f7013ef614610233578063f9120af61461022e578063fa534dc014610229578063fabc1cbc14610224578063fc299dee1461021f578063fce36c7d1461021a5763fd4c3b7c0361000e57611f10565b611eb5565b611e8d565b611d7f565b611c81565b611c3a565b611b1e565b6110e5565b611a8d565b611a70565b611a55565b611a11565b611838565b611816565b6117f5565b6117ac565b611457565b61139d565b6112d4565b611249565b6111f8565b6111a3565b61117b565b611120565b6110a1565b61105d565b611019565b610fd5565b610fb8565b610f85565b610eff565b610e76565b610b7c565b610b3f565b610a0c565b6109d5565b6109a1565b610887565b61082d565b6107c5565b61068d565b610548565b6104a6565b61042b565b606435906001600160601b03198216820361030857565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761033b57604052565b61030c565b606081019081106001600160401b0382111761033b57604052565b90601f801991011681019081106001600160401b0382111761033b57604052565b6040519061038c6101008361035b565b565b6040519061038c60408361035b565b9061038c604051928361035b565b6001600160401b03811161033b57601f01601f191660200190565b9291926103d2826103ab565b916103e0604051938461035b565b829481845281830111610308578281602093845f960137010152565b9080601f8301121561030857816020610417933591016103c6565b90565b6001600160a01b0381160361030857565b34610308576101003660031901126103085760243560443560043561044e6102f1565b9260a435926084356001600160401b038511610308576104a2956104796104909636906004016103fc565b9260c4359460e4359661048b8861041a565b611fb5565b60405190151581529081906020820190565b0390f35b3461030857602036600319011261030857600480356104c48161041a565b60fb5460405163755b36bd60e11b81529260209184919082906001600160a01b03165afa918215610543576100209261050f915f91610514575b506001600160a01b031633146120de565b613ff6565b610536915060203d60201161053c575b61052e818361035b565b8101906120be565b5f6104fe565b503d610524565b6120d3565b346103085760203660031901126103085760043560fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa80156105435761059f915f91610653575b50612152565b60fc54818116036105e8578060fc557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806105e33394829190602083019252565b0390a2005b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610675915060203d60201161067b575b61066d818361035b565b81019061213d565b5f610599565b503d610663565b60ff81160361030857565b346103085760203660031901126103085760206004356106ac81610682565b60cc54600160ff60405193161b1615158152f35b60409060e319011261030857604051906106d982610320565b60e4358252610104356020830152565b91908260409103126103085760405161070181610320565b6020808294803584520135910152565b9080601f83011215610308576040519161072c60408461035b565b82906040810192831161030857905b8282106107485750505090565b813581526020918201910161073b565b9060806063198301126103085760405161077181610320565b602061078c8294610783816064610711565b845260a4610711565b910152565b919060808382031261030857602061078c604051926107af84610320565b604084966107bd8382610711565b865201610711565b34610308576101203660031901126103085760043560403660231901126103085761081d60409182516107f781610320565b6024358152604435602082015261080d36610758565b90610817366106c0565b926121ed565b8251911515825215156020820152f35b346103085760203660031901126103085760ff60043561084c81610682565b610854614565565b166001811b1960cc541660cc557f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a5f80a2005b34610308576020366003190112610308576004356108b26108ac60088060fc54161490565b15611f69565b335f5260ca6020528060405f20541061092b57335f90815260ca6020526040812090918291829182916108e68282546122fa565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a2818115610922575b3390f11561054357005b506108fc610918565b335f90815260ca6020526040902061095c91905b54632e2a182f60e11b5f5233600452602491909152604452606490565b5ffd5b60206040818301928281528451809452019201905f5b8181106109825750505090565b82516001600160a01b0316845260209384019390920191600101610975565b34610308576020366003190112610308576104a26109c96004356109c48161041a565b612493565b6040519182918261095f565b34610308576020366003190112610308576100206004356109f58161041a565b6109fd614565565b61465b565b8015150361030857565b3461030857602036600319011261030857600435610a2981610a02565b604051638da5cb5b60e01b81526020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa908115610543575f91610b20575b506001600160a01b03163303610a8f57610020906146b9565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b610b39915060203d60201161053c5761052e818361035b565b5f610a76565b602036600319011261030857610020600435610b5a8161041a565b610b6b60108060fc54161415611f69565b34906146f7565b5f91031261030857565b34610308575f3660031901126103085760cb546040516001600160a01b039091168152602090f35b6024359063ffffffff8216820361030857565b359063ffffffff8216820361030857565b6001600160401b03811161033b5760051b60200190565b9080601f83011215610308578135610bf681610bc8565b92610c04604051948561035b565b81845260208085019260051b82010192831161030857602001905b828210610c2c5750505090565b60208091610c3984610bb7565b815201910190610c1f565b81601f82011215610308578035610c5a81610bc8565b92610c68604051948561035b565b81845260208085019260061b8401019281841161030857602001915b838310610c92575050505090565b6020604091610ca184866106e9565b815201920191610c84565b9080601f83011215610308578135610cc381610bc8565b92610cd1604051948561035b565b81845260208085019260051b820101918383116103085760208201905b838210610cfd57505050505090565b81356001600160401b03811161030857602091610d1f87848094880101610bdf565b815201910190610cee565b9190916101808184031261030857610d4061037c565b9281356001600160401b0381116103085781610d5d918401610bdf565b845260208201356001600160401b0381116103085781610d7e918401610c44565b602085015260408201356001600160401b0381116103085781610da2918401610c44565b6040850152610db48160608401610791565b6060850152610dc68160e084016106e9565b60808501526101208201356001600160401b0381116103085781610deb918401610bdf565b60a08501526101408201356001600160401b0381116103085781610e10918401610bdf565b60c08501526101608201356001600160401b03811161030857610e339201610cac565b60e0830152565b90602080835192838152019201905f5b818110610e575750505090565b82516001600160601b0316845260209384019390920191600101610e4a565b3461030857606036600319011261030857600435610e92610ba4565b90604435906001600160401b03821161030857610ef592610eba610ec0933690600401610d2a565b91612c68565b604051928392604084526020610ee182516040808801526080870190610e3a565b910151848203603f19016060860152610e3a565b9060208301520390f35b34610308575f3660031901126103085760fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa801561054357610f51915f916106535750612152565b5f1960fc556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b34610308576020366003190112610308576020600160ff600435610fa881610682565b161b8060fc541614604051908152f35b34610308575f36600319011261030857602060fc54604051908152f35b34610308575f366003190112610308576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b34610308575f366003190112610308576040517f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b34610308576020366003190112610308576004356111028161041a565b60018060a01b03165f5260ca602052602060405f2054604051908152f35b34610308575f36600319011261030857611138614565565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610308575f3660031901126103085760fb546040516001600160a01b039091168152602090f35b34610308575f366003190112610308576033546040516001600160a01b039091168152602090f35b9181601f84011215610308578235916001600160401b038311610308576020838186019501011161030857565b34610308576040366003190112610308576004356001600160401b0381116103085761123a61122d60209236906004016111cb565b91906024359236916103c6565b82815191012014604051908152f35b34610308576040366003190112610308576004356112668161041a565b602435906001600160401b0382116103085760606003198336030112610308576040519061129382610340565b82600401356001600160401b03811161030857610020936112bc604492600436918401016103fc565b84526024810135602085015201356040830152613551565b34610308575f6020366003190112610308576004356112f28161041a565b611326337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031690813b15610308576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af1801561054357611391575080f35b61002091505f9061035b565b34610308575f6020366003190112610308576004356001600160401b0381116103085736602382011215610308576113df9036906024816004013591016103c6565b6113e7614565565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316803b156103085760405163a98fb35560e01b815260206004820152915f918391829084908290611445906024830190613631565b03925af1801561054357611391575080f35b34610308576060366003190112610308576004356024356114778161041a565b6044356001600160401b03811161030857611496903690600401610d2a565b60cb546001600160a01b03163381900361179657506114bc6108ac60028060fc54161490565b5a6040805160208101868152606086901b6001600160601b031916928201929092526114f581605481015b03601f19810183528261035b565b5190209161150b835f5260c960205260405f2090565b92835463ffffffff6115208263ffffffff1690565b16156117825760201c60ff1661177057835464ff0000000019166401000000001784556001600160a01b0385165f90815260ca602052604090205493600181015480951061172d575461157b92919063ffffffff1690612c68565b50936115a86001600160601b036115a26115958851612397565b516001600160601b031690565b16613655565b60208601906115d16115c56115c06115958551612397565b613694565b6001600160601b031690565b116116e0575f808080888861163b61163461162f8b8b7f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e2604051806116258a82919091602081019260018060a01b03169052565b0390a25a906122fa565b6123b5565b3a90613681565b9080821084146116d85750905b6001600160a01b0381165f90815260ca6020526040902061166a8382546122fa565b90556001600160a01b03165f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a260cb546116bf906116b3906001600160a01b031681565b6001600160a01b031690565b8282156116cf575bf11561054357005b506108fc6116c7565b905090611648565b61095c9061170c6115c06115956117056117006115c56115958d51612397565b613655565b9351612397565b63530f5c4560e11b5f526004919091526001600160601b0316602452604490565b61095c868661174c8260018060a01b03165f5260ca60205260405f2090565b54632e2a182f60e11b5f526001600160a01b03909216600452602452604452606490565b634e78d7f960e11b5f5260045260245ffd5b6311cb69a760e11b5f52600482905260245ffd5b632cbe419560e01b5f523360045260245260445ffd5b34610308576020366003190112610308576004355f5260c9602052606060405f206001815491015460ff6040519263ffffffff8116845260201c16151560208301526040820152f35b3461030857602036600319011261030857600435611811614565565b60cc55005b34610308575f36600319011261030857602060ff609754166040519015158152f35b6060366003190112610308576004356024356001600160401b038111610308576118669036906004016111cb565b91906044359261187d6108ac60018060fc54161490565b60408051602081018581523360601b6001600160601b031916928201929092526118aa81605481016114e7565b5190209063ffffffff6118d26118c8845f5260c960205260405f2090565b5463ffffffff1690565b166119fd57346119b5575b335f90815260ca602052604090208590541061199c577f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5593946105e39161198f6119256136b5565b4363ffffffff168082529561194e905f60208401528560408401525f5260c960205260405f2090565b90604060019163ffffffff81511663ffffffff198554161784556020810151151564ff0000000085549160201b169064ff0000000019161784550151910155565b60405194859433866136d3565b335f90815260ca6020526040902061095c90869061093f565b335f90815260ca602052604090206119ce348254612419565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a26118dd565b630c40bc4360e21b5f52600482905260245ffd5b34610308575f366003190112610308576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b34610308575f366003190112610308576104a26109c9613719565b34610308575f36600319011261030857602060cc54604051908152f35b3461030857602036600319011261030857600435611aaa8161041a565b611ab2614565565b6001600160a01b03811615611aca576100209061497d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103085760a036600319011261030857600435611b3b8161041a565b611bb2602435611b4a8161041a565b604435611b568161041a565b60643590611b638261041a565b608435925f5495611b98611b82611b7e8960ff9060081c1690565b1590565b80988199611c2c575b8115611c0c575b50613946565b86611ba9600160ff195f5416175f55565b611bf5576139a9565b611bb857005b611bc661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c0761010061ff00195f5416175f55565b6139a9565b303b15915081611c1e575b505f611b92565b60ff1660011490505f611c17565b600160ff8216109150611b8b565b3461030857602036600319011261030857600435611c578161041a565b611c5f614565565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055005b346103085760e036600319011261030857604435600435602435611ca36102f1565b916084359260a4356001600160401b03811161030857602094611ccd611d2b9236906004016103fc565b9060c43593611ce36108ac60048060fc54161490565b60405198899788976306045a9160e01b89526004890152602488015260448701526001600160601b0319166064860152608485015261010060a4850152610104840190613631565b9060c48301525f60e48301520381305afa8015610543576104a2915f91611d60575b5060405190151581529081906020820190565b611d79915060203d60201161067b5761066d818361035b565b5f611d4d565b346103085760203660031901126103085760fb5460405163755b36bd60e11b81526004803592602091839182906001600160a01b03165afa801561054357611dd8915f9161051457506001600160a01b031633146120de565b60fc54198119811603611e2257611dee8160fc55565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9080602081016105e3565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b34610308575f366003190112610308576065546040516001600160a01b039091168152602090f35b34610308576020366003190112610308576004356001600160401b03811161030857366023820112156103085780600401356001600160401b038111610308573660248260051b840101116103085760246100209201613abe565b346103085760203660031901126103085760ff600435611f2f81610682565b611f37614565565b166001811b60cc541760cc557fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe5f80a2005b15611f7057565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b9061041797969594939291611fd16108ac60048060fc54161490565b90969092906001600160a01b0381166120875750835b63ffffffff6120016118c8835f5260c960205260405f2090565b161561207b57611b7e61201f612029925f5260c960205260405f2090565b5460201c60ff1690565b6120705760408051602081019485529081019790975260608701919091526001600160601b03191660808601526104179461206781609481016114e7565b51902091613f10565b505050505050505f90565b50505050505050505f90565b6040516120b6816114e760208201948986909160349282526001600160601b03199060601b1660208201520190565b519020611fe7565b9081602091031261030857516104178161041a565b6040513d5f823e3d90fd5b156120e557565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b90816020910312610308575161041781610a02565b1561215957565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b9060028110156121d45760051b0190565b6121af565b634e487b7160e01b5f52601260045260245ffd5b6122c96122a66122cf956122a061229985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261227081610120840103601f19810183528261035b565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614122565b90614168565b926122a06122bb6122b56141f0565b946142e7565b916122c4614403565b614122565b91614437565b9091565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116122f557565b6122d3565b919082039182116122f557565b90816020910312610308575190565b9081602091031261030857516001600160c01b03811681036103085790565b90816020910312610308575161041781610682565b6040519061235960208361035b565b5f808352366020840137565b9061236f82610bc8565b61237c604051918261035b565b828152809261238d601f1991610bc8565b0190602036910137565b8051156121d45760200190565b9081518110156121d4570160200190565b906201117082018092116122f557565b90602082018092116122f557565b90600182018092116122f557565b90600282018092116122f557565b90600382018092116122f557565b90600482018092116122f557565b90600582018092116122f557565b919082018092116122f557565b6001600160601b0381160361030857565b908160409103126103085760206040519161245183610320565b805161245c8161041a565b8352015161246981612426565b602082015290565b80518210156121d45760209160051b010190565b5f1981146122f55760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3690911690602081602481855afa90811561054357612513916020915f91612803575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa908115610543575f916127d4575b506001600160c01b0316908115908115612771575b5061276857612549906145bd565b5f91907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690835b8151851015612625576125ce60206125ab6125a561259789876123a4565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa8015610543576001926125ed925f926125f5575b50612419565b940193612579565b61261791925060203d811161261e575b61260f818361035b565b810190612307565b905f6125e7565b503d612605565b612630919450612365565b925f905f5b81518110156127625761264e6125a561259783856123a4565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa918215610543575f92612742575b50905f915b81831061269357505050600101612635565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861270b985f91612714575b50516001600160a01b031690565b92612471565b6001600160a01b039091169052565b612485565b95019190612681565b612735915060403d811161273b575b61272d818361035b565b810190612437565b5f6126e3565b503d612723565b61275b91925060203d811161261e5761260f818361035b565b905f61267c565b50505050565b5061041761234a565b604051639aa1653d60e01b81529150602090829060049082905afa80156105435760ff915f916127a5575b5016155f61253b565b6127c7915060203d6020116127cd575b6127bf818361035b565b810190612335565b5f61279c565b503d6127b5565b6127f6915060203d6020116127fc575b6127ee818361035b565b810190612316565b5f612526565b503d6127e4565b61281a9150823d841161261e5761260f818361035b565b5f6124f3565b6040519061282d82610320565b60606020838281520152565b6040519061284860408361035b565b600182525f6020830152565b1561285b57565b60405162461bcd60e51b815260206004820152604160248201525f516020614d135f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156128c457565b60a460405162461bcd60e51b815260206004820152604460248201525f516020614d135f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b1561292f57565b60405162461bcd60e51b815260206004820152603c60248201525f516020614d135f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b1561298e57565b608460405162461bcd60e51b815260206004820152604060248201525f516020614d135f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b156129ec57565b60405162461bcd60e51b815260206004820152606660248201525f516020614d135f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610308575167ffffffffffffffff19811681036103085790565b15612aa157565b60405162461bcd60e51b815260206004820152606160248201525f516020614d135f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b90816020910312610308575161041781612426565b906001600160601b03809116911603906001600160601b0382116122f557565b15612b6557565b60405162461bcd60e51b815260206004820152604360248201525f516020614d135f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15612bd057565b60405162461bcd60e51b815260206004820152603960248201525f516020614d135f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110612c525750505090565b8251845260209384019390920191600101612c45565b9190612c72612820565b50612c7b612839565b5160408301515114806134ae575b80613498575b8061347d575b612c9e90612854565b612cb0602083015151835151146128bd565b612cc763ffffffff431663ffffffff831610612928565b612ccf61038e565b5f81525f602082015290612ce1612820565b94612cf3612ced612839565b51612365565b6020870152612d03612ced612839565b8652612d0d612820565b90612d1c602086015151612365565b8252612d2c602086015151612365565b6020830152612d39612839565b604051639aa1653d60e01b8152906020826004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa90811561054357612d91925f9261345c575b5061475a565b965f945b60208701518051871015612f0c57612db087612dc392612471565b5180515f526020015160205260405f2090565b612dd1876020870151612471565b5285612ed7575b612de6866020860151612471565b51602086612e02612df88a8c51612471565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36165afa91821561054357600192612eb1925f91612eb9575b50838060c01b0316612e82898851612471565b526122a0612e948960208c0151612471565b51612eab8d612ea48c8b51612471565b51166147e1565b90614812565b950194612d95565b612ed1915060203d81116127fc576127ee818361035b565b5f612e6f565b612f07612ee8876020870151612471565b51612f006020870151612efa8a6122e7565b90612471565b5110612987565b612dd8565b50909750612f1f919296959394506148f8565b90612f2c60975460ff1690565b8015613451576040516318891fd760e31b81526020816004817f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa908115610543575f91613432575b5095909492955b5f965b612f91612839565b518810156133df578661332b575b612fc1612fb3612db08a60408a0151612471565b67ffffffffffffffff191690565b90612fd96125a56125978b612fd4612839565b6123a4565b602087612fed612df88d60a08d0151612471565b604051631a2f32ab60e21b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa9283156105435761308993613074925f916132fd575b5067ffffffffffffffff19918216911614612a9a565b613082896040890151612471565b5190614168565b9061309c6125a56125978a612fd4612839565b6020866130b0612df88c60c08c0151612471565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e165afa8015610543576115958a60208e61314661314d95613158975f916132e0575b506131388585850151612471565b906001600160601b03169052565b0151612471565b6131388a8d51612471565b5f965f5b6020880151518110156132d1578a8a613199613179848451612471565b5161318c6125a561259785612fd4612839565b60ff161c60019081161490565b6131a8575b505060010161315c565b888a9261322d6131ed612df8879f6131e78760e06131de849c60206131d66125a5612597839f612fd4612839565b9a0151612471565b519a0151612471565b51612471565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830195909552919093166064840152829081906084820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa918215610543576132908e6001948e86955f9261329b575b506126f16131389293519361328b6115958487612471565b612b3e565b019890508a8a61319e565b61313892506132c36126f19160203d81116132ca575b6132bb818361035b565b810190612b29565b9250613273565b503d6132b1565b50600190980197965090612f89565b6132f79150843d81116132ca576132bb818361035b565b5f61312a565b61331e915060203d8111613324575b613316818361035b565b810190612a79565b5f61305e565b503d61330c565b61336560206133426125a56125978c612fd4612839565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa8015610543576133bc915f916133c1575b506133b68463ffffffff891692612419565b116129e5565b612f9f565b6133d9915060203d811161261e5761260f818361035b565b5f6133a4565b60209497506114e7965061341491506134199261342c9661340d929a959a60806060830151920151926121ed565b9190612b5e565b612bc9565b0151604051928391602083019586612c28565b51902090565b61344b915060203d60201161261e5761260f818361035b565b5f612f7f565b5f9590949295612f86565b61347691925060203d6020116127cd576127bf818361035b565b905f612d8b565b50612c9e613489612839565b5160e084015151149050612c95565b506134a1612839565b5160c08301515114612c8f565b506134b7612839565b5160a08301515114612c89565b156134cb57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b613585337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031691823b15610308575f928392604051948580948193639926ee7d60e01b835260018060a01b031660048301526040602483015260406135fa82516060604486015260a4850190613631565b91602081015160648501520151608483015203925af180156105435761361d5750565b8061362b5f61038c9361035b565b80610b72565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906064820291808304606414901517156122f557565b906006820291808304600614901517156122f557565b818102929181159184041417156122f557565b6001600160601b036043911602906001600160601b0382169182036122f557565b604051906136c282610340565b5f6040838281528260208201520152565b95949360609363ffffffff60a0948394600180881b03168a5216602089015260806040890152816080890152838801375f828288010152601f8019910116850101930152565b604051639aa1653d60e01b81527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031690602081600481855afa80156105435760ff915f91613927575b5016801561391d577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316905f9081905b8083106138d957506137b49150612365565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105435760ff915f916138bb575b50168110156138b457604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa918215610543575f92613894575b50905f915b81831061382e575050506001016137b9565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861388b985f916127145750516001600160a01b031690565b9501919061381c565b6138ad91925060203d811161261e5761260f818361035b565b905f613817565b5092505050565b6138d3915060203d81116127cd576127bf818361035b565b5f6137df565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa801561054357600192613914925f926125f55750612419565b920191906137a2565b505061041761234a565b613940915060203d6020116127cd576127bf818361035b565b5f61376a565b1561394d57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b90939291906001600160a01b03811615613a89576001600160a01b03851615613a50576001600160a01b03821615613a1657613a0c613a11926139ef61038c97846149c5565b60018060a01b03166001600160601b0360a01b60cb54161760cb55565b61497d565b614a38565b604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606490fd5b6065546001600160a01b03163303613cd2577f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b0316915f5b818110613b405750823b1561030857613b2f925f928360405180968195829463fce36c7d60e01b845260048401613de6565b03925af180156105435761361d5750565b5f6020613b9b613b5e6116b383613b5887898b613d52565b01613d74565b6040613b6b86888a613d52565b6040516323b872dd60e01b8152336004820152306024820152910135604482015293849283919082906064820190565b03925af1801561054357613cb6575b50613bbe6116b36020613b58848688613d52565b604051636eb1769f60e11b81523060048201526001600160a01b03861660248201529190602090839060449082905afa801561054357613c616020915f948591613c99575b50613c2e613c196116b385613b58888b8d613d52565b916040613c27878a8c613d52565b0135612419565b60405163095ea7b360e01b81526001600160a01b038a166004820152602481019190915294859283919082906044820190565b03925af191821561054357600192613c7b575b5001613afd565b613c929060203d811161067b5761066d818361035b565b505f613c74565b613cb09150833d811161261e5761260f818361035b565b5f613c03565b613ccd9060203d811161067b5761066d818361035b565b613baa565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b91908110156121d45760051b81013590609e1981360301821215610308570190565b356104178161041a565b916020908281520191905f5b818110613d975750505090565b9091926040806001928635613dab8161041a565b848060a01b031681526001600160601b036020880135613dca81612426565b166020820152019401929101613d8a565b359061038c8261041a565b9180602084016020855252604083019060408160051b85010193835f91609e1982360301905b848410613e1d575050505050505090565b90919293949596603f19828203018752873583811215610308578401908135601e198336030181121561030857820191602083359301906001600160401b038411610308578360061b3603821361030857613ee6836080613edb81613e916020989760019a60a08b9a5260a0870191613d7e565b95613eaf613ea0898301613ddb565b6001600160a01b0316868a0152565b60408101356040860152613ed5613ec860608301610bb7565b63ffffffff166060870152565b01610bb7565b63ffffffff16910152565b99019701959401929190613e0c565b613f0660208060fc54161415611f69565b61038c34336146f7565b93909291601f855116613f775791906020925b85518411613f6e5760018316613f54575f5282850151602052613f4d60405f209260011c936123c5565b9291613f23565b838601515f52602052613f4d60405f209260011c936123c5565b92509350501490565b60405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a490fd5b6001600160a01b038116156140615760fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a160018060a01b03166001600160601b0360a01b60fb54161760fb55565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b604051906140eb82610320565b5f6020838281520152565b60405190610180614107818461035b565b368337565b6040519061411b60208361035b565b6020368337565b919060409060606141316140de565b9485926020855192614143858561035b565b8436853780518452015160208301528482015260076107cf195a01fa1561416657565bfe5b6020929160806040926141796140de565b9586938186519361418a868661035b565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561416657156141bb57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b6040516141fc81610320565b604090815161420b838261035b565b8236823781526020825191614220848461035b565b8336843701528051614232828261035b565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190614288838361035b565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526142dd8351938461035b565b8252602082015290565b5f516020614cd35f395f51905f52906142fe6140de565b505f919006602060c0835b6143fe575f935f516020614cd35f395f51905f5260038186818180090908604051614334858261035b565b84368237848185604051614348828261035b565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614cd35f395f51905f5260a082015260056107cf195a01fa8015614166576143b290614c86565b51916143fe575f516020614cd35f395f51905f52828009146143e957505f516020614cd35f395f51905f5260015f94089293614309565b929350506143f561038e565b92835282015290565b6121d9565b61440b6140de565b5060405161441881610320565b600181526002602082015290565b90600c8110156121d45760051b0190565b93929091614445604061039d565b9485526020850152614457604061039d565b91825260208201526144676140f6565b925f5b600281106144945750505060206101809261448361410c565b93849160086201d4c0fa9151151590565b806144a060019261366b565b6144aa82856121c3565b51516144b68289614426565b5260206144c383866121c3565b5101516144d86144d2836123d3565b89614426565b526144e382866121c3565b5151516144f26144d2836123e1565b5261450861450083876121c3565b515160200190565b516145156144d2836123ef565b52602061452283876121c3565b510151516145326144d2836123fd565b5261455e6145586145516020614548868a6121c3565b51015160200190565b519261240b565b88614426565b520161446a565b6033546001600160a01b0316330361457957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff6145c9826147e1565b166145d3816103ab565b906145e1604051928361035b565b8082526145f0601f19916103ab565b013660208301375f5f5b8251821080614650575b15614649576001811b8416614622575b61461d90612485565b6145fa565b90600161461d9160ff60f81b8460f81b165f1a61463f82876123a4565b5301919050614614565b5050905090565b506101008110614604565b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b8115614747576001600160a01b03165f81815260ca602052604090208054919282019182106122f55755805f5260ca6020525f516020614cf35f395f51905f52602060405f2054604051908152a2565b50632097692160e11b5f5260045260245ffd5b90600161476860ff93614b9f565b928392161b11156147765790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6147ed575090565b5f1981018181116122f55761ffff9116911661ffff81146122f55760010190806147e5565b9061481b6140de565b5061ffff8116906102008210156148c057600182146148bb5761483c61038e565b5f81525f602082015292906001905f925b61ffff831685101561486157505050505090565b600161ffff831660ff86161c81161461489b575b60016148916148868360ff94614168565b9460011b61fffe1690565b940116929161484d565b9460016148916148866148b08960ff95614168565b989350505050614875565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b6149006140de565b50805190811580614971575b1561492d57505060405161492160408261035b565b5f81525f602082015290565b60205f516020614cd35f395f51905f52910151065f516020614cd35f395f51905f52035f516020614cd35f395f51905f5281116122f557604051916142dd83610320565b5060208101511561490c565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b9060ff5f5460081c16156149df576109fd61038c9261497d565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb546001600160a01b03161580614b0b575b15614a905781614a5d61038c9360fc55565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a2613ff6565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b0381161515614a4b565b15614b2457565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614c0f57815115614c0a57614bcd614bc36125a561259785612397565b60ff600191161b90565b6001905b8351821015614c0557600190614bf0614bc36125a561259786896123a4565b90614bfc818311614b1d565b17910190614bd1565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b15614c8d57565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212203f93810e136abc668d4b6e863312064f727ebbe3f1a248a9593f47836096adac64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":2,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x663f3ad617193148711d28f5334ee4ed07016602":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","storage":{}},"0x68b1d87f95878fe05b998f19b66f4baba5de1aed":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x70e0ba845a1a0f2da3359c97e0285013525ffc49":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","storage":{"0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x0000000000000000000000000000000000000000000000000000000000000001","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x0000000000000013000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}},"0x7969c5ed335650692bc04293b07f5bf2e7a673c0":{"nonce":1,"balance":"0x0","code":"0x608080604052600436101561009b575b50361561001a575f80fd5b60fb546001600160a01b0316330361002e57005b335f5260fd60205260405f208054903482018092116100875755335f5260fd6020525f60016040822001556040513481527f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77060203392a2005b634e487b7160e01b5f52601160045260245ffd5b5f905f3560e01c90816317d89c4e14611442575080632df4e21e1461140a5780632e1a7d4d1461130a5780633659cfe61461100e5780633f4ba83a14610f7b5780634d5431ea14610f405780634f1ef28614610be657806352d1902d14610b2457806358b96e2714610afc5780635c975abb14610ada578063715018a614610a7f57806373e289d014610a635780638456cb5914610a0a5780638da5cb5b146109e2578063953ef807146109ba578063a69df4b51461092c578063a7d3180914610651578063c0c53b8b146103b6578063c392299e146102f0578063c89109131461029f578063f2fde38b1461020e5763f83d08ba0361000f573461020b578060031936011261020b576101ad6115d9565b33815260fd6020526040812054156101f85733815260fd602052806001604082200155337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd8280a280f35b63366095e160e11b815233600452602490fd5b80fd5b503461020b57602036600319011261020b57610228611479565b61023061161d565b6001600160a01b0381161561024b5761024890611675565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461020b57602036600319011261020b576060906040906001600160a01b036102c7611479565b16815260fd60205220805490600260018201549101549060405192835260208301526040820152f35b50604036600319011261020b578060043561030961148f565b9061031261161d565b60fb546001600160a01b031691823b156103b157838093602460405180968193632e1a7d4d60e01b83528760048401525af19283156103a6578493610389575b50829182918290821561037f575b6001600160a01b031690f1156103735780f35b604051903d90823e3d90fd5b6108fc9150610360565b83610396919492946114a5565b6103a25782915f610352565b5050fd5b6040513d86823e3d90fd5b505050fd5b503461020b57606036600319011261020b576004356001600160a01b0381169081900361064d576103e561148f565b906044356001600160a01b03811691908290036106495783549260ff8460081c16159384809561063c575b8015610625575b156105c95760ff1981166001178655846105b8575b50811561057a576001600160a01b038116156105345782156104fe5761049a9061046560ff875460081c16610460816116bd565b6116bd565b61046e33611675565b61048b60ff875460081c16610482816116bd565b610460816116bd565b60ff1960655416606555611675565b6001600160601b0360a01b60fb54161760fb556001600160601b0360a01b60fc54161760fc556104c75780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606490fd5b604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606490fd5b61ffff19166101011785555f61042c565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156104175750600160ff821614610417565b50600160ff821610610410565b8380fd5b5080fd5b50346107c65760c03660031901126107c65760243560043567ffffffffffffffff82116107c657366023830112156107c65781600401359267ffffffffffffffff84116107c65736602485850101116107c6576044359167ffffffffffffffff83116107c657366023840112156107c657826004013567ffffffffffffffff81116107c6573660248260051b860101116107c65760fc546084359660643593916001600160a01b03163303610919576107086115d9565b821561090a5787156108fb578361071f848a6115c6565b11156108da575f5b8363ffffffff821610156107ca576024641fffffffe0600583901b16880101356001600160a01b03811691908290036107c657815f5260fd60205260405f208054928b84106107ab57506002810180545f1981146100875763ffffffff946107959260018f930190556114f7565b90551663ffffffff811461008757600101610727565b838c91634f779ceb60e01b5f5260045260245260445260645ffd5b5f80fd5b5060fb5494955087946001600160a01b031687813b156107c6575f91602487608486946040519788968795869363d66eaabd60e01b85528c60048601526060828601528260648601520184840137818101830188905260a4356044830152601f01601f191681010301925af180156108cf576108b1575b5084936108968594610891869586957f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c60408051888152846020820152a260fc546001600160a01b0316946115c6565b6114f7565b908282156108a8575bf1156103735780f35b506108fc61089f565b6108969550936108c55f61089195966114a5565b5f95509392610841565b6040513d5f823e3d90fd5b836108e5848a6115c6565b90637899ec7160e01b5f5260045260245260445ffd5b6351d432c560e11b5f5260045ffd5b630c43ac2960e41b5f5260045ffd5b6302a5785160e31b5f523360045260245ffd5b346107c6575f3660031901126107c6576109446115d9565b335f5260fd60205260405f2054156109a757610e10420180421161008757335f81815260fd6020908152604091829020600101849055905192835290917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439190a2005b63b38340cf60e01b5f523360045260245ffd5b346107c6575f3660031901126107c65760fb546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6576033546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c657610a2261161d565b610a2a6115d9565b600160ff1960655416176065557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346107c6575f3660031901126107c6576020604051610e108152f35b346107c6575f3660031901126107c657610a9761161d565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346107c6575f3660031901126107c657602060ff606554166040519015158152f35b346107c6575f3660031901126107c65760fc546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6577f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b03163003610b7b5760206040515f5160206118105f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b60403660031901126107c657610bfa611479565b60243567ffffffffffffffff81116107c657366023820112156107c6578060040135610c25816114db565b90610c3360405192836114a5565b808252602082019236602483830101116107c657815f92602460209301863783010152610cad7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b5f5160206118105f395f51905f52546001600160a01b031614611565565b610cb561161d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610cec575050610cea9061171d565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610f0c575b50610d765760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203610eb557610d928461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610ead575b610dcb57005b833b15610e5c5750610cea925f92839251915af43d15610e55573d610def816114db565b90610dfd60405192836114a5565b81523d5f602083013e5b60405191610e166060846114a5565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526117b4565b6060610e07565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610dc5565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610f38575b81610f28602093836114a5565b810103126107c657519086610d15565b3d9150610f1b565b346107c65760203660031901126107c6576001600160a01b03610f61611479565b165f5260fd6020526020600160405f200154604051908152f35b346107c6575f3660031901126107c657610f9361161d565b60655460ff811615610fd25760ff19166065557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346107c65760203660031901126107c657611027611479565b6110607f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b61106861161d565b60209060405161107883826114a5565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110bd575050610cea915061171d565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f91816112db575b506111465760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203611284576111628461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061127d575b61119b57005b833b1561122c5750610cea93925f92839251915af43d15611224573d906111c1826114db565b916111cf60405193846114a5565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051936112086060866114a5565b60278552840152660819985a5b195960ca1b60408401526117b4565b6060906111d8565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f611195565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611303575b6112f381836114a5565b810103126107c6575190876110e5565b503d6112e9565b346107c65760203660031901126107c6576004356113266115d9565b335f5260fd60205260405f20908154918183106113f35760018101908154801580156113ea575b6113d4575061135e835f94956114f7565b905555337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd5f80a2805f81156113cb575b5f80809381933390f1156108cf576040519081527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d60203392a2005b506108fc61138f565b635f6e272d60e11b5f526004524260245260445ffd5b5042811161134d565b50906321c3d50f60e01b5f5260045260245260445ffd5b346107c65760203660031901126107c6576001600160a01b0361142b611479565b165f5260fd602052602060405f2054604051908152f35b346107c65760203660031901126107c6576020906001600160a01b03611466611479565b165f5260fd8252600260405f2001548152f35b600435906001600160a01b03821682036107c657565b602435906001600160a01b03821682036107c657565b90601f8019910116810190811067ffffffffffffffff8211176114c757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116114c757601f01601f191660200190565b9190820391821161008757565b1561150b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561156c57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b8181029291811591840414171561008757565b60ff606554166115e557565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b6033546001600160a01b0316330361163157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b156116c457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156117595760018060a01b03166001600160601b0360a01b5f5160206118105f395f51905f525416175f5160206118105f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156117c0575090565b8151156117d05750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c744ec1e96c5cf26e15b252ac9b803717aa2db960126b08e41b9920bda86d72864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x7bc06c482dead17c0e297afbc32f6e63d3846650":{"nonce":1,"balance":"0x0","code":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955","0x0000000000000000000000000000000000000000000000000000000000000065":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000fb":"0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c","0x00000000000000000000000000000000000000000000000000000000000000fc":"0x0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0"}},"0x84ea74d481ee0a5332c457a4d796187f6ba67feb":{"nonce":1,"balance":"0x0","code":"0x60808060405260043610156011575f80fd5b5f3560e01c63c2985578146023575f80fd5b346039575f366003190112603957805f60209252f35b5f80fdfea264697066735822122013c5f1468a1f1f0157f23ba5e12ee6155a4a92bac6399a4b6487606dad4ea56864736f6c634300081b0033","storage":{}},"0x851356ae760d987e095750cceb3bc6014560891c":{"nonce":1,"balance":"0xde0b6b3a7640000","code":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x00000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65","0x00000000000000000000000000000000000000000000000000000000000000fb":"0x000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","0x00000000000000000000000000000000000000000000000000000000000000fc":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042","0xf30de5dd89e866564a2ae4ccd6bce63a4b4930da9725a34e42ab718be7984ae8":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x95401dc811bb5740090279ba06cfa8fcf6113778":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0x0000000000000000000000000000000000000000000000000000000000000013"}},"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x998abeb3e57409262ae5b751f60747921b33613e":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","storage":{"0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x0000000000000000000000000000000000000000000000000000000000000013","0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x0000000000000000000000000000000000000000000000000000000000000001","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x0000000000000000000000000000000000000000000000000000000000000001","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x0000000000000000000000000000000000000000000000000000000000000001","0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0x000000000de0b6b3a7640000c5a5c42992decbae36851359345fe25997f5c42d"}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9d4454b023096f34b160d6b654540c56a1f81688":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c8062a1f4cb1461012957806313542a4e146100e857806326d941f214610124578063377ed99d1461011f5780633fb279521461011a57806347b314e8146100e35780635f61a88414610115578063605747d51461011057806368bccaac1461010b5780636d14a987146101065780637916cea6146101015780637ff81a87146100fc578063a3db80e2146100f7578063bf79ce58146100f2578063d5254a8c146100ed578063de29fac0146100e8578063e8bb9ae6146100e35763f4e24fe5146100de575f80fd5b610c0a565b6104fd565b6101b1565b610b9d565b6108d6565b61088b565b61084a565b6107d7565b610753565b610618565b61058b565b610529565b61044a565b6102fc565b6101f9565b61015c565b600435906001600160a01b038216820361014457565b5f80fd5b35906001600160a01b038216820361014457565b34610144576020366003190112610144576001600160a01b0361017d61012e565b165f52600360205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b0390f35b34610144576020366003190112610144576001600160a01b036101d261012e565b165f526001602052602060405f2054604051908152f35b6004359060ff8216820361014457565b34610144576020366003190112610144576102126101e9565b610246337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b60ff81165f52600460205260405f2054610298576102726102969160ff165f52600460205260405f2090565b61027a6103a7565b5f81524363ffffffff166020820152905b5f6040830152610d12565b005b60405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608490fd5b346101445760203660031901126101445760ff6103176101e9565b165f526004602052602063ffffffff60405f205416604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761036457604052565b610334565b6060810190811067ffffffffffffffff82111761036457604052565b90601f8019910116810190811067ffffffffffffffff82111761036457604052565b604051906103b6606083610385565b565b906103b66040519283610385565b906040600319830112610144576103dd6004610148565b9160243567ffffffffffffffff811161014457816023820112156101445780600401359067ffffffffffffffff82116103645760405192610428601f8401601f191660200185610385565b8284526024838301011161014457815f92602460209301838601378301015290565b34610144577f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e610479366103c6565b906104ae337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c16104ba82610eb4565b508361156f565b60018060a01b0381165f5260016020526104e660405f20549260405193849384610d87565b0390a1005b60209060031901126101445760043590565b346101445761050b366104eb565b5f526002602052602060018060a01b0360405f205416604051908152f35b346101445760203660031901126101445760ff6105446101e9565b61054c610dc7565b50165f5260056020526040805f20600182519161056883610348565b80548352015460208201526105898251809260208091805184520151910152565bf35b34610144576040366003190112610144576105e06105da6105aa6101e9565b60ff602435915f604080516105be81610369565b8281528260208201520152165f52600460205260405f206107c2565b50610dfd565b604051809163ffffffff6040606084019267ffffffffffffffff19815116855282602082015116602086015201511660408301520390f35b34610144576060366003190112610144576106316101e9565b6024359063ffffffff8216809203610144576105da6106679160ff61065560443590565b91165f52600460205260405f206107c2565b9063ffffffff60208301511681106106e857816106ad6106bc9261069560406101ad96015163ffffffff1690565b9063ffffffff8216159182156106d8575b5050610e36565b5167ffffffffffffffff191690565b60405167ffffffffffffffff1990911681529081906020820190565b63ffffffff161190505f806106a6565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608490fd5b34610144575f366003190112610144576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054156107bd575f5260205f20905f90565b610797565b80548210156107bd575f5260205f2001905f90565b34610144576040366003190112610144576107f06101e9565b60ff60243591165f52600460205260405f2090815481101561014457610815916107c2565b50546040805182821b67ffffffffffffffff1916815260c083901c63ffffffff16602082015260e09290921c90820152606090f35b3461014457602036600319011261014457606061086d61086861012e565b610eb4565b610884604051809360208091805184520151910152565b6040820152f35b346101445760203660031901126101445760ff6108a66101e9565b165f52600560205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b3461014457610160366003190112610144576108f061012e565b61010036602319011261014457604036610123190112610144576101ad90610942337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b61096061094e36610f6f565b80515f526020015160205260405f2090565b9061098d7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5831415610fea565b6001600160a01b0381165f9081526001602052604090206109af905415611048565b5f828152600260205260409020546109d0906001600160a01b0316156110b7565b604051610a9790610a9290610a3c906020810190610a1381610a0561014435610124356084356064356044356024358a611121565b03601f198101835282610385565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b610a60610a4836610f97565b610a5a83610a5536610f6f565b611737565b9061177d565b90610a82610a6c611805565b91610a5a610a7936610fbf565b91610a556118fc565b90610a8c366111a5565b926119e1565b6111de565b6001600160a01b0381165f908152600360205260409020610ac19060643581556001608435910155565b6001600160a01b0381165f908152600160205260409020829055610b1081610af1845f52600260205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03909116907fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba38280419080610b4b81611278565b0390a26040519081529081906020820190565b60206040818301928281528451809452019201905f5b818110610b815750505090565b825163ffffffff16845260209384019390920191600101610b74565b346101445760403660031901126101445760043567ffffffffffffffff8111610144573660238201121561014457806004013567ffffffffffffffff8111610144573660248284010111610144576101ad91610bfe91602480359201611339565b60405191829182610b5e565b34610144577ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e610c39366103c6565b90610c6e337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c1610c83610c7d83610eb4565b50611b1e565b8361156f565b15610c9057565b60405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a490fd5b80546801000000000000000081101561036457610d34916001820181556107c2565b610d74578151602083015160409384015163ffffffff60c01b60c09290921b919091169190931c1760e09290921b6001600160e01b031916919091179055565b634e487b7160e01b5f525f60045260245ffd5b919260809360209260018060a01b0316845282840152606060408401528051918291826060860152018484015e5f828201840152601f01601f1916010190565b60405190610dd482610348565b5f6020838281520152565b90604051610dec81610348565b602060018294805484520154910152565b90604051610e0a81610369565b604081935467ffffffffffffffff1981831b16835263ffffffff8160c01c16602084015260e01c910152565b15610e3d57565b60405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a490fd5b610ebc610dc7565b5060018060a01b031690815f52600360205260405f2091600160405193610ee285610348565b80548552015460208401525f52600160205260405f2054918215610f04579190565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608490fd5b60409060631901126101445760405190610f8882610348565b60643582526084356020830152565b60409060231901126101445760405190610fb082610348565b60243582526044356020830152565b6040906101231901126101445760405190610fd982610348565b610124358252610144356020830152565b15610ff157565b608460405162461bcd60e51b815260206004820152604060248201525f516020611bdf5f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152fd5b1561104f57565b60405162461bcd60e51b815260206004820152604760248201525f516020611bdf5f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a490fd5b156110be57565b60405162461bcd60e51b815260206004820152604260248201525f516020611bdf5f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a490fd5b949290916101409694928652602086015260408501526060840152604060a46080850137604060e460c08501376101008301526101208201520190565b9080601f830112156101445760405191611179604084610385565b82906040810192831161014457905b8282106111955750505090565b8135815260209182019101611188565b90608060a319830112610144576040516111be81610348565b60206111d982946111d08160a461115e565b845260e461115e565b910152565b156111e557565b60405162461bcd60e51b815260206004820152606c60248201525f516020611bdf5f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c490fd5b90604060e4608060c0850194606435815260843560208201528360a4818301370137565b67ffffffffffffffff81116103645760051b60200190565b906112be8261129c565b6112cb6040519182610385565b82815280926112dc601f199161129c565b0190602036910137565b908210156107bd570190565b634e487b7160e01b5f52601160045260245ffd5b8015611312575f190190565b6112f2565b5f1981019190821161131257565b80518210156107bd5760209160051b010190565b919091611345836112b4565b925f5b818110611356575050505090565b61137b6113756113678385876112e6565b356001600160f81b03191690565b60f81c90565b6113908160ff165f52600460205260405f2090565b54801580156114c1575b61143c57805b6113af575b5050600101611348565b8563ffffffff6113ed6113df6113d08660ff165f52600460205260405f2090565b6113d986611317565b906107c2565b505460c01c63ffffffff1690565b161115611403576113fd90611306565b806113a0565b600192915061142061141761143592611317565b63ffffffff1690565b61142a8389611325565b9063ffffffff169052565b905f6113a5565b60405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a490fd5b506114e56114176113df6114e08560ff165f52600460205260405f2090565b6107ab565b861061139a565b9081518110156107bd570160200190565b1561150457565b60405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608490fd5b9190611579610dc7565b504363ffffffff16905f5b84518110156117045780836115af6113756115a16001958a6114ec565b516001600160f81b03191690565b6115c48160ff165f52600460205260405f2090565b54906115d18215156114fd565b61165761163861162a611600896115fb6115f68760ff165f52600560205260405f2090565b610ddf565b61177d565b61094e816116198760ff165f52600560205260405f2090565b906020600191805184550151910155565b67ffffffffffffffff191690565b926113d96116518460ff165f52600460205260405f2090565b91611317565b50908361166f611417845463ffffffff9060c01c1690565b03611698575061169292509060401c67ffffffffffffffff60c01b825416179055565b01611584565b81546001600160e01b031660e09490941b6001600160e01b0319169390931790556116ff916116d29060ff165f52600460205260405f2090565b6116ee6116dd6103a7565b67ffffffffffffffff199093168352565b63ffffffff8716602083015261028b565b611692565b5050509050565b6040519061018061171c8184610385565b368337565b60405190611730602083610385565b6020368337565b91906040906060611746610dc7565b94859260208551926117588585610385565b8436853780518452015160208301528482015260076107cf195a01fa1561177b57565bfe5b60209291608060409261178e610dc7565b9586938186519361179f8686610385565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561177b57156117d057565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b60405161181181610348565b60409081516118208382610385565b82368237815260208251916118358484610385565b83368437015280516118478282610385565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602082015281519061189d8383610385565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526118f283519384610385565b8252602082015290565b611904610dc7565b5060405161191181610348565b600181526002602082015290565b9060068202918083046006149015171561131257565b9060028110156107bd5760051b0190565b906001820180921161131257565b906002820180921161131257565b906003820180921161131257565b906004820180921161131257565b906005820180921161131257565b90600c8110156107bd5760051b0190565b156119a457565b60405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606490fd5b9290916119ee60406103b8565b9384526020840152611a0060406103b8565b9182526020820152611a1061170b565b915f5b60028110611a4d57505050602061018091611a2c611721565b92839160086107cf195a01fa801561177b57611a479061199d565b51151590565b80611a5960019261191f565b611a638285611935565b5151611a6f828861198c565b526020611a7c8386611935565b510151611a91611a8b83611946565b8861198c565b52611a9c8286611935565b515151611aab611a8b83611954565b52611ac1611ab98387611935565b515160200190565b51611ace611a8b83611962565b526020611adb8387611935565b51015151611aeb611a8b83611970565b52611b17611b11611b0a6020611b01868a611935565b51015160200190565b519261197e565b8761198c565b5201611a13565b611b26610dc7565b50805190811580611bd2575b15611b53575050604051611b47604082610385565b5f81525f602082015290565b60207f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47910151067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47811161131257604051916118f2604084610385565b50602081015115611b3256fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220907abf636d9e883e89ae38478a10f1607c3e4b038b27973de3ffd4e2d7a9915664736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9e545e3c0baab3e08cdfd552c960a1050f373042":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163204e1c7a1461045057508063715018a6146103f95780637eff275e146103675780638da5cb5b146103405780639623609d1461024257806399a88ec4146101ad578063f2fde38b146100e75763f3b7dead14610076575f80fd5b346100e45760203660031901126100e457808060046001600160a01b0361009b6104b2565b6040516303e1469160e61b815291165afa6100b4610530565b90156100e25780516020916001600160a01b03916100d991908101840190840161055f565b16604051908152f35b505b80fd5b50346100e45760203660031901126100e4576101016104b2565b61010961057e565b6001600160a01b031680156101595781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346100e45760403660031901126100e457806101c86104b2565b6101d06104c8565b906101d961057e565b6001600160a01b031690813b1561023e57604051631b2ce7f360e11b81526001600160a01b0390911660048201529082908290602490829084905af18015610233576102225750f35b8161022c916104de565b6100e45780f35b6040513d84823e3d90fd5b5050fd5b5060603660031901126100e457806102586104b2565b6102606104c8565b6044359167ffffffffffffffff831161033b573660238401121561033b5782600401359061028d82610514565b9161029b60405193846104de565b80835260208301943660248383010111610337578187926024602093018837840101526102c661057e565b6001600160a01b0316803b15610333578492606460405180968195829463278f794360e11b845260018060a01b03166004840152604060248401525180918160448501528484015e8181018301879052601f01601f1916810103019134905af18015610233576102225750f35b8480fd5b8680fd5b505050fd5b50346100e457806003193601126100e457546040516001600160a01b039091168152602090f35b50346103f55760403660031901126103f5576103816104b2565b6103896104c8565b9061039261057e565b6001600160a01b031690813b156103f5576040516308f2839760e41b81526001600160a01b039091166004820152905f908290602490829084905af180156103ea576103dc575080f35b6103e891505f906104de565b005b6040513d5f823e3d90fd5b5f80fd5b346103f5575f3660031901126103f55761041161057e565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346103f55760203660031901126103f5575f9081906004906001600160a01b036104786104b2565b635c60da1b60e01b8352165afa61048d610530565b90156103f55780516020916001600160a01b03916100d991908101840190840161055f565b600435906001600160a01b03821682036103f557565b602435906001600160a01b03821682036103f557565b90601f8019910116810190811067ffffffffffffffff82111761050057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161050057601f01601f191660200190565b3d1561055a573d9061054182610514565b9161054f60405193846104de565b82523d5f602084013e565b606090565b908160209103126103f557516001600160a01b03811681036103f55790565b5f546001600160a01b0316330361059157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220da783ab89c5c287c74b7661204a758c01ff9259a5a2e0c6e9f8f2eefdc4105bf64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816346fbf68e14610243575080638568520614610153578063ce548428146100745763eab66d7a14610048575f80fd5b34610070575f366003190112610070576001546040516001600160a01b039091168152602090f35b5f80fd5b346100705760203660031901126100705761008d61027b565b6001546001600160a01b038116916100a6338414610291565b6001600160a01b03169182156100f65760407f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892918151908152846020820152a16001600160a01b03191617600155005b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b346100705760403660031901126100705761016c61027b565b602435908115158092036100705761018f60018060a01b03600154163314610291565b6001600160a01b03169081156101e857816040917f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152935f525f602052825f2060ff1981541660ff831617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b34610070576020366003190112610070576020906001600160a01b0361026761027b565b165f525f825260ff60405f20541615158152f35b600435906001600160a01b038216820361007057565b1561029857565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fdfea2646970667358221220e71c0c74ddb607e4c85c23ba6d84d6508e60f3e2f8ae33144c449252ab1a1e7364736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07":{"nonce":1,"balance":"0x0","code":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955","0x00000000000000000000000000000000000000000000000000000000000000ca":"0x00000000000000000000000000000000000000000000000000000000000000ff","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a79720","0x00000000000000000000000000000000000000000000000000000000000000cc":"0x00000000000000000000000000000000000000000000000000000000000000ff","0x00000000000000000000000000000000000000000000000000000000000000cd":"0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97","0x00000000000000000000000000000000000000000000000000000000000000ce":"0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788"}},"0xc5a5c42992decbae36851359345fe25997f5c42d":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000032":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","0x0000000000000000000000000000000000000000000000000000000000000064":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x0000000000000000000000000000000000000000000000000000000000000065":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc":{"nonce":1,"balance":"0x0","code":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955","0x00000000000000000000000000000000000000000000000000000000000000ca":"0x00000000000000000000000006530dd13afb697b81e2d602a279ebaec8ca2e31","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a79720","0x00000000000000000000000000000000000000000000000000000000000000cc":"0x000000000000000000000000663f3ad617193148711d28f5334ee4ed07016602","0x00000000000000000000000000000000000000000000000000000000000000cd":"0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97","0x00000000000000000000000000000000000000000000000000000000000000ce":"0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000fd471836031dc5108809d173a067e8486b9047a3"}},"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c806331b36bd914610ce35780633563b0d114610c4a5780634d2b57fe14610b0c5780634f739f741461046d5780635c155662146102b25763cefdc1d41461005b575f80fd5b346102ae5760603660031901126102ae57610074610e37565b60243590610080610f02565b916040926100d78451926100948685610e7c565b60018452601f198601366020860137806100ad85611084565b5285516361c8a12f60e11b81526001600160a01b0386169490925f91849182918760048401611663565b0381875afa9182156102a45763ffffffff6100fe6020946064935f91610282575b50611084565b511691875195869384926304ec635160e01b8452600484015263ffffffff8716602484015260448301525afa918215610278575f92610247575b506001600160c01b038216915f83805b61020e575061ffff169261015b84610ee7565b9361016887519586610e7c565b808552610177601f1991610ee7565b013660208601375f925f5b8551851080610203575b156101da576001811b84166001600160c01b03166101b3575b6101ae90611655565b610182565b9360016101ae9160ff60f81b8760f81b165f1a6101d0828a6110f4565b53019490506101a5565b87836101ff6101ea858a8c611105565b83519384938452806020850152830190610f15565b0390f35b50610100811061018c565b5f1981018181116102335761ffff9116911661ffff8114610233576001019080610148565b634e487b7160e01b5f52601160045260245ffd5b61026a91925060203d602011610271575b6102628183610e7c565b81019061162a565b905f610138565b503d610258565b84513d5f823e3d90fd5b61029e91503d805f833e6102968183610e7c565b810190611579565b5f6100f8565b86513d5f823e3d90fd5b5f80fd5b346102ae5760603660031901126102ae576102cb610e37565b6024356001600160401b0381116102ae576102ea903690600401610fbc565b6102f2610f02565b6040516361c8a12f60e11b815290926001600160a01b03165f828061031b868860048401611663565b0381845afa918215610402575f92610451575b5082519361035461033e86610e9d565b9561034c6040519788610e7c565b808752610e9d565b602086019490601f19013686375f5b815181101561040d5761037681836110a5565b519060208463ffffffff61038a848a6110a5565b516040516304ec635160e01b8152600481019690965263ffffffff92831660248701521616604484015282606481885afa8015610402576001925f916103e4575b50828060c01b03166103dd828a6110a5565b5201610363565b6103fc915060203d8111610271576102628183610e7c565b896103cb565b6040513d5f823e3d90fd5b8587604051918291602083019060208452518091526040830191905f5b818110610438575050500390f35b825184528594506020938401939092019160010161042a565b6104669192503d805f833e6102968183610e7c565b908461032e565b346102ae5760803660031901126102ae57610486610e37565b60243563ffffffff8116908181036102ae57604435926001600160401b0384116102ae57366023850112156102ae578360040135936001600160401b0385116102ae57602481019060248636920101116102ae57606435926001600160401b0384116102ae57366023850112156102ae578360040135956001600160401b0387116102ae5760248501938760051b9560248736920101116102ae57610529611534565b50604051636830483560e01b81526001600160a01b03919091169390602081600481885afa908115610402575f91610aed575b50610565611534565b604080516361c8a12f60e11b8152600481018b90526024810191909152604481018b905290976001600160fb1b038b116102ae5781606481835f948c848401378101030181895afa908115610402575f91610ad3575b50875260018060a01b031691604051986340e03a8160e11b8a528860048b0152604060248b01525f8a806105f36044820186886115fa565b0381875afa998a15610402575f9a610ab7575b5060408801998a5261061782610e9d565b966106256040519889610e7c565b828852610641601f1961063785610e9d565b0160208a016110d8565b606089019788525f5b60ff81168481101561092e575f6106778261066487611052565b8d519061067183836110a5565b526110a5565b505f84868e5b8d8d8386106106fa5750505050505061069581611052565b905f5b8c8282106106ca5760ff959492506106b8939150519061067183836110a5565b501660ff81146102335760010161064a565b9063ffffffff6106e7826106e188600196516110a5565b516110a5565b51166106f382866110a5565b5201610698565b63ffffffff61071b87610713816020986107559a61161a565b3595516110a5565b516040516304ec635160e01b8152600481019590955263ffffffff9283166024860152161660448301529092839190829081906064820190565b03915afa908115610402575f91610910575b506001600160c01b0316801561087f5760018091610786868b8d611649565b3560f81c1c161461079d575b60010184868e61067d565b908960206107ac84898961161a565b356107b8868b8d611649565b60405163dd9846b960e01b815260048101929092523560f81c602482015263ffffffff929092166044830152816064818d5afa908115610402578d85915f93610829575b509163ffffffff610818856106e16001979561082197516110a5565b91169052611655565b919050610792565b925050506020813d8211610877575b8161084560209383610e7c565b810103126102ae57818d63ffffffff6108186001956106e18961086a61082198611568565b97509550509550506107fc565b3d9150610838565b60405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a490fd5b610928915060203d8111610271576102628183610e7c565b5f610767565b5089898c8e8760048a60208f60405193848092632efa2ca360e11b82525afa908115610402575f93610987938593610a86575b506040519687948593849363354952a360e21b85526040600486015260448501916115fa565b602483019190915203916001600160a01b03165afa91821561040257610a05926109f2915f91610a6c575b5090859493929160206109df970190815260405196879660208852516080602089015260a0880190611019565b9051868203601f19016040880152611019565b9051848203601f19016060860152611019565b905190601f19838203016080840152815180825260208201916020808360051b8301019401925f915b838310610a3b5786860387f35b919395509193602080610a5a600193601f198682030187528951611019565b97019301930190928695949293610a2e565b610a8091503d805f833e6102968183610e7c565b866109b2565b610aa991935060203d602011610ab0575b610aa18183610e7c565b8101906110b9565b9189610961565b503d610a97565b610acc919a503d805f833e6102968183610e7c565b988a610606565b610ae791503d805f833e6102968183610e7c565b8a6105bb565b610b06915060203d602011610ab057610aa18183610e7c565b8961055c565b346102ae5760403660031901126102ae57610b25610e37565b6024356001600160401b0381116102ae57610b44903690600401610fbc565b8051610b68610b5282610e9d565b91610b606040519384610e7c565b808352610e9d565b602082019290601f19013684376001600160a01b03909316925f5b8151811015610bfd57610b9681836110a5565b519060405191630a5aec1960e21b83526004830152602082602481895afa8015610402576001925f91610bdf575b50610bcf82866110a5565b90838060a01b0316905201610b83565b610bf7915060203d8111610ab057610aa18183610e7c565b87610bc4565b8383604051918291602083019060208452518091526040830191905f5b818110610c28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610c1a565b346102ae5760603660031901126102ae57610c63610e37565b6024356001600160401b0381116102ae57366023820112156102ae57806004013591610c8e83610ee7565b610c9b6040519182610e7c565b83815236602485850101116102ae575f6020856101ff966024610ccf97018386013783010152610cc9610f02565b91611105565b604051918291602083526020830190610f15565b346102ae5760403660031901126102ae57610cfc610e37565b602435906001600160401b0382116102ae57366023830112156102ae578160040135610d2781610e9d565b92610d356040519485610e7c565b8184526024602085019260051b820101903682116102ae57602401915b818310610e17578385610d658151611052565b6001600160a01b03909216915f5b8251811015610e01576001600160a01b03610d8e82856110a5565b516040516309aa152760e11b81529116600482015290602082602481885afa8015610402575f90610dcf575b60019250610dc882856110a5565b5201610d73565b506020823d8211610df9575b81610de860209383610e7c565b810103126102ae5760019151610dba565b3d9150610ddb565b604051602080825281906101ff90820185610eb4565b82356001600160a01b03811681036102ae57815260209283019201610d52565b600435906001600160a01b03821682036102ae57565b606081019081106001600160401b03821117610e6857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117610e6857604052565b6001600160401b038111610e685760051b60200190565b90602080835192838152019201905f5b818110610ed15750505090565b8251845260209384019390920191600101610ec4565b6001600160401b038111610e6857601f01601f191660200190565b6044359063ffffffff821682036102ae57565b9080602083519182815201916020808360051b8301019401925f915b838310610f4057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b808210610f805750505060208060019297019301930191939290610f31565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610f61565b9080601f830112156102ae578135610fd381610e9d565b92610fe16040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106110095750505090565b8135815260209182019101610ffc565b90602080835192838152019201905f5b8181106110365750505090565b825163ffffffff16845260209384019390920191600101611029565b9061105c82610e9d565b6110696040519182610e7c565b828152809261107a601f1991610e9d565b0190602036910137565b8051156110915760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156110915760209160051b010190565b908160209103126102ae57516001600160a01b03811681036102ae5790565b5f5b8281106110e657505050565b6060828201526020016110da565b908151811015611091570160200190565b604051636830483560e01b81526001600160a01b0390911692909190602083600481875afa928315610402575f93611513575b50604051634f4c91e160e11b815292602084600481885afa938415610402575f946114ce575b5060206004949560405195868092632efa2ca360e11b82525afa938415610402575f946114ad575b50919493908551926111c161119a85610e9d565b946111a86040519687610e7c565b8086526111b7601f1991610e9d565b01602086016110d8565b5f965b80518810156114a3576111d788826110f4565b51604051638902624560e01b815260f89190911c6004820181905263ffffffff851660248301529790945f866044816001600160a01b0385165afa958615610402575f96611411575b50855161122c81610e9d565b9061123a6040519283610e7c565b808252611249601f1991610e9d565b015f5b8181106113e857505061125f8b896110a5565b5261126a8a886110a5565b505f5b86518110156113d75761128081886110a5565b516040516308f6629d60e31b81526004810191909152906020826024816001600160a01b038e165afa918215610402575f926113b7575b50866112c3828a6110a5565b5160208d6112d1858d6110a5565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff939093166044840152826064816001600160a01b038c165afa908115610402578e925f92611370575b509361135d611369936001600160601b0386946001986040519561134387610e4d565b8a8060a01b0316865260208601521660408401528d6110a5565b519061067183836110a5565b500161126d565b915091506020813d82116113af575b8161138c60209383610e7c565b810103126102ae57516001600160601b03811681036102ae578d9161135d611320565b3d915061137f565b6113d091925060203d8111610ab057610aa18183610e7c565b905f6112b7565b5060019099019890975093506111c4565b6020906040516113f781610e4d565b5f81525f838201525f60408201528282860101520161124c565b9095503d805f833e6114238183610e7c565b8101906020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae57815161145981610e9d565b926114676040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b82821061149357505050945f611220565b8151815260209182019101611482565b5092955050505050565b6114c791945060203d602011610ab057610aa18183610e7c565b925f611186565b9093506020813d60201161150b575b816114ea60209383610e7c565b810103126102ae5751926001600160a01b03841684036102ae57602061115e565b3d91506114dd565b61152d91935060203d602011610ab057610aa18183610e7c565b915f611138565b60405190608082018281106001600160401b03821117610e6857604052606080838181528160208201528160408201520152565b519063ffffffff821682036102ae57565b6020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae5781516115ac81610e9d565b926115ba6040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106115e25750505090565b602080916115ef84611568565b8152019101906115d5565b908060209392818452848401375f828201840152601f01601f1916010190565b91908110156110915760051b0190565b908160209103126102ae57516001600160c01b03811681036102ae5790565b90821015611091570190565b5f1981146102335760010190565b60409063ffffffff61168094931681528160208201520190610eb4565b9056fea26469706673582212205aa9d189ad095bab98556b37227470a01b266e1c907e6602c3b98b12740b02f464736f6c634300081b0033","storage":{}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000098":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82","0x3d2729dff03bf559da35a983e55814217363c2a44a7ea59bdf688ab8754ea49d":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":63,"balance":"0x21e0bca2134583349b9","code":"0x","storage":{}},"0xf5059a5d33d5853360d16c683c16e67980206f36":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90001","0x0000000000000000000000000000000000000000000000000000000000000001":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000064":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000096":"0x0000000000000000000000000000000000000000000000000000000000000001","0x000000000000000000000000000000000000000000000000000000000000009c":"0x0000000000000000000000000000000000000000000000000000000000000003","0x000000000000000000000000000000000000000000000000000000000000009d":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000000000000000000000000000000000000000009e":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570","0x683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7":"0x00000000000000000000000000000000000000000000000000322af8000000c8","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c":"0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539d":"0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539e":"0x00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}},"0xfd471836031dc5108809d173a067e8486b9047a3":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}}},"best_block_number":"0x21","blocks":[{"header":{"parentHash":"0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbfeadcf4bec363c1b607a5e3013f60cb2ec48d42b272e33579978ac1e353459a","transactionsRoot":"0xb7bc23d7786b04ad3152fc9f4d47007e4bdc6a97d736df141db331a1821da99b","receiptsRoot":"0x87ddd41d3932b2565969d12f90fe222e5de689cd83df67c33c10e03cb9bfaf41","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000200000000000040000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0x396666","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x12c4e5e3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xa","gas":"0x44f0fe","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x72ec62b68dadae92c6340b986b6661014856a3ff450f3d9b2bd192e70a490172","s":"0x1d6d6d5a14bb9c4d8f130667da4b0551950d2a03450af4f4091ebd75951e765","yParity":"0x0","v":"0x0","hash":"0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xb","gas":"0x5adb9","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","r":"0x5b5277e8d4dc99191ecf322fdbf3c49e306246d21e0e314c9beab6b6e1c86fec","s":"0x1d3265ce2091b8b6959d77b9aa97db31a4bd927cff6c28cd1c6d47cde84c9c60","yParity":"0x1","v":"0x1","hash":"0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xc346bedd4c8042d62dfaf5fb5209979ec1aa7fa706f4b08561bbf3cbb415f4c8","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xc9d3008dd7d03f15364050fc3e77511b2f7d8e4e7f12798a481be3bac7bd42b3","transactionsRoot":"0x665d67e9c720e2c77d59f03e0ef9754bc4752f037e26e7b4c8eccb9b77c1eacf","receiptsRoot":"0x36a243ef4fb844c3664bc7179a4a1f6c273af1a3498770d7102db4c03ec21438","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002200040000000000100000000000000000000000000000000000040004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x11","gasLimit":"0x1c9c380","gasUsed":"0x9772","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xd0b650f","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2e","gas":"0xdd7c","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x99a88ec400000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc490000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","r":"0xcf60e087801d9994148b5bb343a77e1f4b05f18720b1db21009837712715d3e5","s":"0xd6dd6ba605cb642cdef6beca2328baaacfa85350a41addcd8ac5b597cd55baf","yParity":"0x0","v":"0x0","hash":"0x6d32df0df250ea279968c67c7c77128182599496cdb088f933ba0cb9a3a6fcb7"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xcca9e375d92dd56cdb22579c17edeb1d7498929d33f630c65c88de38da40719c","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5def99cb6513e419b8c6364abfd54ed0a9d907cb2771f9390349099a32167a9b","transactionsRoot":"0x7ab79ee7aa20163e978c79a23aab92a8a876ea79c531999fdb82dbe002723970","receiptsRoot":"0x12d13efb4d11c504b8145c6453f1dc1173fa3d0160915e11fea32535f19d0f90","logsBloom":"0x00000000000000000000000000000000000400000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000010000000000000000000000000000000000000000100000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x17","gasLimit":"0x1c9c380","gasUsed":"0x8342","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x66a28f6","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x34","gas":"0xbff6","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x851356ae760d987e095750cceb3bc6014560891c","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x67525b5ea4a8ea9b5bcc42368d4ac9edb8a2589b8bb8aa12daccb0f8e3a05037","s":"0x12218b6b5b8455d4dc0ee4c8d13a1ee8026dc17a7e6bcff47f70e50d1d982ca8","yParity":"0x1","v":"0x1","hash":"0xf6de69ea217dd94482390916003cb604b134d039b1cee801a1af2962ac68a1f3"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x94162b3ee6ca489eaa6411d56e5e8dff309e3666c6d071a018b5068f1ad7bfff","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbbc88adbb1bd86db8e5d37bc0a64894b0a35d7d90c0bc6cd71277dee084d84a2","transactionsRoot":"0x61c6a73cba44734eaecc61455032a1d32436bd8dd1f0601615626b3851f1c1af","receiptsRoot":"0xb2c2720959d8b48ccff10b5236e99c2ca4cec937b62faf828b7a7f9badb48098","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000008000000000","difficulty":"0x0","number":"0x19","gasLimit":"0x1c9c380","gasUsed":"0x648b","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x4f96329","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x36","gas":"0x930a","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x7873c8a4c343fa13385c0a9890704aa29f5f06386682b203089a7ae438487bf0","s":"0x64e4b0a02e91c2ce6a10a7dedd0c460de53d06dd74e15b5365c26df640e93ec5","yParity":"0x1","v":"0x1","hash":"0x27161b46f317e1cca4a80b8c3c52755e904f7d1d09aba2ec8cc22eb01e6f4c3b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x5b856d04e6471c87b134b61cd2c2c851fb2b317010ffe92937a292533abbea0d","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x901a1b798fa5f2616d9a754e3c478184a3a9b92772a6344a17a5c382f6a01d8a","transactionsRoot":"0xaeb7df44e074f9bec5c1e9a236fdc944d24ae017fb09910cec1ce6312ba9adb0","receiptsRoot":"0x04c66597925029e9a692b5303f8820c844da3b1aebe40d0c32ec4ea4144d9da8","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000001000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000","difficulty":"0x0","number":"0x1b","gasLimit":"0x1c9c380","gasUsed":"0x15cd4f","timestamp":"0x68b89569","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3d14608","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x38","gas":"0x1c57b3","maxFeePerGas":"0x8b4f961","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a080604052346100da57306080525f549060ff8260081c16610088575060ff8082161061004e575b60405161186590816100df8239608051818181610b3601528181610c5b015261102c0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe608080604052600436101561009b575b50361561001a575f80fd5b60fb546001600160a01b0316330361002e57005b335f5260fd60205260405f208054903482018092116100875755335f5260fd6020525f60016040822001556040513481527f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77060203392a2005b634e487b7160e01b5f52601160045260245ffd5b5f905f3560e01c90816317d89c4e14611442575080632df4e21e1461140a5780632e1a7d4d1461130a5780633659cfe61461100e5780633f4ba83a14610f7b5780634d5431ea14610f405780634f1ef28614610be657806352d1902d14610b2457806358b96e2714610afc5780635c975abb14610ada578063715018a614610a7f57806373e289d014610a635780638456cb5914610a0a5780638da5cb5b146109e2578063953ef807146109ba578063a69df4b51461092c578063a7d3180914610651578063c0c53b8b146103b6578063c392299e146102f0578063c89109131461029f578063f2fde38b1461020e5763f83d08ba0361000f573461020b578060031936011261020b576101ad6115d9565b33815260fd6020526040812054156101f85733815260fd602052806001604082200155337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd8280a280f35b63366095e160e11b815233600452602490fd5b80fd5b503461020b57602036600319011261020b57610228611479565b61023061161d565b6001600160a01b0381161561024b5761024890611675565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461020b57602036600319011261020b576060906040906001600160a01b036102c7611479565b16815260fd60205220805490600260018201549101549060405192835260208301526040820152f35b50604036600319011261020b578060043561030961148f565b9061031261161d565b60fb546001600160a01b031691823b156103b157838093602460405180968193632e1a7d4d60e01b83528760048401525af19283156103a6578493610389575b50829182918290821561037f575b6001600160a01b031690f1156103735780f35b604051903d90823e3d90fd5b6108fc9150610360565b83610396919492946114a5565b6103a25782915f610352565b5050fd5b6040513d86823e3d90fd5b505050fd5b503461020b57606036600319011261020b576004356001600160a01b0381169081900361064d576103e561148f565b906044356001600160a01b03811691908290036106495783549260ff8460081c16159384809561063c575b8015610625575b156105c95760ff1981166001178655846105b8575b50811561057a576001600160a01b038116156105345782156104fe5761049a9061046560ff875460081c16610460816116bd565b6116bd565b61046e33611675565b61048b60ff875460081c16610482816116bd565b610460816116bd565b60ff1960655416606555611675565b6001600160601b0360a01b60fb54161760fb556001600160601b0360a01b60fc54161760fc556104c75780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606490fd5b604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606490fd5b61ffff19166101011785555f61042c565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156104175750600160ff821614610417565b50600160ff821610610410565b8380fd5b5080fd5b50346107c65760c03660031901126107c65760243560043567ffffffffffffffff82116107c657366023830112156107c65781600401359267ffffffffffffffff84116107c65736602485850101116107c6576044359167ffffffffffffffff83116107c657366023840112156107c657826004013567ffffffffffffffff81116107c6573660248260051b860101116107c65760fc546084359660643593916001600160a01b03163303610919576107086115d9565b821561090a5787156108fb578361071f848a6115c6565b11156108da575f5b8363ffffffff821610156107ca576024641fffffffe0600583901b16880101356001600160a01b03811691908290036107c657815f5260fd60205260405f208054928b84106107ab57506002810180545f1981146100875763ffffffff946107959260018f930190556114f7565b90551663ffffffff811461008757600101610727565b838c91634f779ceb60e01b5f5260045260245260445260645ffd5b5f80fd5b5060fb5494955087946001600160a01b031687813b156107c6575f91602487608486946040519788968795869363d66eaabd60e01b85528c60048601526060828601528260648601520184840137818101830188905260a4356044830152601f01601f191681010301925af180156108cf576108b1575b5084936108968594610891869586957f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c60408051888152846020820152a260fc546001600160a01b0316946115c6565b6114f7565b908282156108a8575bf1156103735780f35b506108fc61089f565b6108969550936108c55f61089195966114a5565b5f95509392610841565b6040513d5f823e3d90fd5b836108e5848a6115c6565b90637899ec7160e01b5f5260045260245260445ffd5b6351d432c560e11b5f5260045ffd5b630c43ac2960e41b5f5260045ffd5b6302a5785160e31b5f523360045260245ffd5b346107c6575f3660031901126107c6576109446115d9565b335f5260fd60205260405f2054156109a757610e10420180421161008757335f81815260fd6020908152604091829020600101849055905192835290917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439190a2005b63b38340cf60e01b5f523360045260245ffd5b346107c6575f3660031901126107c65760fb546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6576033546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c657610a2261161d565b610a2a6115d9565b600160ff1960655416176065557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346107c6575f3660031901126107c6576020604051610e108152f35b346107c6575f3660031901126107c657610a9761161d565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346107c6575f3660031901126107c657602060ff606554166040519015158152f35b346107c6575f3660031901126107c65760fc546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610b7b5760206040515f5160206118105f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b60403660031901126107c657610bfa611479565b60243567ffffffffffffffff81116107c657366023820112156107c6578060040135610c25816114db565b90610c3360405192836114a5565b808252602082019236602483830101116107c657815f92602460209301863783010152610cad7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c8f30821415611504565b5f5160206118105f395f51905f52546001600160a01b031614611565565b610cb561161d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610cec575050610cea9061171d565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610f0c575b50610d765760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203610eb557610d928461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610ead575b610dcb57005b833b15610e5c5750610cea925f92839251915af43d15610e55573d610def816114db565b90610dfd60405192836114a5565b81523d5f602083013e5b60405191610e166060846114a5565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526117b4565b6060610e07565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610dc5565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610f38575b81610f28602093836114a5565b810103126107c657519086610d15565b3d9150610f1b565b346107c65760203660031901126107c6576001600160a01b03610f61611479565b165f5260fd6020526020600160405f200154604051908152f35b346107c6575f3660031901126107c657610f9361161d565b60655460ff811615610fd25760ff19166065557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346107c65760203660031901126107c657611027611479565b6110607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c8f30821415611504565b61106861161d565b60209060405161107883826114a5565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110bd575050610cea915061171d565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f91816112db575b506111465760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203611284576111628461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061127d575b61119b57005b833b1561122c5750610cea93925f92839251915af43d15611224573d906111c1826114db565b916111cf60405193846114a5565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051936112086060866114a5565b60278552840152660819985a5b195960ca1b60408401526117b4565b6060906111d8565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f611195565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611303575b6112f381836114a5565b810103126107c6575190876110e5565b503d6112e9565b346107c65760203660031901126107c6576004356113266115d9565b335f5260fd60205260405f20908154918183106113f35760018101908154801580156113ea575b6113d4575061135e835f94956114f7565b905555337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd5f80a2805f81156113cb575b5f80809381933390f1156108cf576040519081527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d60203392a2005b506108fc61138f565b635f6e272d60e11b5f526004524260245260445ffd5b5042811161134d565b50906321c3d50f60e01b5f5260045260245260445ffd5b346107c65760203660031901126107c6576001600160a01b0361142b611479565b165f5260fd602052602060405f2054604051908152f35b346107c65760203660031901126107c6576020906001600160a01b03611466611479565b165f5260fd8252600260405f2001548152f35b600435906001600160a01b03821682036107c657565b602435906001600160a01b03821682036107c657565b90601f8019910116810190811067ffffffffffffffff8211176114c757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116114c757601f01601f191660200190565b9190820391821161008757565b1561150b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561156c57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b8181029291811591840414171561008757565b60ff606554166115e557565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b6033546001600160a01b0316330361163157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b156116c457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156117595760018060a01b03166001600160601b0360a01b5f5160206118105f395f51905f525416175f5160206118105f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156117c0575090565b8151156117d05750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c744ec1e96c5cf26e15b252ac9b803717aa2db960126b08e41b9920bda86d72864736f6c634300081b0033","r":"0x7101c5c72962b64c911e52ef35acc1b5b5b22d2543eaac2e9b4ff7ec08f8800e","s":"0x4bd15a511ab13acf9d239b24499f1dd82f9007aa3ae0a866d00a43fa55a63872","yParity":"0x1","v":"0x1","hash":"0x4255d599822a3c930084dc7ff93dd4e7b5ca89e6750e7c74b7ece064d410e394"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x69e144742ed002c0ec335a223a318e61e4c628c60a659d8aae445925acbc2744","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x236ea17ebbe7e6e653f253184c5c53784ad98e0edc6924b67f8d67ce0084865b","transactionsRoot":"0x35ab70de576df1c2a96e0aa7636c7869e2792eaa2cbf4b2b943f6bb3c632f494","receiptsRoot":"0xa5b94f5f5820f20993dbeaa2d2060d052b0a7dbc50dccb57be76ea36af431a76","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x1152a4","timestamp":"0x68b88d9c","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x168508","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6101808060405234610c9257604081611f5380380380916100208285610c96565b833981010312610c925780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa15610b11575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e0604051916103068284610c96565b60068352601f19820136602085013760205f604051828101907f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be482527f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4604082015260408152610377606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161039d84610ccd565b5260205f604051828101907f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f82527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642604082015260408152610400606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161042684610cda565b5260205f604051828101907f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34782527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b604082015260408152610489606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160021015610b5257606084015260205f604051828101907f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a782527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6604082015260408152610517606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160031015610b5257608084015260205f604051828101907f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d82527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e826040820152604081526105a5606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160041015610b525760a084015260205f604051828101907f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49382527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809604082015260408152610633606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160051015610b525760c084015260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa15610b11575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526106f8606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526107c460a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261089060a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519760205f604051828101907f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c82527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e033360408201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d03076260608201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d360808201526080815261095c60a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa15610b11575f8051610140526101008190526060610120526020610160525b885180610100511015610b7a575f19810190808211610b66576101005190035f1901908111610b66578951811015610b5257610160519060051b8a0101519060405191610a176101205184610c96565b60028352610160516040903690850137610a3083610ccd565b52610a3a82610cda565b52604051610a4b6101605182610c96565b5f8152601f196101605101366101605183013781519061ffff8211610b3a5791604051928391610140516101605184015260408301815190916101605101905f905b808210610b1c575050509281610ad994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610c96565b5f60405191805180916101605101845e820191818352806101605193039060025afa15610b11575f51610100805160010190526109c7565b6040513d5f823e3d90fd5b82518452610160518896509384019390920191600190910190610a8d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c28352610bbe60e284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a084015260828352610c1860a284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f516001600160e01b03191681526040516112689182610ceb83396080518281816105c50152610dc7015260a0518281816105810152610ded015260c0518281816101690152610e2501525181818160ae0152610d330152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610cb957604052565b634e487b7160e01b5f52604160045260245ffd5b805115610b525760200190565b805160011015610b52576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f0000000000000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f000000000000000000000000000000000000000000000000000000000000000060801c83527f000000000000000000000000000000000000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f0000000000000000000000000000000000000000000000000000000000000000608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033a54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f5604446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0","r":"0xe53caf1ef8f20cc80febec5e4bf35bc017e79351bd230f93b3b42b171897690f","s":"0x29bd204af02965d730d692b958e455660a328984a9c0bd6c1fa0ea6c661dc069","yParity":"0x0","v":"0x0","hash":"0xd09f03bb59663e56394d89f5fb4161ccd056ac94e68cacfdd4df50df4389b35b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xae0843be8b0c5e26f44e5cf5233fe0a78a9e4ef8fe7dc6e4701658c372e41204","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xde10d9a2787d3ed17ff8d60607880ee525b86b8af98f45791c80c94fe3337887","transactionsRoot":"0x0afa02114a36d55ad21854c3c56932fef0dbc40b39e1924a310ba02a1c83d83f","receiptsRoot":"0xdaac65e1ae2699f388b7ce5bb28745427178e7aa6bee7b7fefc1c8351d24b153","logsBloom":"0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x14","gasLimit":"0x1c9c380","gasUsed":"0x431a74","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x92c04ec","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x31","gas":"0x573bfd","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x61018080604052346103325760808161521e803803809161002082856103c5565b833981010312610332578051906001600160a01b0382168083036103325760208201516001600160a01b03811691908281036103325760408401516001600160a01b0381169490919085830361033257606061007c91016103fc565b9560805260a0528060c0528460e052610093610410565b61010052604051636830483560e01b8152602081600481875afa90811561033e575f9161038b575b5061012052604051632efa2ca360e11b8152602081600481875afa90811561033e575f91610349575b50610140526101205160405163df5cf72360e01b815290602090829060049082906001600160a01b03165afa90811561033e575f916102f8575b5061016052156102c357156102885715610242576001600160a01b03161561020c57610148610410565b604051614d6890816104b6823960805181818161107201528181611328015281816113e90152613587015260a05181613ad2015260c0518181816112f8015281816124b2015281816135570152613728015260e05181818161254e0152613774015261010051818181610a3e015281816110b601528181612d4f01528181612e38015261336901526101205181818161102e015281816130e90152613231015261014051818181610fea0152613026015261016051818181611a260152612f470152f35b604051630b0f5aa160e11b815260206004820152600d60248201526c7374616b65526567697374727960981b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601360248201527f7265676973747279436f6f7264696e61746f72000000000000000000000000006044820152606490fd5b604051630b0f5aa160e11b81526020600482015260126024820152713932bbb0b93239a1b7b7b93234b730ba37b960711b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b6176734469726563746f727960a01b6044820152606490fd5b90506020813d602011610336575b81610313602093836103c5565b8101031261033257516001600160a01b0381168103610332575f61011e565b5f80fd5b3d9150610306565b6040513d5f823e3d90fd5b90506020813d602011610383575b81610364602093836103c5565b8101031261033257516001600160a01b0381168103610332575f6100e4565b3d9150610357565b90506020813d6020116103bd575b816103a6602093836103c5565b81010312610332576103b7906103fc565b5f6100bb565b3d9150610399565b601f909101601f19168101906001600160401b038211908210176103e857604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361033257565b5f5460ff8160081c166104605760ff8082161061042a5750565b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fdfe60806040526004361015610022575b3615610018575f80fd5b610020613ef5565b005b5f3560e01c806306045a91146102ec57806310d67a2f146102e7578063136439dd146102e2578063137122b5146102dd578063171f1d5b146102d857806318daeeaf146102d35780632e1a7d4d146102ce57806333cfb7b7146102c95780633bc28c8c146102c4578063416c7e5e146102bf5780634223d551146102ba5780634a5bf632146102b55780634ae07c37146102b0578063595c6a67146102ab5780635ac86ab7146102a65780635c975abb146102a15780635df459461461029c57806368304835146102975780636b3aa72e146102925780636d14a9871461028d57806370a0823114610238578063715018a614610288578063886f1195146102835780638da5cb5b1461027e57806395c6d604146102795780639926ee7d14610274578063a364f4da1461026f578063a98fb3551461026a578063ab21739a14610265578063b099627e14610260578063b753645e1461025b578063b98d090814610256578063d66eaabd14610251578063df5cf7231461024c578063e481af9d14610247578063ea5ca34b14610242578063f2fde38b1461023d578063f474b52014610238578063f7013ef614610233578063f9120af61461022e578063fa534dc014610229578063fabc1cbc14610224578063fc299dee1461021f578063fce36c7d1461021a5763fd4c3b7c0361000e57611f10565b611eb5565b611e8d565b611d7f565b611c81565b611c3a565b611b1e565b6110e5565b611a8d565b611a70565b611a55565b611a11565b611838565b611816565b6117f5565b6117ac565b611457565b61139d565b6112d4565b611249565b6111f8565b6111a3565b61117b565b611120565b6110a1565b61105d565b611019565b610fd5565b610fb8565b610f85565b610eff565b610e76565b610b7c565b610b3f565b610a0c565b6109d5565b6109a1565b610887565b61082d565b6107c5565b61068d565b610548565b6104a6565b61042b565b606435906001600160601b03198216820361030857565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761033b57604052565b61030c565b606081019081106001600160401b0382111761033b57604052565b90601f801991011681019081106001600160401b0382111761033b57604052565b6040519061038c6101008361035b565b565b6040519061038c60408361035b565b9061038c604051928361035b565b6001600160401b03811161033b57601f01601f191660200190565b9291926103d2826103ab565b916103e0604051938461035b565b829481845281830111610308578281602093845f960137010152565b9080601f8301121561030857816020610417933591016103c6565b90565b6001600160a01b0381160361030857565b34610308576101003660031901126103085760243560443560043561044e6102f1565b9260a435926084356001600160401b038511610308576104a2956104796104909636906004016103fc565b9260c4359460e4359661048b8861041a565b611fb5565b60405190151581529081906020820190565b0390f35b3461030857602036600319011261030857600480356104c48161041a565b60fb5460405163755b36bd60e11b81529260209184919082906001600160a01b03165afa918215610543576100209261050f915f91610514575b506001600160a01b031633146120de565b613ff6565b610536915060203d60201161053c575b61052e818361035b565b8101906120be565b5f6104fe565b503d610524565b6120d3565b346103085760203660031901126103085760043560fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa80156105435761059f915f91610653575b50612152565b60fc54818116036105e8578060fc557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806105e33394829190602083019252565b0390a2005b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610675915060203d60201161067b575b61066d818361035b565b81019061213d565b5f610599565b503d610663565b60ff81160361030857565b346103085760203660031901126103085760206004356106ac81610682565b60cc54600160ff60405193161b1615158152f35b60409060e319011261030857604051906106d982610320565b60e4358252610104356020830152565b91908260409103126103085760405161070181610320565b6020808294803584520135910152565b9080601f83011215610308576040519161072c60408461035b565b82906040810192831161030857905b8282106107485750505090565b813581526020918201910161073b565b9060806063198301126103085760405161077181610320565b602061078c8294610783816064610711565b845260a4610711565b910152565b919060808382031261030857602061078c604051926107af84610320565b604084966107bd8382610711565b865201610711565b34610308576101203660031901126103085760043560403660231901126103085761081d60409182516107f781610320565b6024358152604435602082015261080d36610758565b90610817366106c0565b926121ed565b8251911515825215156020820152f35b346103085760203660031901126103085760ff60043561084c81610682565b610854614565565b166001811b1960cc541660cc557f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a5f80a2005b34610308576020366003190112610308576004356108b26108ac60088060fc54161490565b15611f69565b335f5260ca6020528060405f20541061092b57335f90815260ca6020526040812090918291829182916108e68282546122fa565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a2818115610922575b3390f11561054357005b506108fc610918565b335f90815260ca6020526040902061095c91905b54632e2a182f60e11b5f5233600452602491909152604452606490565b5ffd5b60206040818301928281528451809452019201905f5b8181106109825750505090565b82516001600160a01b0316845260209384019390920191600101610975565b34610308576020366003190112610308576104a26109c96004356109c48161041a565b612493565b6040519182918261095f565b34610308576020366003190112610308576100206004356109f58161041a565b6109fd614565565b61465b565b8015150361030857565b3461030857602036600319011261030857600435610a2981610a02565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610543575f91610b20575b506001600160a01b03163303610a8f57610020906146b9565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b610b39915060203d60201161053c5761052e818361035b565b5f610a76565b602036600319011261030857610020600435610b5a8161041a565b610b6b60108060fc54161415611f69565b34906146f7565b5f91031261030857565b34610308575f3660031901126103085760cb546040516001600160a01b039091168152602090f35b6024359063ffffffff8216820361030857565b359063ffffffff8216820361030857565b6001600160401b03811161033b5760051b60200190565b9080601f83011215610308578135610bf681610bc8565b92610c04604051948561035b565b81845260208085019260051b82010192831161030857602001905b828210610c2c5750505090565b60208091610c3984610bb7565b815201910190610c1f565b81601f82011215610308578035610c5a81610bc8565b92610c68604051948561035b565b81845260208085019260061b8401019281841161030857602001915b838310610c92575050505090565b6020604091610ca184866106e9565b815201920191610c84565b9080601f83011215610308578135610cc381610bc8565b92610cd1604051948561035b565b81845260208085019260051b820101918383116103085760208201905b838210610cfd57505050505090565b81356001600160401b03811161030857602091610d1f87848094880101610bdf565b815201910190610cee565b9190916101808184031261030857610d4061037c565b9281356001600160401b0381116103085781610d5d918401610bdf565b845260208201356001600160401b0381116103085781610d7e918401610c44565b602085015260408201356001600160401b0381116103085781610da2918401610c44565b6040850152610db48160608401610791565b6060850152610dc68160e084016106e9565b60808501526101208201356001600160401b0381116103085781610deb918401610bdf565b60a08501526101408201356001600160401b0381116103085781610e10918401610bdf565b60c08501526101608201356001600160401b03811161030857610e339201610cac565b60e0830152565b90602080835192838152019201905f5b818110610e575750505090565b82516001600160601b0316845260209384019390920191600101610e4a565b3461030857606036600319011261030857600435610e92610ba4565b90604435906001600160401b03821161030857610ef592610eba610ec0933690600401610d2a565b91612c68565b604051928392604084526020610ee182516040808801526080870190610e3a565b910151848203603f19016060860152610e3a565b9060208301520390f35b34610308575f3660031901126103085760fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa801561054357610f51915f916106535750612152565b5f1960fc556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b34610308576020366003190112610308576020600160ff600435610fa881610682565b161b8060fc541614604051908152f35b34610308575f36600319011261030857602060fc54604051908152f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308576020366003190112610308576004356111028161041a565b60018060a01b03165f5260ca602052602060405f2054604051908152f35b34610308575f36600319011261030857611138614565565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610308575f3660031901126103085760fb546040516001600160a01b039091168152602090f35b34610308575f366003190112610308576033546040516001600160a01b039091168152602090f35b9181601f84011215610308578235916001600160401b038311610308576020838186019501011161030857565b34610308576040366003190112610308576004356001600160401b0381116103085761123a61122d60209236906004016111cb565b91906024359236916103c6565b82815191012014604051908152f35b34610308576040366003190112610308576004356112668161041a565b602435906001600160401b0382116103085760606003198336030112610308576040519061129382610340565b82600401356001600160401b03811161030857610020936112bc604492600436918401016103fc565b84526024810135602085015201356040830152613551565b34610308575f6020366003190112610308576004356112f28161041a565b611326337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146134c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610308576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af1801561054357611391575080f35b61002091505f9061035b565b34610308575f6020366003190112610308576004356001600160401b0381116103085736602382011215610308576113df9036906024816004013591016103c6565b6113e7614565565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103085760405163a98fb35560e01b815260206004820152915f918391829084908290611445906024830190613631565b03925af1801561054357611391575080f35b34610308576060366003190112610308576004356024356114778161041a565b6044356001600160401b03811161030857611496903690600401610d2a565b60cb546001600160a01b03163381900361179657506114bc6108ac60028060fc54161490565b5a6040805160208101868152606086901b6001600160601b031916928201929092526114f581605481015b03601f19810183528261035b565b5190209161150b835f5260c960205260405f2090565b92835463ffffffff6115208263ffffffff1690565b16156117825760201c60ff1661177057835464ff0000000019166401000000001784556001600160a01b0385165f90815260ca602052604090205493600181015480951061172d575461157b92919063ffffffff1690612c68565b50936115a86001600160601b036115a26115958851612397565b516001600160601b031690565b16613655565b60208601906115d16115c56115c06115958551612397565b613694565b6001600160601b031690565b116116e0575f808080888861163b61163461162f8b8b7f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e2604051806116258a82919091602081019260018060a01b03169052565b0390a25a906122fa565b6123b5565b3a90613681565b9080821084146116d85750905b6001600160a01b0381165f90815260ca6020526040902061166a8382546122fa565b90556001600160a01b03165f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a260cb546116bf906116b3906001600160a01b031681565b6001600160a01b031690565b8282156116cf575bf11561054357005b506108fc6116c7565b905090611648565b61095c9061170c6115c06115956117056117006115c56115958d51612397565b613655565b9351612397565b63530f5c4560e11b5f526004919091526001600160601b0316602452604490565b61095c868661174c8260018060a01b03165f5260ca60205260405f2090565b54632e2a182f60e11b5f526001600160a01b03909216600452602452604452606490565b634e78d7f960e11b5f5260045260245ffd5b6311cb69a760e11b5f52600482905260245ffd5b632cbe419560e01b5f523360045260245260445ffd5b34610308576020366003190112610308576004355f5260c9602052606060405f206001815491015460ff6040519263ffffffff8116845260201c16151560208301526040820152f35b3461030857602036600319011261030857600435611811614565565b60cc55005b34610308575f36600319011261030857602060ff609754166040519015158152f35b6060366003190112610308576004356024356001600160401b038111610308576118669036906004016111cb565b91906044359261187d6108ac60018060fc54161490565b60408051602081018581523360601b6001600160601b031916928201929092526118aa81605481016114e7565b5190209063ffffffff6118d26118c8845f5260c960205260405f2090565b5463ffffffff1690565b166119fd57346119b5575b335f90815260ca602052604090208590541061199c577f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5593946105e39161198f6119256136b5565b4363ffffffff168082529561194e905f60208401528560408401525f5260c960205260405f2090565b90604060019163ffffffff81511663ffffffff198554161784556020810151151564ff0000000085549160201b169064ff0000000019161784550151910155565b60405194859433866136d3565b335f90815260ca6020526040902061095c90869061093f565b335f90815260ca602052604090206119ce348254612419565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a26118dd565b630c40bc4360e21b5f52600482905260245ffd5b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576104a26109c9613719565b34610308575f36600319011261030857602060cc54604051908152f35b3461030857602036600319011261030857600435611aaa8161041a565b611ab2614565565b6001600160a01b03811615611aca576100209061497d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103085760a036600319011261030857600435611b3b8161041a565b611bb2602435611b4a8161041a565b604435611b568161041a565b60643590611b638261041a565b608435925f5495611b98611b82611b7e8960ff9060081c1690565b1590565b80988199611c2c575b8115611c0c575b50613946565b86611ba9600160ff195f5416175f55565b611bf5576139a9565b611bb857005b611bc661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c0761010061ff00195f5416175f55565b6139a9565b303b15915081611c1e575b505f611b92565b60ff1660011490505f611c17565b600160ff8216109150611b8b565b3461030857602036600319011261030857600435611c578161041a565b611c5f614565565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055005b346103085760e036600319011261030857604435600435602435611ca36102f1565b916084359260a4356001600160401b03811161030857602094611ccd611d2b9236906004016103fc565b9060c43593611ce36108ac60048060fc54161490565b60405198899788976306045a9160e01b89526004890152602488015260448701526001600160601b0319166064860152608485015261010060a4850152610104840190613631565b9060c48301525f60e48301520381305afa8015610543576104a2915f91611d60575b5060405190151581529081906020820190565b611d79915060203d60201161067b5761066d818361035b565b5f611d4d565b346103085760203660031901126103085760fb5460405163755b36bd60e11b81526004803592602091839182906001600160a01b03165afa801561054357611dd8915f9161051457506001600160a01b031633146120de565b60fc54198119811603611e2257611dee8160fc55565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9080602081016105e3565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b34610308575f366003190112610308576065546040516001600160a01b039091168152602090f35b34610308576020366003190112610308576004356001600160401b03811161030857366023820112156103085780600401356001600160401b038111610308573660248260051b840101116103085760246100209201613abe565b346103085760203660031901126103085760ff600435611f2f81610682565b611f37614565565b166001811b60cc541760cc557fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe5f80a2005b15611f7057565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b9061041797969594939291611fd16108ac60048060fc54161490565b90969092906001600160a01b0381166120875750835b63ffffffff6120016118c8835f5260c960205260405f2090565b161561207b57611b7e61201f612029925f5260c960205260405f2090565b5460201c60ff1690565b6120705760408051602081019485529081019790975260608701919091526001600160601b03191660808601526104179461206781609481016114e7565b51902091613f10565b505050505050505f90565b50505050505050505f90565b6040516120b6816114e760208201948986909160349282526001600160601b03199060601b1660208201520190565b519020611fe7565b9081602091031261030857516104178161041a565b6040513d5f823e3d90fd5b156120e557565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b90816020910312610308575161041781610a02565b1561215957565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b9060028110156121d45760051b0190565b6121af565b634e487b7160e01b5f52601260045260245ffd5b6122c96122a66122cf956122a061229985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261227081610120840103601f19810183528261035b565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614122565b90614168565b926122a06122bb6122b56141f0565b946142e7565b916122c4614403565b614122565b91614437565b9091565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116122f557565b6122d3565b919082039182116122f557565b90816020910312610308575190565b9081602091031261030857516001600160c01b03811681036103085790565b90816020910312610308575161041781610682565b6040519061235960208361035b565b5f808352366020840137565b9061236f82610bc8565b61237c604051918261035b565b828152809261238d601f1991610bc8565b0190602036910137565b8051156121d45760200190565b9081518110156121d4570160200190565b906201117082018092116122f557565b90602082018092116122f557565b90600182018092116122f557565b90600282018092116122f557565b90600382018092116122f557565b90600482018092116122f557565b90600582018092116122f557565b919082018092116122f557565b6001600160601b0381160361030857565b908160409103126103085760206040519161245183610320565b805161245c8161041a565b8352015161246981612426565b602082015290565b80518210156121d45760209160051b010190565b5f1981146122f55760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690602081602481855afa90811561054357612513916020915f91612803575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa908115610543575f916127d4575b506001600160c01b0316908115908115612771575b5061276857612549906145bd565b5f91907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690835b8151851015612625576125ce60206125ab6125a561259789876123a4565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa8015610543576001926125ed925f926125f5575b50612419565b940193612579565b61261791925060203d811161261e575b61260f818361035b565b810190612307565b905f6125e7565b503d612605565b612630919450612365565b925f905f5b81518110156127625761264e6125a561259783856123a4565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa918215610543575f92612742575b50905f915b81831061269357505050600101612635565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861270b985f91612714575b50516001600160a01b031690565b92612471565b6001600160a01b039091169052565b612485565b95019190612681565b612735915060403d811161273b575b61272d818361035b565b810190612437565b5f6126e3565b503d612723565b61275b91925060203d811161261e5761260f818361035b565b905f61267c565b50505050565b5061041761234a565b604051639aa1653d60e01b81529150602090829060049082905afa80156105435760ff915f916127a5575b5016155f61253b565b6127c7915060203d6020116127cd575b6127bf818361035b565b810190612335565b5f61279c565b503d6127b5565b6127f6915060203d6020116127fc575b6127ee818361035b565b810190612316565b5f612526565b503d6127e4565b61281a9150823d841161261e5761260f818361035b565b5f6124f3565b6040519061282d82610320565b60606020838281520152565b6040519061284860408361035b565b600182525f6020830152565b1561285b57565b60405162461bcd60e51b815260206004820152604160248201525f516020614d135f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156128c457565b60a460405162461bcd60e51b815260206004820152604460248201525f516020614d135f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b1561292f57565b60405162461bcd60e51b815260206004820152603c60248201525f516020614d135f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b1561298e57565b608460405162461bcd60e51b815260206004820152604060248201525f516020614d135f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b156129ec57565b60405162461bcd60e51b815260206004820152606660248201525f516020614d135f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610308575167ffffffffffffffff19811681036103085790565b15612aa157565b60405162461bcd60e51b815260206004820152606160248201525f516020614d135f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b90816020910312610308575161041781612426565b906001600160601b03809116911603906001600160601b0382116122f557565b15612b6557565b60405162461bcd60e51b815260206004820152604360248201525f516020614d135f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15612bd057565b60405162461bcd60e51b815260206004820152603960248201525f516020614d135f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110612c525750505090565b8251845260209384019390920191600101612c45565b9190612c72612820565b50612c7b612839565b5160408301515114806134ae575b80613498575b8061347d575b612c9e90612854565b612cb0602083015151835151146128bd565b612cc763ffffffff431663ffffffff831610612928565b612ccf61038e565b5f81525f602082015290612ce1612820565b94612cf3612ced612839565b51612365565b6020870152612d03612ced612839565b8652612d0d612820565b90612d1c602086015151612365565b8252612d2c602086015151612365565b6020830152612d39612839565b604051639aa1653d60e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561054357612d91925f9261345c575b5061475a565b965f945b60208701518051871015612f0c57612db087612dc392612471565b5180515f526020015160205260405f2090565b612dd1876020870151612471565b5285612ed7575b612de6866020860151612471565b51602086612e02612df88a8c51612471565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa91821561054357600192612eb1925f91612eb9575b50838060c01b0316612e82898851612471565b526122a0612e948960208c0151612471565b51612eab8d612ea48c8b51612471565b51166147e1565b90614812565b950194612d95565b612ed1915060203d81116127fc576127ee818361035b565b5f612e6f565b612f07612ee8876020870151612471565b51612f006020870151612efa8a6122e7565b90612471565b5110612987565b612dd8565b50909750612f1f919296959394506148f8565b90612f2c60975460ff1690565b8015613451576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610543575f91613432575b5095909492955b5f965b612f91612839565b518810156133df578661332b575b612fc1612fb3612db08a60408a0151612471565b67ffffffffffffffff191690565b90612fd96125a56125978b612fd4612839565b6123a4565b602087612fed612df88d60a08d0151612471565b604051631a2f32ab60e21b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9283156105435761308993613074925f916132fd575b5067ffffffffffffffff19918216911614612a9a565b613082896040890151612471565b5190614168565b9061309c6125a56125978a612fd4612839565b6020866130b0612df88c60c08c0151612471565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa8015610543576115958a60208e61314661314d95613158975f916132e0575b506131388585850151612471565b906001600160601b03169052565b0151612471565b6131388a8d51612471565b5f965f5b6020880151518110156132d1578a8a613199613179848451612471565b5161318c6125a561259785612fd4612839565b60ff161c60019081161490565b6131a8575b505060010161315c565b888a9261322d6131ed612df8879f6131e78760e06131de849c60206131d66125a5612597839f612fd4612839565b9a0151612471565b519a0151612471565b51612471565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830195909552919093166064840152829081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610543576132908e6001948e86955f9261329b575b506126f16131389293519361328b6115958487612471565b612b3e565b019890508a8a61319e565b61313892506132c36126f19160203d81116132ca575b6132bb818361035b565b810190612b29565b9250613273565b503d6132b1565b50600190980197965090612f89565b6132f79150843d81116132ca576132bb818361035b565b5f61312a565b61331e915060203d8111613324575b613316818361035b565b810190612a79565b5f61305e565b503d61330c565b61336560206133426125a56125978c612fd4612839565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610543576133bc915f916133c1575b506133b68463ffffffff891692612419565b116129e5565b612f9f565b6133d9915060203d811161261e5761260f818361035b565b5f6133a4565b60209497506114e7965061341491506134199261342c9661340d929a959a60806060830151920151926121ed565b9190612b5e565b612bc9565b0151604051928391602083019586612c28565b51902090565b61344b915060203d60201161261e5761260f818361035b565b5f612f7f565b5f9590949295612f86565b61347691925060203d6020116127cd576127bf818361035b565b905f612d8b565b50612c9e613489612839565b5160e084015151149050612c95565b506134a1612839565b5160c08301515114612c8f565b506134b7612839565b5160a08301515114612c89565b156134cb57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b613585337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146134c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b15610308575f928392604051948580948193639926ee7d60e01b835260018060a01b031660048301526040602483015260406135fa82516060604486015260a4850190613631565b91602081015160648501520151608483015203925af180156105435761361d5750565b8061362b5f61038c9361035b565b80610b72565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906064820291808304606414901517156122f557565b906006820291808304600614901517156122f557565b818102929181159184041417156122f557565b6001600160601b036043911602906001600160601b0382169182036122f557565b604051906136c282610340565b5f6040838281528260208201520152565b95949360609363ffffffff60a0948394600180881b03168a5216602089015260806040890152816080890152838801375f828288010152601f8019910116850101930152565b604051639aa1653d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa80156105435760ff915f91613927575b5016801561391d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f9081905b8083106138d957506137b49150612365565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105435760ff915f916138bb575b50168110156138b457604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa918215610543575f92613894575b50905f915b81831061382e575050506001016137b9565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861388b985f916127145750516001600160a01b031690565b9501919061381c565b6138ad91925060203d811161261e5761260f818361035b565b905f613817565b5092505050565b6138d3915060203d81116127cd576127bf818361035b565b5f6137df565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa801561054357600192613914925f926125f55750612419565b920191906137a2565b505061041761234a565b613940915060203d6020116127cd576127bf818361035b565b5f61376a565b1561394d57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b90939291906001600160a01b03811615613a89576001600160a01b03851615613a50576001600160a01b03821615613a1657613a0c613a11926139ef61038c97846149c5565b60018060a01b03166001600160601b0360a01b60cb54161760cb55565b61497d565b614a38565b604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606490fd5b6065546001600160a01b03163303613cd2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915f5b818110613b405750823b1561030857613b2f925f928360405180968195829463fce36c7d60e01b845260048401613de6565b03925af180156105435761361d5750565b5f6020613b9b613b5e6116b383613b5887898b613d52565b01613d74565b6040613b6b86888a613d52565b6040516323b872dd60e01b8152336004820152306024820152910135604482015293849283919082906064820190565b03925af1801561054357613cb6575b50613bbe6116b36020613b58848688613d52565b604051636eb1769f60e11b81523060048201526001600160a01b03861660248201529190602090839060449082905afa801561054357613c616020915f948591613c99575b50613c2e613c196116b385613b58888b8d613d52565b916040613c27878a8c613d52565b0135612419565b60405163095ea7b360e01b81526001600160a01b038a166004820152602481019190915294859283919082906044820190565b03925af191821561054357600192613c7b575b5001613afd565b613c929060203d811161067b5761066d818361035b565b505f613c74565b613cb09150833d811161261e5761260f818361035b565b5f613c03565b613ccd9060203d811161067b5761066d818361035b565b613baa565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b91908110156121d45760051b81013590609e1981360301821215610308570190565b356104178161041a565b916020908281520191905f5b818110613d975750505090565b9091926040806001928635613dab8161041a565b848060a01b031681526001600160601b036020880135613dca81612426565b166020820152019401929101613d8a565b359061038c8261041a565b9180602084016020855252604083019060408160051b85010193835f91609e1982360301905b848410613e1d575050505050505090565b90919293949596603f19828203018752873583811215610308578401908135601e198336030181121561030857820191602083359301906001600160401b038411610308578360061b3603821361030857613ee6836080613edb81613e916020989760019a60a08b9a5260a0870191613d7e565b95613eaf613ea0898301613ddb565b6001600160a01b0316868a0152565b60408101356040860152613ed5613ec860608301610bb7565b63ffffffff166060870152565b01610bb7565b63ffffffff16910152565b99019701959401929190613e0c565b613f0660208060fc54161415611f69565b61038c34336146f7565b93909291601f855116613f775791906020925b85518411613f6e5760018316613f54575f5282850151602052613f4d60405f209260011c936123c5565b9291613f23565b838601515f52602052613f4d60405f209260011c936123c5565b92509350501490565b60405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a490fd5b6001600160a01b038116156140615760fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a160018060a01b03166001600160601b0360a01b60fb54161760fb55565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b604051906140eb82610320565b5f6020838281520152565b60405190610180614107818461035b565b368337565b6040519061411b60208361035b565b6020368337565b919060409060606141316140de565b9485926020855192614143858561035b565b8436853780518452015160208301528482015260076107cf195a01fa1561416657565bfe5b6020929160806040926141796140de565b9586938186519361418a868661035b565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561416657156141bb57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b6040516141fc81610320565b604090815161420b838261035b565b8236823781526020825191614220848461035b565b8336843701528051614232828261035b565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190614288838361035b565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526142dd8351938461035b565b8252602082015290565b5f516020614cd35f395f51905f52906142fe6140de565b505f919006602060c0835b6143fe575f935f516020614cd35f395f51905f5260038186818180090908604051614334858261035b565b84368237848185604051614348828261035b565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614cd35f395f51905f5260a082015260056107cf195a01fa8015614166576143b290614c86565b51916143fe575f516020614cd35f395f51905f52828009146143e957505f516020614cd35f395f51905f5260015f94089293614309565b929350506143f561038e565b92835282015290565b6121d9565b61440b6140de565b5060405161441881610320565b600181526002602082015290565b90600c8110156121d45760051b0190565b93929091614445604061039d565b9485526020850152614457604061039d565b91825260208201526144676140f6565b925f5b600281106144945750505060206101809261448361410c565b93849160086201d4c0fa9151151590565b806144a060019261366b565b6144aa82856121c3565b51516144b68289614426565b5260206144c383866121c3565b5101516144d86144d2836123d3565b89614426565b526144e382866121c3565b5151516144f26144d2836123e1565b5261450861450083876121c3565b515160200190565b516145156144d2836123ef565b52602061452283876121c3565b510151516145326144d2836123fd565b5261455e6145586145516020614548868a6121c3565b51015160200190565b519261240b565b88614426565b520161446a565b6033546001600160a01b0316330361457957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff6145c9826147e1565b166145d3816103ab565b906145e1604051928361035b565b8082526145f0601f19916103ab565b013660208301375f5f5b8251821080614650575b15614649576001811b8416614622575b61461d90612485565b6145fa565b90600161461d9160ff60f81b8460f81b165f1a61463f82876123a4565b5301919050614614565b5050905090565b506101008110614604565b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b8115614747576001600160a01b03165f81815260ca602052604090208054919282019182106122f55755805f5260ca6020525f516020614cf35f395f51905f52602060405f2054604051908152a2565b50632097692160e11b5f5260045260245ffd5b90600161476860ff93614b9f565b928392161b11156147765790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6147ed575090565b5f1981018181116122f55761ffff9116911661ffff81146122f55760010190806147e5565b9061481b6140de565b5061ffff8116906102008210156148c057600182146148bb5761483c61038e565b5f81525f602082015292906001905f925b61ffff831685101561486157505050505090565b600161ffff831660ff86161c81161461489b575b60016148916148868360ff94614168565b9460011b61fffe1690565b940116929161484d565b9460016148916148866148b08960ff95614168565b989350505050614875565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b6149006140de565b50805190811580614971575b1561492d57505060405161492160408261035b565b5f81525f602082015290565b60205f516020614cd35f395f51905f52910151065f516020614cd35f395f51905f52035f516020614cd35f395f51905f5281116122f557604051916142dd83610320565b5060208101511561490c565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b9060ff5f5460081c16156149df576109fd61038c9261497d565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb546001600160a01b03161580614b0b575b15614a905781614a5d61038c9360fc55565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a2613ff6565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b0381161515614a4b565b15614b2457565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614c0f57815115614c0a57614bcd614bc36125a561259785612397565b60ff600191161b90565b6001905b8351821015614c0557600190614bf0614bc36125a561259786896123a4565b90614bfc818311614b1d565b17910190614bd1565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b15614c8d57565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212203f93810e136abc668d4b6e863312064f727ebbe3f1a248a9593f47836096adac64736f6c634300081b00330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","r":"0xbc8e16c16700e98bcd56e334c93e69726ff2421a99198016f140eb66c295c4a","s":"0x340fa288cc88f4771163cb472e6affc3a1d6890afb2deeab48da9605c8c84482","yParity":"0x1","v":"0x1","hash":"0x05b063825862b62f9d5be96ceafc4f9a9bcaa3bc00b6c021c1a3542a09e081ed"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x1fcec931265e1d1b4955eb5e69f8828f029fa9418f1bf60af151c1d86a5a09cb","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x504182a6990ce887d264fec8fe0e4904ea6b0dcf5b3fd10d811f42456b9f2124","transactionsRoot":"0x29da4f22376fd2dd5fdebc984fb6f51af4bbd88d96d13443909b796793c80dad","receiptsRoot":"0x3027a24caf82331e5e26342ccc82134a3464ca6da4c6705aed3b41f96e6cef81","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000800000000000000000000000000000240000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000004000000001000000001000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x16","gasLimit":"0x1c9c380","gasUsed":"0xad33","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x753f64d","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x33","gas":"0xfd4d","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x851356ae760d987e095750cceb3bc6014560891c","value":"0x0","accessList":[],"input":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","r":"0x94864d5fe269452adf176dcf9ebcac2f1c93ad3d23ee0b391e60b53cf7c16bb5","s":"0x200773b7c4fe70ad605db6feb1fc6c774947f1cc0890a7f09e419084967a84fb","yParity":"0x1","v":"0x1","hash":"0x51e445fb29d6afe81480102ae61326b0d3a1194f01bd3f7a665a3dd01aed0236"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x86bc722416eb6c6a2a8ccbe1110b9581b38ce03d90dd713aac7d545d5e6e4907","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x283adc3e25484a3333e20ab5093462ecd012b97109da2edc270e2c6f1d537320","transactionsRoot":"0xc1c2ee2852f3787f077c13080363ffae0e540d03cf198af9505d6f89d970adf5","receiptsRoot":"0x1fdc1e5ac938a638c6f36ca65876680544a468d729a7caaa1c9d1a08d3890b2c","logsBloom":"0x00000000000000000000000000000000000400000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000020000000000000000000008000000000000000000000040000000000000000000000000000000000080000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1d","gasLimit":"0x1c9c380","gasUsed":"0xd6fb","timestamp":"0x68b89569","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2f81ad1","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3a","gas":"0xd880","maxFeePerGas":"0x6c5804b","maxPriorityFeePerGas":"0x1","to":"0x851356ae760d987e095750cceb3bc6014560891c","value":"0xde0b6b3a7640000","accessList":[],"input":"0x4223d5510000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650","r":"0x104f1818770a9c9ec793bbe5ca32a8baa1bcf7be2f24076383708dfde8f28748","s":"0x7b8f6075df2967c73d8ebe99c46800e4373bc6fab281f109283d4f62b78d1a3e","yParity":"0x0","v":"0x0","hash":"0x0e184154ccf84eebbf7e669899520643ffe81c577e73e87630532484869b7e37"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd86e5ef52e4886e70fa67640996cb42222e820d51672faacd7f0481826ded844","transactionsRoot":"0xacc68def3d9e61ce6b3d0269243e298b5ed840384efe67618164100af64f189c","receiptsRoot":"0x7682b2b964582de9cef13aa65d025b86fdf8df5a7d01c86e88eb53d8103c05f2","logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000","difficulty":"0x0","number":"0x13","gasLimit":"0x1c9c380","gasUsed":"0x1ba06","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x72f5847","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x16","gas":"0x2628b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","r":"0x5e8286b9de9adbfb089cd99a2220229393e1e7d2650fbca67481e361f0873603","s":"0x478e2acc6420a5a8fdd508a4e3254942769194c5df2201e45456890bb7aa50fd","yParity":"0x1","v":"0x1","hash":"0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68b89566","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0510d0890d18539d33f28fc9d338c95b0fdf42c6d71733fee837b25c714418fc","transactionsRoot":"0xda32dd4f2a67c950235982c9dc99650577fd650e5a88d87fc21a865bfdeccda3","receiptsRoot":"0x2fa2efc1cd5d57b505c544a356f63089306cf0752b8d1a6e642cdc6dab9e85f7","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x183eac51","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x8","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x5ffa8667f85c28bc1f36ef1179b97a60ecfc98f1dabe3801419d470132cdafaf","s":"0x60e45209c4f5e81198a887a292ceddce57b7902b5617bbc8bdb712692e15242c","yParity":"0x1","v":"0x1","hash":"0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x00ff573085e925848f661f83d8f0487f2bf6dc5056ec3df9ae5d889383d1a5d9","transactionsRoot":"0x0a66023981b2bb760e188a49e893bd30541e5ccd332db35e5e19455b31e67d96","receiptsRoot":"0x3f2e168fb3528ba1f6f3ca73cb54735d6d9d339db4b54ba18ccf2e101940baff","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000","difficulty":"0x0","number":"0x11","gasLimit":"0x1c9c380","gasUsed":"0x1ca99","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x95d9880","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x14","gas":"0x29eb2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x3e9ca8eab1c79d16d09d4842f4b3c4cdb557034b3c9466e0e2e9808a44a88b9b","s":"0x4dd644048d69092834e7ef13d50a15243f8793d2013ccf45f057792c855dc505","yParity":"0x1","v":"0x1","hash":"0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68238dc4","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x74bcf43188c9c49ba0becb4f814f338621345ace0813e66b5f581e9753c1e347","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x2838a2816782cc6c650a3f37198e425bf1733e783ca56c1a21ef235f497be7ea","transactionsRoot":"0x9b785738b06fb80e04d81732146bd22e610b05eb9722c81f2ab8186a837cbd4d","receiptsRoot":"0x66912d35df500d542902d5f0ad6eb1b1c0d96910c46b4bd2803a78b8e6222a8d","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1e","gasLimit":"0x1c9c380","gasUsed":"0x12ff64","timestamp":"0x68b895de","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x29970b5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3b","gas":"0x18b268","maxFeePerGas":"0x5f035a3","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a080604052346100da57306080525f549060ff8260081c16610088575060ff8082161061004e575b60405161151290816100df823960805181818161093f01528181610a640152610d8f0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","r":"0x962d0ab68b331159eb370f1e51ffbd93c0759f047d4a39422777a0812807f1d3","s":"0x7e35b0a12140e801ed7a43dd549f0c100f7f97db6e83b94b0e417f28e60ba08b","yParity":"0x1","v":"0x1","hash":"0xf04e7416e9cae4211819c83dd98e98390e03b88cf5c28e5bbdaaaf2de6742e1b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x61f96951e009c3faca9e22e668c334f96cf8613f2b96823c4fcefc338c12cef7","transactionsRoot":"0x03d80393ecceed2a0703081585e6bb1140c62d91dacbac962118a9617213b4de","receiptsRoot":"0x37d1079b247362deefb299371a192c8e1e832cf149b0a85714b45eaa1d4e8d69","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x17","gasLimit":"0x1c9c380","gasUsed":"0xac0b6","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x44777b3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1b","gas":"0xdfa86","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000","r":"0xe7ef9e36a49166ecac6f5f20e2aa0ce5d98b16dddcd804c7061202968b356a2","s":"0x44448a124bbb0c10d2cd959bd2fa37b277cb2aa090f77a9c1b3c3c63b6d65ea2","yParity":"0x0","v":"0x0","hash":"0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x7874f4a939d9c557f447f6dbae2eeb126466118c85334de819c1e99e54f4422a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5068850e93df3483edd34c07d9cff66027bceba7b3ad7e23d8308f88dc79424b","transactionsRoot":"0x41f35302ef5cf5b6c498c1a81ed10c4d70d5604f52df85ee70a0950fab24e380","receiptsRoot":"0x78b8188d2d51db91c774a3ad0c4af02f42f8cccdcf23ac9382e09e36c9be5caf","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x6890a","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x87ef3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","r":"0xad141f355928da088aeb1c1cd80e579eae7f6e761fd49ba5c913837260e10eaf","s":"0x4d96223d3fe36cea3dfea510c0c4ec09d78112b90b7d04af7f9387f7a6a1aa47","yParity":"0x0","v":"0x0","hash":"0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xfc772625e4110b1ff8723b0e7f137319d52ba96dbad0903e970d17a4ba297f40","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x3fe126955a37f5ba645ae2a83d028bc67c4863ea5d947776a7a4a36ad4fe6093","transactionsRoot":"0x129e9cab702a49fb2445e41a9c6c55e7a661562d3ed4a269606b50d997e82088","receiptsRoot":"0x9f749bd3240d4d283383d345258c1a8fc69e909a2aeb438e043f474fe5289973","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x111e31","timestamp":"0x68b88db5","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x345dbf08","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gas":"0x1908f4","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x000000000000000000000000000000000000000000000000000000000000000960808060405234601557611345908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","r":"0x1789084f940487114454c31433f97fdc60ee1e1082d945730ccc29e146dd8ae5","s":"0x984eaaf01e45e5d5b4ac4421ef9445955eece3a4a8746b4485510b529be205f","yParity":"0x0","v":"0x0","hash":"0x279f5cc917c7ca651cb7f411dd683d643b2be343a2a005c359048c35b60cf156"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x31bc1819fa24e471c3b4238d13124e03aa0512e947c413da856b85839b7096ca","transactionsRoot":"0x81002360790b630320c7b5882f64fbef65f764107c3608acac461eb8ced201ad","receiptsRoot":"0xed4257cf3242f330e62e6e07ed62f793c3817312e970b82edba27d01cf0f853e","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x283b84b9","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xd1f94bf3ed74bb11a4a36509d9dda373c1e12363a4dcfe24af54aa03511f1c7a","s":"0x27b9ee82d0d5a4302f3965c8a347494c4d9a501500e78bd809b0952bd212ae94","yParity":"0x0","v":"0x0","hash":"0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x9ad3c840de0cae5443b4c919119304daf1b437dad97229036380fe7b4cf8c518","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb994d7b7787804b8e9cad71f80fddce637e1f6c4687b155c110bbd6f3f66816d","transactionsRoot":"0x2db6c5bb6a4b64e4c6f7ec1ef43c04bd408fbbb7c2c72fe6053d9687f4848841","receiptsRoot":"0x10ddd3e58254dc8a58732537b8b2f335dc5816788012bb8128b3edd09fb78eea","logsBloom":"0x00002000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000080000000000000000000000000000000000000000000000800000000000002000000000000000000000000000000000000000000000000000000000000000000000000800000000000000100000000000100000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000080000000000000000000000000000000020000000000000","difficulty":"0x0","number":"0xb","gasLimit":"0x1c9c380","gasUsed":"0xfea3a","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1b4669d3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x26","gas":"0xa583f","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x42455a7211710adbb7b2dc7793ebe969b5782b2eb684e169b3ef5f11747d186c","s":"0xd14d6d949840d2dcf94d52b2403f7e69dc8841237ed91b983d5033429557d92","yParity":"0x0","v":"0x0","hash":"0x67c5a4d58ac9b8c03a5fd886f179b788131d89caf6f614aba65f66a8970bb89c"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x27","gas":"0xa583f","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x1e32c7661d8bbd8d77abc39e1d81e6e0652a1ffcd91fd8e90cafa512bd94f8b7","s":"0x7b0bbfec89707f7785d9900cd615d34c550762bed3a9f85f76b22c896125dc14","yParity":"0x0","v":"0x0","hash":"0x0ac294643ab8c52a2c1c6afc36ad26f25bfcb53ce0ba4b905a242e29ecef07bf"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd11edc81769df477541ba906c5be356b0e310e552d66d51ce5f711eadd1b87f9","transactionsRoot":"0x98ae4d0bb6c4baabf6d297530263ce1584a3a8137a459fe6a49443ce1149e8a2","receiptsRoot":"0x4223463caba1338f68d89dd5e9c61433b6e988c5c886294562d1f93362c77fa0","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x19","gasLimit":"0x1c9c380","gasUsed":"0x64c0","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x35214a0","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1e","gas":"0x8b29","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xba35e620fb2e67e4840da54c31385b537bf8cb9aa6ecc8e7e94fad20038204f9","s":"0x176cfd5f089d20eee7efa6909688cad1c012489090f6a4e51c71c10cc7d97469","yParity":"0x1","v":"0x1","hash":"0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0de8add2e06caf903ca6d46dcc01bafa1ad2a2a8d6d718bfd7bda1dd8c591848","transactionsRoot":"0x8bbd69ec40af286b18efcf97864ef61f69618c86bd9a30b5bd766809c14cd40f","receiptsRoot":"0x4abc27cd20735837c724eb015763f975c3b88e5d13444fdaa9c1a314a70e2c21","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1b8e2cc6","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x7","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xbc5b5c680e5693f7e12233b87e6dd4eff0c6481bd1c347f7d1d5aa5a47e897a7","s":"0x5cfe125033c53249d57901cf63173faab03c2326222dc0161311826b6a35abab","yParity":"0x1","v":"0x1","hash":"0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd1f37ba75ceac5487bd4f035b197f3a11ee309a8c280355b8182f576367152a3","transactionsRoot":"0xbc9be4f5bb5891d1117862fd392dd96b13886fda1804a15cad36d3582d14fdb4","receiptsRoot":"0x79ba9af9e95fe0e30a5ea15632b9e2ec0ee4c8ea1828c7733c617de4539a0750","logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x15","gasLimit":"0x1c9c380","gasUsed":"0x16c6b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x5836638","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x18","gas":"0x214f5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x7645dba25806897f2124f5a883c1bfee4a3522656527c4e04d0543a372813936","s":"0x624a605a813c2b1e89b0292812f73badc67b3f5a64139b8adade61c4a671e514","yParity":"0x1","v":"0x1","hash":"0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcc660d7020a09eee6f153229b728fa56ed083a7166917ff8d87e156acf1f5992","transactionsRoot":"0x87c3f680f05a19792ad28721b0facf62d90a7cf1ffce3d428edc69dee31a9c4a","receiptsRoot":"0x0237366e69bc915931d322ff3a745a35a614ce6220da7c2ef11f9cee6922e50e","logsBloom":"0x00000000001000000000000000000000400000000000000200000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000002000000000000000000000008400000000000000000000000000000000000000000020000000000000000000040000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000","difficulty":"0x0","number":"0x16","gasLimit":"0x1c9c380","gasUsed":"0x149917","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x4d41257","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x19","gas":"0xdf2c","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","r":"0xf409be770fe739b8a2ee8a623ae6bb352923fce56864df9273eedf0bd3991ab6","s":"0x59faad57fbbb66fd1d5bf7a0b084e2f8d065d974fe92e2d88e4d7b248a2bf73d","yParity":"0x0","v":"0x0","hash":"0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1a","gas":"0x1a00a3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x5813b7e66820fb564867f92bd70a203e3c6e80ad44872f6bc5fbb862a5a5bdbb","s":"0x67a92aaaa11bda7ab36fb0c0af49f71681fe1954a73a8a9b94e6c23db8767748","yParity":"0x1","v":"0x1","hash":"0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x20311dd5af038637ed3fa85a4d62c9b4c1285ce8a0299ebcb7c0ceda0b7794fb","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x8ef3ca20a5c1ad966578ac51a71fbf34913b34d0e4df45c61b83af145019c0a2","transactionsRoot":"0xa1836a989efd3c6741bfe23213445b1622307f60a40e17abc849a4c820a687fb","receiptsRoot":"0x81d63756b1796e15b5382c6a2c2ab1ed2eaa959143cea7ddac7e33c6a0b36028","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x131d3","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x20","gas":"0x18d92","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608080604052346013576073908160188239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c63c2985578146023575f80fd5b346039575f366003190112603957805f60209252f35b5f80fdfea264697066735822122013c5f1468a1f1f0157f23ba5e12ee6155a4a92bac6399a4b6487606dad4ea56864736f6c634300081b0033","r":"0x4ec9a22c2e9e9d843502e286bb466b7864ac074161a29b9eee71293d1385c03f","s":"0x63c9f88e76f7a75005b5f4da6e5842012f2ec35cb69862406ffb041dacadfb81","yParity":"0x0","v":"0x0","hash":"0x2370eac32065c85773ae4f391544e8aa2a9d653beca7ab86fc2a412d19ed94ad"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x6ecf46a2ae2943565cd6996c1a1d099beb79a7d98c94079a0132d935dcf8c0ed","transactionsRoot":"0x4340b45735d08f706166d4e3abff3a620f0848110ecde7c73b43cbd0b93a35c6","receiptsRoot":"0xf864c8d5281f6ff30ad43286be885f326150528aab26746ec850a58cb5c9d58a","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xe","gasLimit":"0x1c9c380","gasUsed":"0x3de98b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xcb3f9a3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x10","gas":"0x507c67","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x5136a6a740bf17e6223d184d4efdde1204c1fb54056bd41dfb1fff746da3cb10","s":"0x3c6cd137e61015e8cefa66acf793bb3923e1e47e9a3fee9d67a3ab0cb90cd695","yParity":"0x0","v":"0x0","hash":"0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xd2b08057be2a669276f7c3467a6935a00d143fabaa0b9098f9f450cad4bcaf9f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x196bb4a3ca45572f8d131f2290d738c404004073743ea332e0da302f9500a122","transactionsRoot":"0xc3c9b68dbdb786a509a46f955c184b0b90959a2d0494ccfdcecd4aebdc944afd","receiptsRoot":"0xda51da32ce5fd416d707eab61633d138ebfb092152ab252e940fde3f91b02c34","logsBloom":"0x00000000000000040000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000004001000000000000000","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0x45f71","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2dd92683","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x22","gas":"0x5af46","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234610242576105ba803803806100198161025a565b9283398101906040818303126102425780516001600160401b0381116102425781019180601f84011215610242578251926001600160401b038411610246578360051b9060208061006b81850161025a565b80978152019282010192831161024257602001905b82821061022a57846100946020860161027f565b905f5b815181101561016257600581901b8201602001516001600160a01b0316908115610107577f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b91526040836001945f525f602052815f208560ff198254161790558151908152846020820152a101610097565b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b6001600160a01b03831680156101cd57600154604080516001600160a01b0383168152602081018490527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e88929190a16001600160a01b0319161760015560405161032690816102948239f35b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b602080916102378461027f565b815201910190610080565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b0381118382101761024657604052565b51906001600160a01b03821682036102425756fe6080806040526004361015610012575f80fd5b5f3560e01c90816346fbf68e14610243575080638568520614610153578063ce548428146100745763eab66d7a14610048575f80fd5b34610070575f366003190112610070576001546040516001600160a01b039091168152602090f35b5f80fd5b346100705760203660031901126100705761008d61027b565b6001546001600160a01b038116916100a6338414610291565b6001600160a01b03169182156100f65760407f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892918151908152846020820152a16001600160a01b03191617600155005b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b346100705760403660031901126100705761016c61027b565b602435908115158092036100705761018f60018060a01b03600154163314610291565b6001600160a01b03169081156101e857816040917f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152935f525f602052825f2060ff1981541660ff831617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b34610070576020366003190112610070576020906001600160a01b0361026761027b565b165f525f825260ff60405f20541615158152f35b600435906001600160a01b038216820361007057565b1561029857565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fdfea2646970667358221220e71c0c74ddb607e4c85c23ba6d84d6508e60f3e2f8ae33144c449252ab1a1e7364736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x7303382ec381d5238749444530d291c963efec0b47e50723dcd448d94cbb06d3","s":"0x4cba2b30b67a96501be767c63ca34c5998ef95d19e91ab2c17c5ee42b676f7d6","yParity":"0x0","v":"0x0","hash":"0x13bd8d3fa7d4753b978e9cf9272e503132fabbd2d00b4dba99f9781c8ecd2c0d"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x845b711ebbe290e1e3d9b14551ca6e40f934f8bdffaf6c1124d3b607f02b028b","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5fba54ca9098feac2b0beb1fb5070940a216cae9d5a960787a9ae9ab85ba5b6d","transactionsRoot":"0xa9e6ed5dfd7a7ca3e00170ffabf694210667faab25f68792f171809352d45a7e","receiptsRoot":"0x67085674a27eba7a2ee54841cea0437075c610732f989a50550942f4e43edc23","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000080000000000000400000000000000000000000000000000400000000000000010000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x20","gasLimit":"0x1c9c380","gasUsed":"0x12ff64","timestamp":"0x68b895df","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x204fe8e","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3d","gas":"0x18b268","maxFeePerGas":"0x49a5425","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a080604052346100da57306080525f549060ff8260081c16610088575060ff8082161061004e575b60405161151290816100df823960805181818161093f01528181610a640152610d8f0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","r":"0xe177ea6e8f56715fa9f26eebd629c1dc0ecd843996f7dceb19b537dd8c5478b3","s":"0x28aef48763209ce60303e8e798e68ccd477c6fb0ce19f528e4584bd37d43f45a","yParity":"0x1","v":"0x1","hash":"0xe2631ed8b7933a4e865262fa52a191f46f89878e9dc6524e8a25d0a9803de929"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x75eaafcccda554d6e0abe6376b9960f05afce865813054a56009bdc25cafc45f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x877a9f8368d50ff0ec4e837a787c2bc2b29d60a281b827ccfad55ccb17ea5a3b","transactionsRoot":"0x61d25782442b463cb04a75f4c6b966d9a8d9d90724e2102ece34313dbd7141e4","receiptsRoot":"0x339aff4412bb3322fc30509acca51dd92d61bbcdc0010b427ec51ecaf9ee521f","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x18","gasLimit":"0x1c9c380","gasUsed":"0x140222","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x59d598f","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x35","gas":"0x1a02c5","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608080604052346015576116b9908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806331b36bd914610ce35780633563b0d114610c4a5780634d2b57fe14610b0c5780634f739f741461046d5780635c155662146102b25763cefdc1d41461005b575f80fd5b346102ae5760603660031901126102ae57610074610e37565b60243590610080610f02565b916040926100d78451926100948685610e7c565b60018452601f198601366020860137806100ad85611084565b5285516361c8a12f60e11b81526001600160a01b0386169490925f91849182918760048401611663565b0381875afa9182156102a45763ffffffff6100fe6020946064935f91610282575b50611084565b511691875195869384926304ec635160e01b8452600484015263ffffffff8716602484015260448301525afa918215610278575f92610247575b506001600160c01b038216915f83805b61020e575061ffff169261015b84610ee7565b9361016887519586610e7c565b808552610177601f1991610ee7565b013660208601375f925f5b8551851080610203575b156101da576001811b84166001600160c01b03166101b3575b6101ae90611655565b610182565b9360016101ae9160ff60f81b8760f81b165f1a6101d0828a6110f4565b53019490506101a5565b87836101ff6101ea858a8c611105565b83519384938452806020850152830190610f15565b0390f35b50610100811061018c565b5f1981018181116102335761ffff9116911661ffff8114610233576001019080610148565b634e487b7160e01b5f52601160045260245ffd5b61026a91925060203d602011610271575b6102628183610e7c565b81019061162a565b905f610138565b503d610258565b84513d5f823e3d90fd5b61029e91503d805f833e6102968183610e7c565b810190611579565b5f6100f8565b86513d5f823e3d90fd5b5f80fd5b346102ae5760603660031901126102ae576102cb610e37565b6024356001600160401b0381116102ae576102ea903690600401610fbc565b6102f2610f02565b6040516361c8a12f60e11b815290926001600160a01b03165f828061031b868860048401611663565b0381845afa918215610402575f92610451575b5082519361035461033e86610e9d565b9561034c6040519788610e7c565b808752610e9d565b602086019490601f19013686375f5b815181101561040d5761037681836110a5565b519060208463ffffffff61038a848a6110a5565b516040516304ec635160e01b8152600481019690965263ffffffff92831660248701521616604484015282606481885afa8015610402576001925f916103e4575b50828060c01b03166103dd828a6110a5565b5201610363565b6103fc915060203d8111610271576102628183610e7c565b896103cb565b6040513d5f823e3d90fd5b8587604051918291602083019060208452518091526040830191905f5b818110610438575050500390f35b825184528594506020938401939092019160010161042a565b6104669192503d805f833e6102968183610e7c565b908461032e565b346102ae5760803660031901126102ae57610486610e37565b60243563ffffffff8116908181036102ae57604435926001600160401b0384116102ae57366023850112156102ae578360040135936001600160401b0385116102ae57602481019060248636920101116102ae57606435926001600160401b0384116102ae57366023850112156102ae578360040135956001600160401b0387116102ae5760248501938760051b9560248736920101116102ae57610529611534565b50604051636830483560e01b81526001600160a01b03919091169390602081600481885afa908115610402575f91610aed575b50610565611534565b604080516361c8a12f60e11b8152600481018b90526024810191909152604481018b905290976001600160fb1b038b116102ae5781606481835f948c848401378101030181895afa908115610402575f91610ad3575b50875260018060a01b031691604051986340e03a8160e11b8a528860048b0152604060248b01525f8a806105f36044820186886115fa565b0381875afa998a15610402575f9a610ab7575b5060408801998a5261061782610e9d565b966106256040519889610e7c565b828852610641601f1961063785610e9d565b0160208a016110d8565b606089019788525f5b60ff81168481101561092e575f6106778261066487611052565b8d519061067183836110a5565b526110a5565b505f84868e5b8d8d8386106106fa5750505050505061069581611052565b905f5b8c8282106106ca5760ff959492506106b8939150519061067183836110a5565b501660ff81146102335760010161064a565b9063ffffffff6106e7826106e188600196516110a5565b516110a5565b51166106f382866110a5565b5201610698565b63ffffffff61071b87610713816020986107559a61161a565b3595516110a5565b516040516304ec635160e01b8152600481019590955263ffffffff9283166024860152161660448301529092839190829081906064820190565b03915afa908115610402575f91610910575b506001600160c01b0316801561087f5760018091610786868b8d611649565b3560f81c1c161461079d575b60010184868e61067d565b908960206107ac84898961161a565b356107b8868b8d611649565b60405163dd9846b960e01b815260048101929092523560f81c602482015263ffffffff929092166044830152816064818d5afa908115610402578d85915f93610829575b509163ffffffff610818856106e16001979561082197516110a5565b91169052611655565b919050610792565b925050506020813d8211610877575b8161084560209383610e7c565b810103126102ae57818d63ffffffff6108186001956106e18961086a61082198611568565b97509550509550506107fc565b3d9150610838565b60405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a490fd5b610928915060203d8111610271576102628183610e7c565b5f610767565b5089898c8e8760048a60208f60405193848092632efa2ca360e11b82525afa908115610402575f93610987938593610a86575b506040519687948593849363354952a360e21b85526040600486015260448501916115fa565b602483019190915203916001600160a01b03165afa91821561040257610a05926109f2915f91610a6c575b5090859493929160206109df970190815260405196879660208852516080602089015260a0880190611019565b9051868203601f19016040880152611019565b9051848203601f19016060860152611019565b905190601f19838203016080840152815180825260208201916020808360051b8301019401925f915b838310610a3b5786860387f35b919395509193602080610a5a600193601f198682030187528951611019565b97019301930190928695949293610a2e565b610a8091503d805f833e6102968183610e7c565b866109b2565b610aa991935060203d602011610ab0575b610aa18183610e7c565b8101906110b9565b9189610961565b503d610a97565b610acc919a503d805f833e6102968183610e7c565b988a610606565b610ae791503d805f833e6102968183610e7c565b8a6105bb565b610b06915060203d602011610ab057610aa18183610e7c565b8961055c565b346102ae5760403660031901126102ae57610b25610e37565b6024356001600160401b0381116102ae57610b44903690600401610fbc565b8051610b68610b5282610e9d565b91610b606040519384610e7c565b808352610e9d565b602082019290601f19013684376001600160a01b03909316925f5b8151811015610bfd57610b9681836110a5565b519060405191630a5aec1960e21b83526004830152602082602481895afa8015610402576001925f91610bdf575b50610bcf82866110a5565b90838060a01b0316905201610b83565b610bf7915060203d8111610ab057610aa18183610e7c565b87610bc4565b8383604051918291602083019060208452518091526040830191905f5b818110610c28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610c1a565b346102ae5760603660031901126102ae57610c63610e37565b6024356001600160401b0381116102ae57366023820112156102ae57806004013591610c8e83610ee7565b610c9b6040519182610e7c565b83815236602485850101116102ae575f6020856101ff966024610ccf97018386013783010152610cc9610f02565b91611105565b604051918291602083526020830190610f15565b346102ae5760403660031901126102ae57610cfc610e37565b602435906001600160401b0382116102ae57366023830112156102ae578160040135610d2781610e9d565b92610d356040519485610e7c565b8184526024602085019260051b820101903682116102ae57602401915b818310610e17578385610d658151611052565b6001600160a01b03909216915f5b8251811015610e01576001600160a01b03610d8e82856110a5565b516040516309aa152760e11b81529116600482015290602082602481885afa8015610402575f90610dcf575b60019250610dc882856110a5565b5201610d73565b506020823d8211610df9575b81610de860209383610e7c565b810103126102ae5760019151610dba565b3d9150610ddb565b604051602080825281906101ff90820185610eb4565b82356001600160a01b03811681036102ae57815260209283019201610d52565b600435906001600160a01b03821682036102ae57565b606081019081106001600160401b03821117610e6857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117610e6857604052565b6001600160401b038111610e685760051b60200190565b90602080835192838152019201905f5b818110610ed15750505090565b8251845260209384019390920191600101610ec4565b6001600160401b038111610e6857601f01601f191660200190565b6044359063ffffffff821682036102ae57565b9080602083519182815201916020808360051b8301019401925f915b838310610f4057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b808210610f805750505060208060019297019301930191939290610f31565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610f61565b9080601f830112156102ae578135610fd381610e9d565b92610fe16040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106110095750505090565b8135815260209182019101610ffc565b90602080835192838152019201905f5b8181106110365750505090565b825163ffffffff16845260209384019390920191600101611029565b9061105c82610e9d565b6110696040519182610e7c565b828152809261107a601f1991610e9d565b0190602036910137565b8051156110915760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156110915760209160051b010190565b908160209103126102ae57516001600160a01b03811681036102ae5790565b5f5b8281106110e657505050565b6060828201526020016110da565b908151811015611091570160200190565b604051636830483560e01b81526001600160a01b0390911692909190602083600481875afa928315610402575f93611513575b50604051634f4c91e160e11b815292602084600481885afa938415610402575f946114ce575b5060206004949560405195868092632efa2ca360e11b82525afa938415610402575f946114ad575b50919493908551926111c161119a85610e9d565b946111a86040519687610e7c565b8086526111b7601f1991610e9d565b01602086016110d8565b5f965b80518810156114a3576111d788826110f4565b51604051638902624560e01b815260f89190911c6004820181905263ffffffff851660248301529790945f866044816001600160a01b0385165afa958615610402575f96611411575b50855161122c81610e9d565b9061123a6040519283610e7c565b808252611249601f1991610e9d565b015f5b8181106113e857505061125f8b896110a5565b5261126a8a886110a5565b505f5b86518110156113d75761128081886110a5565b516040516308f6629d60e31b81526004810191909152906020826024816001600160a01b038e165afa918215610402575f926113b7575b50866112c3828a6110a5565b5160208d6112d1858d6110a5565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff939093166044840152826064816001600160a01b038c165afa908115610402578e925f92611370575b509361135d611369936001600160601b0386946001986040519561134387610e4d565b8a8060a01b0316865260208601521660408401528d6110a5565b519061067183836110a5565b500161126d565b915091506020813d82116113af575b8161138c60209383610e7c565b810103126102ae57516001600160601b03811681036102ae578d9161135d611320565b3d915061137f565b6113d091925060203d8111610ab057610aa18183610e7c565b905f6112b7565b5060019099019890975093506111c4565b6020906040516113f781610e4d565b5f81525f838201525f60408201528282860101520161124c565b9095503d805f833e6114238183610e7c565b8101906020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae57815161145981610e9d565b926114676040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b82821061149357505050945f611220565b8151815260209182019101611482565b5092955050505050565b6114c791945060203d602011610ab057610aa18183610e7c565b925f611186565b9093506020813d60201161150b575b816114ea60209383610e7c565b810103126102ae5751926001600160a01b03841684036102ae57602061115e565b3d91506114dd565b61152d91935060203d602011610ab057610aa18183610e7c565b915f611138565b60405190608082018281106001600160401b03821117610e6857604052606080838181528160208201528160408201520152565b519063ffffffff821682036102ae57565b6020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae5781516115ac81610e9d565b926115ba6040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106115e25750505090565b602080916115ef84611568565b8152019101906115d5565b908060209392818452848401375f828201840152601f01601f1916010190565b91908110156110915760051b0190565b908160209103126102ae57516001600160c01b03811681036102ae5790565b90821015611091570190565b5f1981146102335760010190565b60409063ffffffff61168094931681528160208201520190610eb4565b9056fea26469706673582212205aa9d189ad095bab98556b37227470a01b266e1c907e6602c3b98b12740b02f464736f6c634300081b0033","r":"0x192ef5961caebcede037e59dd4616fed8f4dfd1701b5bcc23b77bac35226fe34","s":"0x5d6674d9ed83e7b04ef72e61c9bf70c1616a156bbdddd9ba3f6fb7906d0c2b25","yParity":"0x1","v":"0x1","hash":"0x0e0e9d804b70d2a5df7d24391d340283584e30f46ad4f375ed9f4a1eb08f5a51"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x097246291c63ec89ac732b0971312abb9c0d43047ed0665d0e84180716be15dc","transactionsRoot":"0x232ce2d80081c4dec373c3dc73802eb87f76b68ab38ec539c97ecab12802387c","receiptsRoot":"0x664d1e5c403fe20ed39b792a4ffb6fa283d9c9c7aa04034e1265adb4f5bdffbb","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x12","gasLimit":"0x1c9c380","gasUsed":"0x16c80","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x8343dee","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x15","gas":"0x1f777","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0xcfa3a86407e9b125377e96787848e6fa8ad51ec3c673926c82b462f642722d35","s":"0xa066c8b4d2d4a383eadf8e54015dfcb5451a73ae51b6536f1acc45f2d79c4e7","yParity":"0x1","v":"0x1","hash":"0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x871cd84b9f3adeb3118d803edf9c7c4fb93753fafd3530f415646f483a8b8ef3","transactionsRoot":"0x7b5b5d2531601e38f873cd01be4be50d816c1d079ec5e655c7de3457c19b8125","receiptsRoot":"0x21c202c2917df5a790b4d6f4e42512bafe97690fd8da372d666323274f621126","logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000","difficulty":"0x0","number":"0xf","gasLimit":"0x1c9c380","gasUsed":"0x5df480","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xb8b6f6a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x11","gas":"0x669a30","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xa97a844bd6ac6c5311043b1f79367e1dc25361f3f1abfc48f15ec01094f2ac63","s":"0x1d2277b51fd73467f590340670ea88003725999e4b3facab067c91f2cd8ed0f6","yParity":"0x1","v":"0x1","hash":"0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x12","gas":"0x138a0f","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x7b0b83bf55096027709e3feffbaa64c64a17e671438bbac0ee5ff0903526821b","s":"0x1f4f768a1acf122cd43721f9264e00bcd59b75f3646804355771a16093d5e3fb","yParity":"0x0","v":"0x0","hash":"0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x90b9606a944251847a71cb743bc77eff59af777f4257795b090a2b43b0c48eb6","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb33ef6519ce19a35f1f1ea2b9929a5fddb5840c463b01f4eec44a5d802ac1643","transactionsRoot":"0x97c71ea5bb86b243f55b737816f905841c72d80473756573cfd72019c1c9122b","receiptsRoot":"0x78d91080867d95450b1d7442488ccefe212cc3e3b60b4c0c39710fddf65d49cb","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000800000000000002200000000000000000000000000000000000000000000000000040004000000000000000800000000000000000000000000000000000000000000000000000000000000001000080000000000000800080000000000000000000000000000400000000000000000000000000000000000000000020000000000000000000040000000000000400000000000000000000000000000000000080000000000000000000000000000000000020000000000000","difficulty":"0x0","number":"0xc","gasLimit":"0x1c9c380","gasUsed":"0x15f4aa","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x181a4cf7","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x28","gas":"0xa583f","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xafb029b7a4376f79872b5865e80353082b1be51c6bf33418154415e9550b5c13","s":"0x2222ec13e6c478c9f67ecf0ee70a37900457ec03872071d2d3f381df1abd500a","yParity":"0x0","v":"0x0","hash":"0x20579ba0259a920869a9204a26460300049758433e1a7aae70c8b7b68280e20f"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x29","gas":"0x12329d","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a03461012857601f61106238819003918201601f19168301916001600160401b0383118484101761012c5780849260209460405283398101031261012857516001600160a01b03811690819003610128576080525f5460ff8160081c166100d35760ff80821610610099575b604051610f2190816101418239608051818181610148015281816104b6015281816105a001526106c60152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f61006c565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062bff04d146106b157806312d1d74d1461066c57806326d941f21461057f5780632ed583e5146104e55780636d14a987146104a15780638121906f1461046557806389026245146102f6578063a48bb0ac14610279578063bd29b8cd14610132578063caa3cd7614610118578063e2e68580146100d45763f34109221461009c575f80fd5b346100d05760203660031901126100d057602063ffffffff6100c46100bf6108cd565b610cb2565b54821c16604051908152f35b5f80fd5b346100d05760403660031901126100d05760ff6100ef6108cd565b165f52600160205260405f206024355f52602052602063ffffffff60405f205416604051908152f35b346100d0575f3660031901126100d05760206040515f8152f35b346100d05761014036610879565b9190610176337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146108f0565b4363ffffffff16915f5b84811061018957005b8061019760019287866109ea565b3560f81c805f5260036020526101b260405f20541515610a0a565b805f528260205260405f20845f5260205263ffffffff60405f2054166101d782610cb2565b916101f66101ee63ffffffff855460201c16610a74565b809483610e78565b6102008382610c76565b928584018963ffffffff8254965416145f1461023d575f9150555b82860361022c575b50505001610180565b61023592610bc1565b868080610223565b50815f52600260205263ffffffff60405f2091165f5260205261027460405f20610265610978565b908a82525f6020830152610b7b565b61021b565b346100d05760403660031901126100d0576102f26102cd6102c761029b6108cd565b60ff6102a56108dd565b915f60206102b1610978565b8281520152165f52600360205260405f20610abf565b50610b5b565b60405191829182919091602063ffffffff816040840195828151168552015116910152565b0390f35b346100d05760403660031901126100d05761030f6108cd565b6103176108dd565b9063ffffffff6103278383610ce4565b16610339610334826109d2565b6109ac565b92818452610346826109d2565b602085019390601f19013685375f5b8381106103a0578486604051918291602083019060208452518091526040830191905f5b818110610387575050500390f35b8251845285945060209384019390920191600101610379565b6103b18363ffffffff831684610ddf565b6103bb8288610a8c565b526103c68187610a8c565b51156103d457600101610355565b60405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a490fd5b346100d05760203660031901126100d0576102f26102cd61049c6104876108cd565b5f6020610492610978565b8281520152610cb2565b610b5b565b346100d0575f3660031901126100d0576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100d05760603660031901126100d0576104fe6108cd565b6105066108dd565b6044359163ffffffff831683036100d0576102f29261055c9260ff610556935f6020610530610978565b8281520152165f52600260205263ffffffff60405f2091165f5260205260405f20610b42565b50610aa0565b60405191829182919091602080604083019463ffffffff81511684520151910152565b346100d05760203660031901126100d05760ff61059a6108cd565b6105ce337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146108f0565b16805f52600360205260405f205461060d575f52600360205261060b60405f206105f6610978565b9063ffffffff431682525f6020830152610ad4565b005b60405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608490fd5b346100d05760403660031901126100d0576102f261055c6106ac61068e6108cd565b6106966108dd565b905f60206106a2610978565b8281520152610c76565b610aa0565b346100d0576106bf36610879565b906106f4337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146108f0565b610700610334836109d2565b9282845261070d836109d2565b602085019390601f19013685375f5b81811061076d578486604051918291602083019060208452518091526040830191905f5b81811061074e575050500390f35b825163ffffffff16845285945060209384019390920191600101610740565b6107788183866109ea565b3560f81c90815f52600360205261079460405f20541515610a0a565b61079d82610cb2565b600163ffffffff825460201c16019063ffffffff821161086557836107c88361080393600197610e78565b805f52600260205260405f2063ffffffff6107e285610a74565b165f5260205260405f20541561081c575b6107fc83610a74565b9087610bc1565b63ffffffff610812838a610a8c565b911690520161071c565b805f52600260205260405f2063ffffffff61083685610a74565b165f5260205261086060405f2061084b610978565b9063ffffffff431682525f6020830152610b7b565b6107f3565b634e487b7160e01b5f52601160045260245ffd5b60406003198201126100d0576004359160243567ffffffffffffffff81116100d057826023820112156100d05780600401359267ffffffffffffffff84116100d057602484830101116100d0576024019190565b6004359060ff821682036100d057565b6024359063ffffffff821682036100d057565b156108f757565b60405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a490fd5b604051906040820182811067ffffffffffffffff82111761099857604052565b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761099857604052565b67ffffffffffffffff81116109985760051b60200190565b908210156109f6570190565b634e487b7160e01b5f52603260045260245ffd5b15610a1157565b60405162461bcd60e51b815260206004820152603560248201527f496e64657852656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b63ffffffff5f199116019063ffffffff821161086557565b80518210156109f65760209160051b010190565b906001610aab610978565b9263ffffffff815416845201546020830152565b80548210156109f6575f5260205f2001905f90565b8054600160401b81101561099857610af191600182018155610abf565b610b2f578151815460209384015167ffffffffffffffff1990911663ffffffff9290921691909117921b67ffffffff0000000016919091179055565b565b634e487b7160e01b5f525f60045260245ffd5b80548210156109f6575f5260205f209060011b01905f90565b9063ffffffff610b69610978565b9254818116845260201c166020830152565b8054600160401b81101561099857610b9891600182018155610b42565b919091610b2f5760208163ffffffff8060019451161663ffffffff198554161784550151910155565b9160409063ffffffff60ff7f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f69486610bf98583610c76565b80544386169086168103610c3c5750600101555b1691825f526001602052835f20865f52602052835f2082821683198254161790558351928352166020820152a2565b9050610c7191508383165f526002602052865f208587165f52602052865f20610c63610978565b918252896020830152610b7b565b610c0d565b60ff165f90815260026020908152604080832063ffffffff9490941683529290522080545f19810190811161086557610cae91610b42565b5090565b60ff165f90815260036020526040902080545f19810190811161086557610cae91610abf565b8015610865575f190190565b60ff1690815f52600360205260405f2054805b610d845760405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a490fd5b825f52600360205260405f205f1982019082821161086557610da9916102c791610abf565b63ffffffff81511663ffffffff84161015610dce5750610dc890610cd8565b80610cf7565b6020015163ffffffff169392505050565b60ff909291921691825f52600260205260405f2063ffffffff82165f5260205260405f2054805b610e1257505050505f90565b835f52600260205260405f2063ffffffff83165f5260205260405f205f1982019082821161086557610e479161055691610b42565b63ffffffff81511663ffffffff85161015610e6c5750610e6690610cd8565b80610e06565b60200151949350505050565b919063ffffffff81541663ffffffff43168091145f14610eba5750610b2d92509067ffffffff0000000082549160201b169067ffffffff000000001916179055565b91905060ff610b2d93165f52600360205263ffffffff60405f2091610edd610978565b938452166020830152610ad456fea264697066735822122053d4af3d0c4f2686c612617d49f8b839866038606635662e26fbfc230a697ada64736f6c634300081b0033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","r":"0xe46ad215a456ee3e9073453e7fd9705ce4a32ad718597fd520bcc3f96d3e9c6d","s":"0x47f7cafe3c666fe7a6324e6401bcd9777fc88986e49356237a430e7fc235ae75","yParity":"0x1","v":"0x1","hash":"0x69fa40685941bacfc3c21a4a6fab84cbc803afb78fc84533237448cdb1ebcc3a"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x493be53d2715c9bc34e576275040d27307c3810ccfad004a26d86d2f966a1ef4","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x6fd123737e999c2360e70997d03c834f45b9c85dc32a5f75550252e681691592","transactionsRoot":"0xa55acff965bb006724bb6ae181e37ae046f2a004ac288058e0de5a8051edd287","receiptsRoot":"0x007415bc94f191acb99a1922b422163ecd2b706957fc30940ce28ef7941a20df","logsBloom":"0x00000000000000000000000040000000400400000000000000800000000000000000000800000000000000000000000000000100000000100000000000000000000000000000000000000400000002000001000000000018000000000000000000000000020000000000000100000820000000000000000000000000000000400000000100000000000000000000000000000000000080000000100000000000000000000000000000000000000400000004000000000000000000000000000000000020400000280000000000040000100000002000000000000000000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x15","gasLimit":"0x1c9c380","gasUsed":"0x289c8","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x85c90c8","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x32","gas":"0x38182","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000851356ae760d987e095750cceb3bc6014560891c0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0xf5061af1ec667e761541b5990582d413635f8c876fff5c25a8add9a43f0bf89","s":"0x3988483d916c306ca1cbc8a155ac94522bcf1c9b08ebe2043ea2ff20c74ecece","yParity":"0x1","v":"0x1","hash":"0x25c8229cefd05f308ba1b96ab6cd39c4c46c5dc5f1045e83ba42e8636c2b8ef8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8b415a6905a589597db534920d09e828710de4913b4b0faef77d180caa9df220","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd5918862138fe69185812aa1f12553494f36d6f42bc72b9c7be3dfce583821d0","transactionsRoot":"0x85ac13c7c033f96cd8f46b0db31e4a4904c85d348eba8ca8c3af62a5171a8e16","receiptsRoot":"0x198edb1709e1edeabd2c943bb298fe6b32f19f038e00ac08c4baea6094305376","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000080000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000","difficulty":"0x0","number":"0x10","gasLimit":"0x1c9c380","gasUsed":"0x190b0d","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xeadb719","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2d","gas":"0x208e5d","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a03461012f57601f611d7c38819003918201601f19168301916001600160401b038311848410176101335780849260209460405283398101031261012f57516001600160a01b0381169081900361012f576080525f5460ff8160081c166100da5760ff808216106100a0575b604051611c34908161014882396080518181816102180152818161048001528181610768015281816109140152610c400152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f61006c565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062a1f4cb1461012957806313542a4e146100e857806326d941f214610124578063377ed99d1461011f5780633fb279521461011a57806347b314e8146100e35780635f61a88414610115578063605747d51461011057806368bccaac1461010b5780636d14a987146101065780637916cea6146101015780637ff81a87146100fc578063a3db80e2146100f7578063bf79ce58146100f2578063d5254a8c146100ed578063de29fac0146100e8578063e8bb9ae6146100e35763f4e24fe5146100de575f80fd5b610c0a565b6104fd565b6101b1565b610b9d565b6108d6565b61088b565b61084a565b6107d7565b610753565b610618565b61058b565b610529565b61044a565b6102fc565b6101f9565b61015c565b600435906001600160a01b038216820361014457565b5f80fd5b35906001600160a01b038216820361014457565b34610144576020366003190112610144576001600160a01b0361017d61012e565b165f52600360205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b0390f35b34610144576020366003190112610144576001600160a01b036101d261012e565b165f526001602052602060405f2054604051908152f35b6004359060ff8216820361014457565b34610144576020366003190112610144576102126101e9565b610246337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b60ff81165f52600460205260405f2054610298576102726102969160ff165f52600460205260405f2090565b61027a6103a7565b5f81524363ffffffff166020820152905b5f6040830152610d12565b005b60405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608490fd5b346101445760203660031901126101445760ff6103176101e9565b165f526004602052602063ffffffff60405f205416604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761036457604052565b610334565b6060810190811067ffffffffffffffff82111761036457604052565b90601f8019910116810190811067ffffffffffffffff82111761036457604052565b604051906103b6606083610385565b565b906103b66040519283610385565b906040600319830112610144576103dd6004610148565b9160243567ffffffffffffffff811161014457816023820112156101445780600401359067ffffffffffffffff82116103645760405192610428601f8401601f191660200185610385565b8284526024838301011161014457815f92602460209301838601378301015290565b34610144577f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e610479366103c6565b906104ae337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b6104c16104ba82610eb4565b508361156f565b60018060a01b0381165f5260016020526104e660405f20549260405193849384610d87565b0390a1005b60209060031901126101445760043590565b346101445761050b366104eb565b5f526002602052602060018060a01b0360405f205416604051908152f35b346101445760203660031901126101445760ff6105446101e9565b61054c610dc7565b50165f5260056020526040805f20600182519161056883610348565b80548352015460208201526105898251809260208091805184520151910152565bf35b34610144576040366003190112610144576105e06105da6105aa6101e9565b60ff602435915f604080516105be81610369565b8281528260208201520152165f52600460205260405f206107c2565b50610dfd565b604051809163ffffffff6040606084019267ffffffffffffffff19815116855282602082015116602086015201511660408301520390f35b34610144576060366003190112610144576106316101e9565b6024359063ffffffff8216809203610144576105da6106679160ff61065560443590565b91165f52600460205260405f206107c2565b9063ffffffff60208301511681106106e857816106ad6106bc9261069560406101ad96015163ffffffff1690565b9063ffffffff8216159182156106d8575b5050610e36565b5167ffffffffffffffff191690565b60405167ffffffffffffffff1990911681529081906020820190565b63ffffffff161190505f806106a6565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608490fd5b34610144575f366003190112610144576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054156107bd575f5260205f20905f90565b610797565b80548210156107bd575f5260205f2001905f90565b34610144576040366003190112610144576107f06101e9565b60ff60243591165f52600460205260405f2090815481101561014457610815916107c2565b50546040805182821b67ffffffffffffffff1916815260c083901c63ffffffff16602082015260e09290921c90820152606090f35b3461014457602036600319011261014457606061086d61086861012e565b610eb4565b610884604051809360208091805184520151910152565b6040820152f35b346101445760203660031901126101445760ff6108a66101e9565b165f52600560205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b3461014457610160366003190112610144576108f061012e565b61010036602319011261014457604036610123190112610144576101ad90610942337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b61096061094e36610f6f565b80515f526020015160205260405f2090565b9061098d7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5831415610fea565b6001600160a01b0381165f9081526001602052604090206109af905415611048565b5f828152600260205260409020546109d0906001600160a01b0316156110b7565b604051610a9790610a9290610a3c906020810190610a1381610a0561014435610124356084356064356044356024358a611121565b03601f198101835282610385565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b610a60610a4836610f97565b610a5a83610a5536610f6f565b611737565b9061177d565b90610a82610a6c611805565b91610a5a610a7936610fbf565b91610a556118fc565b90610a8c366111a5565b926119e1565b6111de565b6001600160a01b0381165f908152600360205260409020610ac19060643581556001608435910155565b6001600160a01b0381165f908152600160205260409020829055610b1081610af1845f52600260205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03909116907fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba38280419080610b4b81611278565b0390a26040519081529081906020820190565b60206040818301928281528451809452019201905f5b818110610b815750505090565b825163ffffffff16845260209384019390920191600101610b74565b346101445760403660031901126101445760043567ffffffffffffffff8111610144573660238201121561014457806004013567ffffffffffffffff8111610144573660248284010111610144576101ad91610bfe91602480359201611339565b60405191829182610b5e565b34610144577ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e610c39366103c6565b90610c6e337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b6104c1610c83610c7d83610eb4565b50611b1e565b8361156f565b15610c9057565b60405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a490fd5b80546801000000000000000081101561036457610d34916001820181556107c2565b610d74578151602083015160409384015163ffffffff60c01b60c09290921b919091169190931c1760e09290921b6001600160e01b031916919091179055565b634e487b7160e01b5f525f60045260245ffd5b919260809360209260018060a01b0316845282840152606060408401528051918291826060860152018484015e5f828201840152601f01601f1916010190565b60405190610dd482610348565b5f6020838281520152565b90604051610dec81610348565b602060018294805484520154910152565b90604051610e0a81610369565b604081935467ffffffffffffffff1981831b16835263ffffffff8160c01c16602084015260e01c910152565b15610e3d57565b60405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a490fd5b610ebc610dc7565b5060018060a01b031690815f52600360205260405f2091600160405193610ee285610348565b80548552015460208401525f52600160205260405f2054918215610f04579190565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608490fd5b60409060631901126101445760405190610f8882610348565b60643582526084356020830152565b60409060231901126101445760405190610fb082610348565b60243582526044356020830152565b6040906101231901126101445760405190610fd982610348565b610124358252610144356020830152565b15610ff157565b608460405162461bcd60e51b815260206004820152604060248201525f516020611bdf5f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152fd5b1561104f57565b60405162461bcd60e51b815260206004820152604760248201525f516020611bdf5f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a490fd5b156110be57565b60405162461bcd60e51b815260206004820152604260248201525f516020611bdf5f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a490fd5b949290916101409694928652602086015260408501526060840152604060a46080850137604060e460c08501376101008301526101208201520190565b9080601f830112156101445760405191611179604084610385565b82906040810192831161014457905b8282106111955750505090565b8135815260209182019101611188565b90608060a319830112610144576040516111be81610348565b60206111d982946111d08160a461115e565b845260e461115e565b910152565b156111e557565b60405162461bcd60e51b815260206004820152606c60248201525f516020611bdf5f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c490fd5b90604060e4608060c0850194606435815260843560208201528360a4818301370137565b67ffffffffffffffff81116103645760051b60200190565b906112be8261129c565b6112cb6040519182610385565b82815280926112dc601f199161129c565b0190602036910137565b908210156107bd570190565b634e487b7160e01b5f52601160045260245ffd5b8015611312575f190190565b6112f2565b5f1981019190821161131257565b80518210156107bd5760209160051b010190565b919091611345836112b4565b925f5b818110611356575050505090565b61137b6113756113678385876112e6565b356001600160f81b03191690565b60f81c90565b6113908160ff165f52600460205260405f2090565b54801580156114c1575b61143c57805b6113af575b5050600101611348565b8563ffffffff6113ed6113df6113d08660ff165f52600460205260405f2090565b6113d986611317565b906107c2565b505460c01c63ffffffff1690565b161115611403576113fd90611306565b806113a0565b600192915061142061141761143592611317565b63ffffffff1690565b61142a8389611325565b9063ffffffff169052565b905f6113a5565b60405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a490fd5b506114e56114176113df6114e08560ff165f52600460205260405f2090565b6107ab565b861061139a565b9081518110156107bd570160200190565b1561150457565b60405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608490fd5b9190611579610dc7565b504363ffffffff16905f5b84518110156117045780836115af6113756115a16001958a6114ec565b516001600160f81b03191690565b6115c48160ff165f52600460205260405f2090565b54906115d18215156114fd565b61165761163861162a611600896115fb6115f68760ff165f52600560205260405f2090565b610ddf565b61177d565b61094e816116198760ff165f52600560205260405f2090565b906020600191805184550151910155565b67ffffffffffffffff191690565b926113d96116518460ff165f52600460205260405f2090565b91611317565b50908361166f611417845463ffffffff9060c01c1690565b03611698575061169292509060401c67ffffffffffffffff60c01b825416179055565b01611584565b81546001600160e01b031660e09490941b6001600160e01b0319169390931790556116ff916116d29060ff165f52600460205260405f2090565b6116ee6116dd6103a7565b67ffffffffffffffff199093168352565b63ffffffff8716602083015261028b565b611692565b5050509050565b6040519061018061171c8184610385565b368337565b60405190611730602083610385565b6020368337565b91906040906060611746610dc7565b94859260208551926117588585610385565b8436853780518452015160208301528482015260076107cf195a01fa1561177b57565bfe5b60209291608060409261178e610dc7565b9586938186519361179f8686610385565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561177b57156117d057565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b60405161181181610348565b60409081516118208382610385565b82368237815260208251916118358484610385565b83368437015280516118478282610385565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602082015281519061189d8383610385565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526118f283519384610385565b8252602082015290565b611904610dc7565b5060405161191181610348565b600181526002602082015290565b9060068202918083046006149015171561131257565b9060028110156107bd5760051b0190565b906001820180921161131257565b906002820180921161131257565b906003820180921161131257565b906004820180921161131257565b906005820180921161131257565b90600c8110156107bd5760051b0190565b156119a457565b60405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606490fd5b9290916119ee60406103b8565b9384526020840152611a0060406103b8565b9182526020820152611a1061170b565b915f5b60028110611a4d57505050602061018091611a2c611721565b92839160086107cf195a01fa801561177b57611a479061199d565b51151590565b80611a5960019261191f565b611a638285611935565b5151611a6f828861198c565b526020611a7c8386611935565b510151611a91611a8b83611946565b8861198c565b52611a9c8286611935565b515151611aab611a8b83611954565b52611ac1611ab98387611935565b515160200190565b51611ace611a8b83611962565b526020611adb8387611935565b51015151611aeb611a8b83611970565b52611b17611b11611b0a6020611b01868a611935565b51015160200190565b519261197e565b8761198c565b5201611a13565b611b26610dc7565b50805190811580611bd2575b15611b53575050604051611b47604082610385565b5f81525f602082015290565b60207f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47910151067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47811161131257604051916118f2604084610385565b50602081015115611b3256fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220907abf636d9e883e89ae38478a10f1607c3e4b038b27973de3ffd4e2d7a9915664736f6c634300081b0033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","r":"0x522e8d8b7bcd1288453e14a6edb0e65bef12daa762badd012974ff41eb7afaac","s":"0x5fe4fba44d7d40d23ad023d5df25914ed5a009598efdc01ac9c75bc40ca3284c","yParity":"0x0","v":"0x0","hash":"0xea277b3ad6a38782d4e229a655d3e930188ed28ec4f196c692077be5c59f4582"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x1e09c7d2881e6c3672e7715df0b439c4c782e6d58664ea625acf19ac3091cc2e","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xf00e5d17aa6d0e2ea59c9e7ea98e9337856c19b71edeaedb209588d0e626498a","transactionsRoot":"0xd7ebb413fbfede29e415ad474bf75bedd5ece9b2108ab3ffc79e146e8be3d800","receiptsRoot":"0xf1c91720c329978d7ea5afe37649862b671977b8a03dc7fa89046e3f84e5939b","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000010440000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x68446","timestamp":"0x68b88db5","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gas":"0x9004d","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x000000000000000000000000000000000000000000000000000000000000000960803460b857601f61071038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361063f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b00330000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","r":"0x7115aa54bc32b924b756808fc90af266b047e0690af2fa4f225d5ea1730f31d5","s":"0x367c4fdf3bd1aaae3cc628a0d529d76869a51739357554d74480d7467fa778bc","yParity":"0x0","v":"0x0","hash":"0x78baa7ffea920bf995412537611f0112a44cfc409fd2a1266e3ea0ca2bd40970"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x84c056559f2e02597c4a63d49cd134d54994cca86dd7a1c96e94807bcedd6554","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xe383e28f1fd1ed3384a430c946ba2f3e420a0b786eaebe800ed87b6b6103c167","transactionsRoot":"0xdfafd6035be94ce0b4a8ff2bc9ef23fcb72a5f10bfbdbfb2c44fdecb44ea0051","receiptsRoot":"0xac5ed18388c55d9d7879f080d6c318ac6cc1fa40e0ab7cfdd7031f07500babd3","logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000080000000000800000000000000000000000000000000000000000000000000000000000002000001000000000400000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400002010000100000000000000000000000000000020000000200000000000040000040000002000000000000000200020000000000000000000000000000000000000000000000000000000000100000000","difficulty":"0x0","number":"0x1c","gasLimit":"0x1c9c380","gasUsed":"0x3964c","timestamp":"0x68b89569","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x362c025","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x39","gas":"0x4a9c9","maxFeePerGas":"0x8b4f961","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60806040526103ca803803806100148161024f565b92833981019060408183031261024b578051916001600160a01b0383169182840361024b576020810151906001600160401b03821161024b57019181601f8401121561024b57825161006d61006882610288565b61024f565b9381855260208501936020838301011161024b57815f926020809301865e85010152833b156101f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906101e9575b610109575b60405160cb90816102ff8239f35b610113606061024f565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561019557610184935f92839251915af43d1561018d573d9061017561006883610288565b9182523d5f602084013e6102a3565b505f80806100fb565b6060906102a3565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f6100f6565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027457604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161027457601f01601f191660200190565b909190156102af575090565b8151156102bf5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b00330000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc00000000000000000000000000000000000000000000000000000000","r":"0x25aaf8a8ef4e96bf5617373534efc091f7146429f00ce703a50b4694555b149b","s":"0x56a3c9887cf0e50db7cbea475290c9d40e0ac2abdfbe6c05de88624f2cc2223b","yParity":"0x1","v":"0x1","hash":"0x46f93918c2a1adbca8e26b26edb140cece0f6079970838ca1cd036e236f6dba7"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xbb43bdce354cf48cd9e8ab7fb9ae0df8b7b20db4a41831eff7056d30d7c85448","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xc405f352cf152b3f17767728c2240a6508cbca1c17a982782f4fcdc623c05d0c","transactionsRoot":"0x5cfa0f06cf034a0428af108cb089b22c0cb47d64f0a2be925d82f3fb302b2d14","receiptsRoot":"0x605d5f6b56896dd16667eb663be924e5a45ab6b967d4f3f3003c092e2dd6efad","logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000002000001000000000400100000000000000020000000020000000004000100000800000000000000000000000000000000400000000000000000000000000020000000000000000080000000000000000000000000000000000000000000000400002000000000000000000000000000000000000020000000200000000000044000040000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1f","gasLimit":"0x1c9c380","gasUsed":"0x495fa","timestamp":"0x68b895de","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x24d2a12","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3c","gas":"0x5f62b","maxFeePerGas":"0x5f035a3","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60806040526103ca803803806100148161024f565b92833981019060408183031261024b578051916001600160a01b0383169182840361024b576020810151906001600160401b03821161024b57019181601f8401121561024b57825161006d61006882610288565b61024f565b9381855260208501936020838301011161024b57815f926020809301865e85010152833b156101f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906101e9575b610109575b60405160cb90816102ff8239f35b610113606061024f565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561019557610184935f92839251915af43d1561018d573d9061017561006883610288565b9182523d5f602084013e6102a3565b505f80806100fb565b6060906102a3565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f6100f6565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027457604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161027457601f01601f191660200190565b909190156102af575090565b8151156102bf5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033000000000000000000000000fd471836031dc5108809d173a067e8486b9047a3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4f28c3e3700000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000006530dd13afb697b81e2d602a279ebaec8ca2e31000000000000000000000000663f3ad617193148711d28f5334ee4ed070166024cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c9700a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b00000000000000000000000000000000000000000000000000000000","r":"0x529d7679712a6466ef3765a416c16c7b8c037e36b03f8077c20d9121e210305e","s":"0x7e1e8a2d1e9b0e1603b745ce81889d8c86d61d90e15d21b1a3bd0f045558313b","yParity":"0x0","v":"0x0","hash":"0x01db9852ede867033ae1ced7849d0c0df6ce28d3a6e5c90461a2d94aded74c38"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe7b21562150bce31b42cccaff8f60797c82df92b98326f4c9d814e1989636b0d","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x25e1a0e487c6977e51c429e1e70cf4c9e25b904f3fafcd25c690085f0b4efc6e","transactionsRoot":"0x8aaddefad492471807710f0df6582ff0828f2602818c82d4ee06880df5239091","receiptsRoot":"0xe12d886ba13db6bf1e35aa715a835c807cc023537c50452b32566fd85f4bdf23","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000001000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000","difficulty":"0x0","number":"0x12","gasLimit":"0x1c9c380","gasUsed":"0x45ae05","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xb6b0ca1","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2f","gas":"0x5a956c","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6101c080604052346102f457608081615454803803809161002082856102f8565b8339810103126102f4578051906001600160a01b03821682036102f45760208101516001600160a01b03811681036102f4576040820151916001600160a01b03831683036102f45760600151926001600160a01b03841684036102f45760405161008b6040826102f8565b6016815260208101907f4156535265676973747279436f6f7264696e61746f72000000000000000000008252604051916100c66040846102f8565b6006835260208301916576302e302e3160d01b8352519020915190208160e05280610100524660a0526040519060208201925f5160206154345f395f51905f528452604083015260608201524660808201523060a082015260a0815261012d60c0826102f8565b5190206080523060c0525f5160206154345f395f51905f52610120526101405261018052610160526101a0525f5460ff8160081c1661029f5760ff80821610610265575b6040516151049081610330823960805181614789015260a05181614840015260c05181614753015260e051816147d8015261010051816147fe015261012051816147b5015261014051818181610d1b015281816137f601526140a5015261016051818181610c3f015281816113e001528181612d60015281816136820152818161398801528181613ee601526145eb0152610180518181816114ac01528181612d2e01528181612fe0015281816136e701528181613f71015281816142bc015261452401526101a051818181610e8801528181611a2e01528181612d920152818161374901528181613fda015261458a0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610171565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761031b57604052565b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062cf2ab51461038357806303fd34921461037e57806304ec635114610379578063054310e6146103745780630a3b0a4f1461036f5780630cf4b7671461036a5780630d3f21341461036557806310d67a2f14610360578063125e05841461035b57806313542a4e14610356578063136439dd146103515780631478851f1461034c5780631eb812da14610347578063249a0c421461034257806328f61b311461033d57806329092d0e14610338578063296bb0641461033357806329d1e0c31461032e5780632cdd1e86146103295780633998fdd3146103245780633af32abf1461031f5780633c2a7f4c1461031a5780635140a5481461031557806353abfad4146103105780635865c60c1461030b578063595c6a67146103065780635ac86ab7146103015780635b0b829f146102fc5780635c975abb146102f75780635df45946146102f25780636347c900146102ed57806368304835146102e85780636c708904146102e35780636e3b17db146102de578063715018a6146102d957806384ca5213146102d4578063871ef049146102cf578063886f1195146102ca5780638da5cb5b146102c55780639aa1653d146102c05780639b5d177b146102bb5780639e9923c2146102b65780639feab859146102b1578063a50857bf146102ac578063a96f783e146102a7578063c391425e146102a2578063ca0de8821461029d578063ca4f2d9714610298578063d72d8dd614610293578063d75b4c881461028e578063dd8283f314610289578063e65797ad14610284578063f2fde38b1461027f578063fabc1cbc1461027a5763fd39105a14610275575f80fd5b6122f2565b6121e0565b61214f565b6120bb565b61201c565b611dfe565b611d3e565b611cf1565b611cb7565b611c13565b611bb7565b611a97565b611a5d565b611a19565b611950565b61188d565b611865565b61183a565b61180a565b611794565b6116a4565b611566565b6114db565b611497565b61143d565b6113cb565b6113ae565b6112fa565b6112bc565b611234565b6111c8565b611114565b610df6565b610d8a565b610d4a565b610d06565b610cd9565b610cac565b610c09565b610ba0565b610b78565b610b46565b610acc565b610a9d565b610966565b61092b565b6108f0565b61084a565b61081c565b61076b565b610620565b6105be565b6104c5565b61048d565b6103bc565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460051b0101116103b857565b5f80fd5b346103b85760203660031901126103b8576004356001600160401b0381116103b8576103ec903690600401610388565b906104046103fe600480600154161490565b15612338565b5f5b82811061040f57005b806104876104206001938686612384565b3561042a816105e6565b838060a01b0381165f52609960205260405f2061046060ff8660405193610450856106a0565b80548552015416602083016123a1565b61048161047c6104708351612e1f565b6001600160c01b031690565b612eb4565b91612f96565b01610406565b346103b85760203660031901126103b8576004355f526098602052602060405f2054604051908152f35b63ffffffff8116036103b857565b346103b85760603660031901126103b8576024356105056104ff6004356104eb846104b7565b604435905f52609860205260405f20611423565b506123d3565b63ffffffff8082511692169182106105895760408161054d61057594610535602061055b96015163ffffffff1690565b9063ffffffff821615918215610579575b5050612404565b01516001600160c01b031690565b6040516001600160c01b0390911681529081906020820190565b0390f35b63ffffffff161190505f80610546565b60405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b6044820152606490fd5b5f9103126103b857565b346103b8575f3660031901126103b857609d546040516001600160a01b039091168152602090f35b6001600160a01b038116036103b857565b60043590610604826105e6565b565b60243590610604826105e6565b60443590610604826105e6565b346103b85760203660031901126103b85760043561063d816105e6565b61064561306c565b6001600160a01b03165f81815260c860205260408120805460ff191660011790557f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9080a2005b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176106bb57604052565b61068c565b606081019081106001600160401b038211176106bb57604052565b90601f801991011681019081106001600160401b038211176106bb57604052565b604051906106046040836106db565b604051906106046060836106db565b6001600160401b0381116106bb57601f01601f191660200190565b9291926107418261071a565b9161074f60405193846106db565b8294818452818301116103b8578281602093845f960137010152565b346103b85760203660031901126103b8576004356001600160401b0381116103b857366023820112156103b8576107ac903690602481600401359101610735565b335f52609960205260ff600160405f2001541660038110156108175760016107d49114612436565b335f5260996020527fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa61081260405f2054926040519182918261248e565b0390a2005b61119d565b346103b85760203660031901126103b85760043561083861306c565b60a055005b60643590610604826105e6565b346103b85760203660031901126103b85760048035610868816105e6565b5f5460405163755b36bd60e11b815292602091849190829060101c6001600160a01b03165afa9182156108eb576108ba926108b5915f916108bc575b506001600160a01b031633146124bf565b6130c4565b005b6108de915060203d6020116108e4575b6108d681836106db565b81019061249f565b5f6108a4565b503d6108cc565b6124b4565b346103b85760203660031901126103b85760043561090d816105e6565b60018060a01b03165f52609f602052602060405f2054604051908152f35b346103b85760203660031901126103b857600435610948816105e6565b60018060a01b03165f526099602052602060405f2054604051908152f35b346103b85760203660031901126103b8576004355f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb576109bf915f91610a6e575b50612536565b60015481811603610a0357806001557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806108123394829190602083019252565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610a90915060203d602011610a96575b610a8881836106db565b81019061251e565b5f6109b9565b503d610a7e565b346103b85760203660031901126103b8576004355f52609a602052602060ff60405f2054166040519015158152f35b346103b85760403660031901126103b8576060610b046104ff602435600435610af3612593565b505f52609860205260405f20611423565b6040519063ffffffff815116825263ffffffff6020820151166020830152604060018060c01b03910151166040820152f35b6004359060ff821682036103b857565b346103b85760203660031901126103b85760ff610b61610b36565b165f52609b602052602060405f2054604051908152f35b346103b8575f3660031901126103b857609e546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b857600435610bbd816105e6565b610bc561306c565b6001600160a01b03165f81815260c860205260408120805460ff191690557f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9080a2005b346103b85760203660031901126103b8576040516308f6629d60e31b815260048035908201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156108eb57610575915f91610c8d575b506040516001600160a01b0390911681529081906020820190565b610ca6915060203d6020116108e4576108d681836106db565b5f610c72565b346103b85760203660031901126103b8576108ba600435610ccc816105e6565b610cd461306c565b6131bb565b346103b85760203660031901126103b8576108ba600435610cf9816105e6565b610d0161306c565b613219565b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b85760203660031901126103b857600435610d67816105e6565b60018060a01b03165f5260c8602052602060ff60405f2054166040519015158152f35b346103b85760203660031901126103b8576040610db1600435610dac816105e6565b6125c9565b610dc78251809260208091805184520151910152565bf35b9181601f840112156103b8578235916001600160401b0383116103b857602083818601950101116103b857565b346103b85760403660031901126103b8576004356001600160401b0381116103b857610e26903690600401610388565b906024356001600160401b0381116103b857610e4783913690600401610dc9565b610e5b6103fe949294600480600154161490565b610e7a610e6a60965460ff1690565b610e75368488610735565b6133e2565b50610e8681841461262f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316935f5b828110610ebc57005b610ee1610edb610ecd83868661266d565b356001600160f81b03191690565b60f81c90565b610eec828787612679565b6040516379a0849160e11b815260ff841660048201526020816024818d5afa9081156108eb57610f2c9163ffffffff915f91611047575b501682146126d2565b5f90815b8688838510610f9c575050505050509060019143610f598260ff165f52609b60205260405f2090565b557f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db460ff60405192169180610f9343829190602083019252565b0390a201610eb3565b86611038611031600195948b61103f95611022610fc3610fbe8d8f8e90612384565b612394565b9861100d611008610fec610fe78d60018060a01b03165f52609960205260405f2090565b6123ad565b99610ffa6104708c51612e1f565b60ff600192161c1660011490565b612709565b8a8060a01b03168a8060a01b038a1611612740565b61102b8261278a565b926127b8565b3691610735565b9083612f96565b920191610f30565b611068915060203d811161106e575b61106081836106db565b8101906126bd565b8c610f23565b503d611056565b6001600160401b0381116106bb5760051b60200190565b60206003198201126103b857600435906001600160401b0382116103b857806023830112156103b85781600401356110c381611075565b926110d160405194856106db565b8184526024602085019260051b8201019283116103b857602401905b8282106110fa5750505090565b602080918335611109816105e6565b8152019101906110ed565b346103b8576111223661108c565b61112a61306c565b5f5b81518110156108ba576001906001600160a01b0361114a82856127dd565b51165f5260c860205260405f2060ff19815416905561116981846127dd565b5160a083901b839003167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc5f80a20161112c565b634e487b7160e01b5f52602160045260245ffd5b6003111561081757565b9060038210156108175752565b346103b85760203660031901126103b8576004356111e5816105e6565b6111ed6125b1565b5060018060a01b03165f52609960205260405f2061121560ff600160405193610450856106a0565b60405180916105756020604084019280518552015160208401906111bb565b346103b8575f3660031901126103b8575f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb57611288915f91610a6e5750612536565b5f196001556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b346103b85760203660031901126103b8576020600160ff6112db610b36565b161b806001541614604051908152f35b359061ffff821682036103b857565b346103b85760803660031901126103b857611313610b36565b60603660231901126103b85760405161132b816106c0565b602435611337816104b7565b815260443561ffff811681036103b857602082015260643561ffff811681036103b857604082015261136761306c565b60ff6096541660ff83161015611380576108ba91613469565b60405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b6044820152606490fd5b346103b8575f3660031901126103b8576020600154604051908152f35b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054821015611438575f5260205f2001905f90565b61140f565b346103b85760203660031901126103b857600435609c548110156103b857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c01546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b8576114e93661108c565b6114f161306c565b5f5b81518110156108ba576001906001600160a01b0361151182856127dd565b51165f5260c860205260405f208260ff1982541617905561153281846127dd565b5160a083901b839003167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f5f80a2016114f3565b346103b85760403660031901126103b857600435611583816105e6565b6024356001600160401b0381116103b8576115a2903690600401610dc9565b609e549192916001600160a01b03163303611672576001600160a01b0382165f908152609f602090815260408083204290556099909152902080546001611612816116096116036104706115f860965460ff1690565b610e75368b8e610735565b94612e1f565b94015460ff1690565b61161b816111b1565b14918261165f575b82611646575b505061163157005b6108ba92611640913691610735565b906135c9565b81166001600160c01b0390811691161490505f80611629565b6001600160c01b03821615159250611623565b60405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b6044820152606490fd5b346103b8575f3660031901126103b8576116bc61306c565b606480546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b91908260409103126103b857604051611717816106a0565b8092803560ff811681036103b857825260209081013591611737836105e6565b0152565b9092919261174881611075565b9361175660405195866106db565b602085838152019160061b8301928184116103b857915b83831061177a5750505050565b602060409161178984866116ff565b81520192019161176d565b346103b85760a03660031901126103b8576004356117b1816105e6565b60243590604435906001600160401b0382116103b857366023830112156103b857610575926117ed6117fa93369060248160040135910161173b565b60643591608435936127f1565b6040519081529081906020820190565b346103b85760203660031901126103b8576020611828600435612e1f565b6040516001600160c01b039091168152f35b346103b8575f3660031901126103b8575f5460405160109190911c6001600160a01b03168152602090f35b346103b8575f3660031901126103b8576064546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b857602060ff60965416604051908152f35b6101009060431901126103b857604490565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460061b0101116103b857565b9190916060818403126103b85760405190611909826106c0565b819381356001600160401b0381116103b85782019181601f840112156103b85761193d604093928360208695359101610735565b8452602081013560208501520135910152565b346103b8576101a03660031901126103b8576004356001600160401b0381116103b857611981903690600401610dc9565b906024356001600160401b0381116103b8576119a1903690600401610dc9565b6119aa366118ad565b90610144356001600160401b0381116103b8576119cb9036906004016118bf565b929091610164356001600160401b0381116103b8576119ee9036906004016118ef565b9461018435976001600160401b0389116103b857611a136108ba9936906004016118ef565b976128ac565b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b8575f3660031901126103b85760206040517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68152f35b346103b8576101603660031901126103b8576004356001600160401b0381116103b857611ac8903690600401610dc9565b906024356001600160401b0381116103b857611ae8903690600401610dc9565b9092611af3366118ad565b92610144356001600160401b0381116103b857611b5c95611b4d611b1e611b559336906004016118ef565b96611b2f6103fe6001808054161490565b335f5260c8602052611b4760ff60405f205416612a07565b33613966565b943691610735565b9233613dd8565b5180511561143857602063ffffffff910151165f8052609760205263ffffffff60405f20541610611b8957005b60405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b6044820152606490fd5b346103b8575f3660031901126103b857602060a054604051908152f35b60206040818301928281528451809452019201905f5b818110611bf75750505090565b825163ffffffff16845260209384019390920191600101611bea565b346103b85760403660031901126103b857600435611c30816104b7565b602435906001600160401b0382116103b857366023830112156103b857816004013591611c5c83611075565b92611c6a60405194856106db565b8084526024602085019160051b830101913683116103b857602401905b828210611ca757610575611c9b8686612ab4565b60405191829182611bd4565b8135815260209182019101611c87565b346103b8575f3660031901126103b85760206040517f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8152f35b346103b85760203660031901126103b8576004356001600160401b0381116103b857611d38611d276108ba923690600401610dc9565b611031600280600154161415612338565b336135c9565b346103b8575f3660031901126103b8576020609c54604051908152f35b6001600160601b038116036103b857565b81601f820112156103b857803590611d8382611075565b92611d9160405194856106db565b82845260208085019360061b830101918183116103b857602001925b828410611dbb575050505090565b6040848303126103b85760206040918251611dd5816106a0565b8635611de0816105e6565b815282870135611def81611d5b565b83820152815201930192611dad565b346103b857366003190160a081126103b8576060136103b857604051611e23816106c0565b600435611e2f816104b7565b815260243561ffff811681036103b857602082015260443561ffff811681036103b857604082015260643590611e6482611d5b565b608435916001600160401b0383116103b857611e876108ba933690600401611d6c565b91611e9061306c565b6144df565b81601f820112156103b857803590611eac82611075565b92611eba60405194856106db565b828452602060608186019402830101918183116103b857602001925b828410611ee4575050505090565b6060848303126103b8576020606091604051611eff816106c0565b8635611f0a816104b7565b8152611f178388016112eb565b83820152611f27604088016112eb565b6040820152815201930192611ed6565b9080601f830112156103b8578135611f4e81611075565b92611f5c60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210611f845750505090565b602080918335611f9381611d5b565b815201910190611f77565b9080601f830112156103b8578135611fb581611075565b92611fc360405194856106db565b81845260208085019260051b820101918383116103b85760208201905b838210611fef57505050505090565b81356001600160401b0381116103b85760209161201187848094880101611d6c565b815201910190611fe0565b346103b8576101003660031901126103b8576120366105f7565b61203e610606565b90612047610613565b61204f61083d565b60843560a4356001600160401b0381116103b857612071903690600401611e95565b9160c4356001600160401b0381116103b857612091903690600401611f37565b9360e435966001600160401b0388116103b8576120b56108ba983690600401611f9e565b96612b8b565b346103b85760203660031901126103b85760ff6120d6610b36565b6120de612593565b50165f52609760205261057560405f2061ffff604051916120fe836106c0565b5463ffffffff81168352818160201c16602084015260301c16604082015260405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b346103b85760203660031901126103b85760043561216c816105e6565b61217461306c565b6001600160a01b0381161561218c576108ba906138a4565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b85760203660031901126103b8576004355f5460405163755b36bd60e11b8152906020908290600490829060101c6001600160a01b03165afa80156108eb5761223d915f916108bc57506001600160a01b031633146124bf565b6001541981198116036122875761225381600155565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c908060208101610812565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b346103b85760203660031901126103b85760043561230f816105e6565b60018060a01b03165f526099602052602060ff600160405f20015416610dc760405180926111bb565b1561233f57565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b91908110156114385760051b0190565b3561239e816105e6565b90565b60038210156108175752565b906106046040516123bd816106a0565b602060ff600183968054855201541691016123a1565b906040516123e0816106c0565b604081935463ffffffff8116835263ffffffff8160201c166020840152811c910152565b1561240b57565b606460405162461bcd60e51b815260206004820152600460248201526331371e1960e11b6044820152fd5b1561243d57565b60405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b6044820152606490fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061239e92818152019061246a565b908160209103126103b8575161239e816105e6565b6040513d5f823e3d90fd5b156124c657565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b908160209103126103b8575180151581036103b85790565b1561253d57565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b604051906125a0826106c0565b5f6040838281528260208201520152565b604051906125be826106a0565b5f6020838281520152565b61262a61239e916125d86125b1565b50604080517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6602082019081526001600160a01b03909316818301529081526126226060826106db565b519020613277565b6132c4565b1561263657565b60405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b6044820152606490fd5b90156114385790565b90821015611438570190565b91908110156114385760051b81013590601e19813603018212156103b85701908135916001600160401b0383116103b8576020018260051b360381136103b8579190565b908160209103126103b8575161239e816104b7565b156126d957565b60405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b6044820152606490fd5b1561271057565b60405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b6044820152606490fd5b1561274757565b60405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b906001820180921161279857565b612776565b9190820180921161279857565b906001116103b85790600190565b909392938483116103b85784116103b8578101920390565b8051156114385760200190565b80518210156114385760209160051b010190565b919493909260405192602084019460e08501917f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a875260018060a01b03166040860152606085015260c060808501528651809152602061010085019701905f5b81811061287e5750505061239e949561262292849260a084015260c083015203601f1981018352826106db565b8251805160ff168a526020908101516001600160a01b0316818b015260409099019890920191600101612851565b611b55819893839a956110316128f5612908999b9a9b6128d26103fe6001808054161490565b335f5260c86020526128ea60ff60405f205416612a07565b611b47888d14612a45565b96612901368c8e61173b565b8833613a9c565b9361293561293061291f610edb610ecd8589612664565b60ff165f52609760205260405f2090565b612a77565b9261294d61294387516127d0565b5163ffffffff1690565b63ffffffff61296c612963875163ffffffff1690565b63ffffffff1690565b91161161297c575b505050505050565b60206129f0611031946129f6936129eb611640986129fc9b6129a4610edb610ecd8b8f612664565b6129d06129bb896129c86129bb60408701516127d0565b516001600160601b031690565b9401516127d0565b906129e36129de8888612664565b612aa9565b923391614230565b612664565b01612394565b936127aa565b5f8080808080612974565b15612a0e57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606490fd5b15612a4c57565b606460405162461bcd60e51b815260206004820152600460248201526338a632b760e11b6044820152fd5b90604051612a84816106c0565b604061ffff82945463ffffffff81168452818160201c16602085015260301c16910152565b61239e9036906116ff565b9190805190612ac282611075565b91612ad060405193846106db565b808352612adf601f1991611075565b013660208401375f5b8151811015612b215780612b08612b01600193856127dd565b5187614386565b63ffffffff612b1783876127dd565b9116905201612ae8565b5090925050565b15612b2f57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b9694929091612bd59694925f5498612bbb60ff8b60081c16151515809b81612c4f575b8115612c2f575b50612b28565b89612bcc600160ff195f5416175f55565b612c1857612cf3565b612bdb57565b612be961ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612c2a61010061ff00195f5416175f55565b612cf3565b303b15915081612c41575b505f612bb5565b60ff1660011490505f612c3a565b600160ff8216109150612bae565b15612c6457565b60405162461bcd60e51b8152602060048201526002602482015261494560f01b6044820152606490fd5b609c54600160401b8110156106bb5760018101609c55609c5481101561143857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0180546001600160a01b0319166001600160a01b03909216919091179055565b612d2994610d019394612d24610cd4939b9a999b612d1f8d8b5190518091149081612e06575b50612c5d565b6138a4565b614669565b612d5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c8e565b612d8d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c8e565b612dbf7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c8e565b5f5b8151811015612dff5780612df9612dda600193856127dd565b51612de86129bb848a6127dd565b612df284886127dd565b51916144df565b01612dc1565b5050509050565b90508c51145f612d19565b5f1981019190821161279857565b805f52609860205260405f20549081155f14612e3b5750505f90565b5f52609860205260405f20905f19810190811161279857612e5b91611423565b505460401c90565b90612e6d8261071a565b612e7a60405191826106db565b8281528092612e8b601f199161071a565b0190602036910137565b5f1981146127985760010190565b908151811015611438570160200190565b5f81805b612f2e5750612eca9061ffff16612e63565b5f5f5b8251821080612f23575b15612f1c576001811b8416612ef5575b612ef090612e95565b612ecd565b906001612ef09160ff60f81b8460f81b165f1a612f128287612ea3565b5301919050612ee7565b5050905090565b506101008110612ed7565b5f1981018181116127985761ffff9116911661ffff8114612798576001019080612eb8565b908160209103126103b857516001600160c01b03811681036103b85790565b61239e939260609260018060a01b031682526020820152816040820152019061246a565b919060016020820151612fa8816111b1565b612fb1816111b1565b0361306757516040516333567f7f60e11b81529160209183918291612fdb91908760048501612f72565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156108eb575f91613038575b506001600160c01b0316908161302c575050565b61164061060492612eb4565b61305a915060203d602011613060575b61305281836106db565b810190612f53565b5f613018565b503d613048565b505050565b6064546001600160a01b0316330361308057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381161561313e575f54604080516001600160a01b0360109390931c8316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a15f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b609d54604080516001600160a01b038084168252841660208201529192917f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c9190a16001600160a01b03166001600160a01b03199190911617609d55565b609e54604080516001600160a01b038084168252841660208201529192917f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc99190a16001600160a01b03166001600160a01b03199190911617609e55565b61327f614750565b9060405190602082019261190160f01b845260228301526042820152604281526132aa6062826106db565b51902090565b634e487b7160e01b5f52601260045260245ffd5b5f5160206150af5f395f51905f52906132db6125b1565b505f919006602060c0835b6133db575f935f5160206150af5f395f51905f526003818681818009090860405161331185826106db565b8436823784818560405161332582826106db565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206150af5f395f51905f5260a082015260056107cf195a01fa80156133e05761338f90614dab565b51916133db575f5160206150af5f395f51905f52828009146133c657505f5160206150af5f395f51905f5260015f940892936132e6565b929350506133d26106fc565b92835282015290565b6132b0565bfe5b9060016133f060ff936148e8565b928392161b11156133fe5790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b61352760ff7f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac921692835f52609760205260405f206134bf63ffffffff835116829063ffffffff1663ffffffff19825416179055565b6020820151815465ffff0000000067ffff000000000000604086015160301b169260201b169067ffffffff0000000019161717905560405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b0390a2565b1561353357565b606460405162461bcd60e51b8152602060048201526004602482015263071456d760e41b6044820152fd5b1561356557565b606460405162461bcd60e51b815260206004820152600460248201526310a9bab160e11b6044820152fd5b6001600160a01b03909116815260406020820181905261239e9291019061246a565b60409061239e93928152816020820152019061246a565b6001600160a01b0381165f9081526099602052604090209060018254920161360660016135f7835460ff1690565b613600816111b1565b14612436565b61366661362161047061361b60965460ff1690565b876133e2565b61362a85612e1f565b6001600160c01b039091169061364182151561352c565b6136578282166001600160c01b0316831461355e565b9019166001600160c01b031690565b6136708185614a4b565b6001600160c01b0316156137e9575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b857835f916136d5938360405180968195829463f4e24fe560e01b845260048401613590565b03925af180156108eb576137d5575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b8575f604051809263bd29b8cd60e01b82528183816137378989600484016135b2565b03925af180156108eb576137c1575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103b85761379c925f928360405180968195829463bd29b8cd60e01b8452600484016135b2565b03925af180156108eb576137ad5750565b806137bb5f610604936106db565b806105b4565b806137bb5f6137cf936106db565b5f613746565b806137bb5f6137e3936106db565b5f6136e4565b805460ff191660021790557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b8576040516351b27a6d60e11b81526001600160a01b0383166004820152905f908290602490829084905af180156108eb57613890575b50816001600160a01b0382167f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e45f80a35f61367f565b806137bb5f61389e936106db565b5f61385a565b606480546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908160209103126103b8575190565b61012090604060c0610604959796949761016084019860018060a01b03168452613932602085018260208091803584520135910152565b80830180356060860152602001356080850152826080820160a08601370160e0830137019060208091805184520151910152565b6040516309aa152760e11b81526001600160a01b0382811660048301529091907f000000000000000000000000000000000000000000000000000000000000000016602083602481845afa9283156108eb575f93613a47575b5082156139cd575050905090565b602092506139fd935f6139df846125c9565b6040516317ef39cb60e31b81529687958694859391600485016138fb565b03925af19081156108eb575f91613a18575b50805f80612f1c565b613a3a915060203d602011613a40575b613a3281836106db565b8101906138ec565b5f613a0f565b503d613a28565b613a6191935060203d602011613a4057613a3281836106db565b915f6139bf565b15613a6f57565b60405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b6044820152606490fd5b91929092602082019283515f52609a60205260ff60405f205416613b155761060494613b0d926040850191613ad48351421115613a68565b613af7613aea88515f52609a60205260405f2090565b805460ff19166001179055565b609d546001600160a01b031696519251936127f1565b905191614c95565b60405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b6044820152606490fd5b60405190613b50826106c0565b60606040838281528260208201520152565b15613b6957565b606460405162461bcd60e51b815260206004820152600460248201526308509a5d60e21b6044820152fd5b15613b9b57565b60405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b6044820152606490fd5b6001602091835181550191015160038110156108175760ff80198354169116179055565b9060018060a01b031681526040602082015260806040613c17845160608386015260a085019061246a565b9360208101516060850152015191015290565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03909116815260406020820181905261239e93910191613c2a565b9080601f830112156103b8578151613c8381611075565b92613c9160405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613cb95750505090565b602080918351613cc881611d5b565b815201910190613cac565b9190916040818403126103b85780516001600160401b0381116103b85783613cfc918301613c6c565b9260208201516001600160401b0381116103b85761239e9201613c6c565b61239e949260609260018060a01b0316825260208201528160408201520191613c2a565b6020818303126103b8578051906001600160401b0382116103b857019080601f830112156103b8578151613d7181611075565b92613d7f60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613da75750505090565b602080918351613db6816104b7565b815201910190613d9a565b60409061239e949281528160208201520191613c2a565b91929394817fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa613ea9613e09613b43565b98613e9d613e2c6104708b610e758c613e2460965460ff1690565b923691610735565b613e3586612e1f565b6001600160c01b0390911690613e4c82151561352c565b60018060c01b0316613e66613e618284161590565b613b62565b6001600160a01b038a165f908152609f60205260409020613e9690613e8f905460a0549061279d565b4211613b94565b1785614a4b565b6040519182918261248e565b0390a26001613ed481613ecc8660018060a01b03165f52609960205260405f2090565b015460ff1690565b613edd816111b1565b03614072575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b8575f6040518092631fd93ca960e11b8252818381613f378b8b8b60048501613c4a565b03925af180156108eb5784935f92849261405e575b50613f6c876040519788948594632550477760e01b865260048601613d1a565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19283156108eb575f938491859161403a575b5060408701526020860152613fd5604051948593849362bff04d60e01b855260048501613dc1565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156108eb575f91614018575b50815290565b61403491503d805f833e61402c81836106db565b810190613d3e565b5f614012565b905061405891503d8086833e61405081836106db565b810190613cd3565b5f613fad565b806137bb8561406c936106db565b5f613f4c565b6140a361407d6106fc565b838152600160208201526001600160a01b0385165f908152609960205260409020613bc8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b857604051639926ee7d60e01b8152915f9183918290849082906140fa908a60048401613bec565b03925af180156108eb5761413f575b50806001600160a01b0383167fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe5f80a35f613ee3565b806137bb5f61414d936106db565b5f614109565b1561415a57565b60405162461bcd60e51b815260206004820152600360248201526206368360ec1b6044820152606490fd5b1561418c57565b60405162461bcd60e51b815260206004820152600360248201526263683160e81b6044820152606490fd5b908160209103126103b8575161239e81611d5b565b156141d357565b60405162461bcd60e51b815260206004820152600360248201526231b41960e91b6044820152606490fd5b1561420557565b60405162461bcd60e51b815260206004820152600360248201526263683360e81b6044820152606490fd5b6020919261428d6142806142b89896976142796142558783015160018060a01b031690565b6001600160a01b039081165f81815260996020526040902054969091161415614153565b5160ff1690565b60ff808516911614614185565b604051635401ed2760e01b8152600481019190915260ff909116602482015294859081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9283156108eb57610604945f9461433c575b50826143349261432f61431b936001600160601b0361432761431b82998b614d6a565b6001600160601b031690565b9116116141cc565b614d8d565b9116106141fe565b61431b919450926143349261432f6143736001600160601b039660203d60201161437f575b61436b81836106db565b8101906141b7565b969350509250926142f8565b503d614361565b815f52609860205260405f2054905f5b8281106143ca5760405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b6044820152606490fd5b808303838111612798576129636143e091612e11565b6144096143fe826143f9885f52609860205260405f2090565b611423565b505463ffffffff1690565b63ffffffff808516911611156144225750600101614396565b935050505090565b1561443157565b606460405162461bcd60e51b81526020600482015260046024820152630e29ac2f60e31b6044820152fd5b60ff60019116019060ff821161279857565b6080906001600160601b036020939460ff60608401961683521683820152606060408201528451809452019201905f5b8181106144ab5750505090565b825180516001600160a01b031685526020908101516001600160601b0316818601526040909401939092019160010161449e565b91906145226144f060965460ff1690565b9361450060c060ff87161061442a565b61451c61450c8661445c565b60ff1660ff196096541617609655565b84613469565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103b857614578925f928360405180968195829463ff694a7760e01b84528a6004850161446e565b03925af180156108eb57614655575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff83166004820152905f908290602490829084905af180156108eb57614641575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff90921660048301525f9082908183816024810161379c565b806137bb5f61464f936106db565b5f6145e8565b806137bb5f614663936106db565b5f614587565b5f5460101c6001600160a01b0316158061473e575b156146c3578161469061060493600155565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a26130c4565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b038116151561467e565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061483d575b156147ab577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526132aa60c0826106db565b507f00000000000000000000000000000000000000000000000000000000000000004614614782565b1561486d57565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614966578151156149615761492461491a610edb61490c856127d0565b516001600160f81b03191690565b60ff600191161b90565b6001905b835182101561495c5760019061494761491a610edb61490c8689612ea3565b90614953818311614866565b17910190614928565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b8054600160401b8110156106bb576149fa91600182018155611423565b614a3857815160208084015160409485015163ffffffff909316911b67ffffffff00000000161767ffffffffffffffff199190931b16919091179055565b634e487b7160e01b5f525f60045260245ffd5b90614a5e825f52609860205260405f2090565b5480614aab5750614a7a610604925f52609860205260405f2090565b614aa6614a8561070b565b4363ffffffff168152925b5f60208501526001600160c01b03166040840152565b6149dd565b91614ad663ffffffff93614ad0614aca845f52609860205260405f2090565b91612e11565b90611423565b5090614ae6825463ffffffff1690565b43851694168403614b1157506106049250906001600160401b0382549181199060401b169116179055565b815467ffffffff000000001916602085901b67ffffffff000000001617909155610604929190614aa690614b4d905f52609860205260405f2090565b91614a90614b5961070b565b63ffffffff9095168552565b15614b6c57565b60405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a490fd5b908160209103126103b857516001600160e01b0319811681036103b85790565b15614c0e57565b60405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a490fd5b90813b15614d275791602091614cc193604051809581948293630b135d3f60e11b8452600484016135b2565b03916001600160a01b03165afa80156108eb57610604915f91614cf8575b506001600160e01b031916630b135d3f60e11b14614c07565b614d1a915060203d602011614d20575b614d1281836106db565b810190614be7565b5f614cdf565b503d614d08565b61060492614d3491614df7565b6001600160a01b03908116911614614b65565b906001600160601b03809116911602906001600160601b03821691820361279857565b614d886001600160601b039161ffff60206127109501511690614d47565b160490565b614d886001600160601b039161ffff60406127109501511690614d47565b15614db257565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b61239e91614e0491614e0c565b919091614e84565b815160418103614e38575090614e3491602082015190606060408401519301515f1a90615005565b9091565b604003614e715760406020830151920151918260ff1c91601b830180931161279857614e34936001600160ff1b03169260ff1690615005565b50505f90600290565b6005111561081757565b614e8d81614e7a565b80614e955750565b614e9e81614e7a565b60018103614eeb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b614ef481614e7a565b60028103614f415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b614f4a81614e7a565b60038103614fa25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b80614fae600492614e7a565b14614fb557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116150a35760ff16601b81141580615098575b61508d576020935f93604051938493608085019385528785015260408401526060830152838052039060015afa156108eb575f516001600160a01b0381161561508557905f90565b505f90600190565b505050505f90600490565b50601c81141561503d565b505050505f9060039056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122008e52422e3bba4dbde50639da22bb14dc5549ff1da95556698281d1600612a1464736f6c634300081b00338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4900000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778","r":"0x68f2a27172418dcd24ae578ad9b93780d7e013a29c9713cf727ecbdf93b3def9","s":"0x75ea1ca40234af25160738aa93efe198a3429e8ca8ad508a1f98adfbc4ff614c","yParity":"0x1","v":"0x1","hash":"0xe662ce934007714e099c6aed272dfefa12862493823053fb1e521f51c912ce19"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x323db2ce15bb64796aaa948aeae5dc859b000b87dfb8afc77e40fe1a74599900","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xfc6e2e17ecf740ff059b62ab1785a91db6b4a0e7ce85165d0368c9d29a70d059","transactionsRoot":"0x57d6a64bdf9fb5c300019fe607e5d52ac36d6b2e3e5ab20727edad52ed02889e","receiptsRoot":"0xd320b20cce6e9a0349bdff9dedf15d6c5eaca2cbdaf9f0e6ecfb76231c6d7808","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1a","gasLimit":"0x1c9c380","gasUsed":"0x37227","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x45a7cb0","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x37","gas":"0x47acc","maxFeePerGas":"0x9f2c653","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608034606f57601f61033538819003918201601f19168301916001600160401b03831184841017607357808492602094604052833981010312606f57516001600160a01b03811690819003606f575f80546001600160a01b0319169190911790556040516102ad90816100888239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806306045a911461005a5763bd90df701461002f575f80fd5b34610056575f366003190112610056575f546040516001600160a01b039091168152602090f35b5f80fd5b3461005657610100366003190112610056576064356bffffffffffffffffffffffff1981168091036100565760a43567ffffffffffffffff81116100565736602382011215610056578060040135906100b28261025b565b916100c06040519384610225565b8083526020830191366024838301011161005657815f9260246020930185378401015260e4356001600160a01b0381169390849003610056575f9361018b610144869560018060a01b038754169560405194859260208401976306045a9160e01b8952600435602486015260243560448601526044356064860152608485015260843560a485015261010060c4850152518092816101248601528585015e8884838501015260c43560e4840152610104830152601f801991011681010301601f198101835282610225565b51915afa3d1561021d573d906101a08261025b565b916101ae6040519384610225565b82523d5f602084013e5b156101e357602081805181010312610056576020015180151580910361005657602090604051908152f35b60405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b6044820152606490fd5b6060906101b8565b90601f8019910116810190811067ffffffffffffffff82111761024757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161024757601f01601f19166020019056fea2646970667358221220911b56055980795aa4b8f8b72ea4e2298214c4b37162aa576fadfa991ca0846364736f6c634300081b0033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c","r":"0xea0c4c8f6a3923b1397f04a3dd291c2c39997adc1d2f477ecc4d4dc473cefc13","s":"0x650f769ffaeeba4c2b412d631d222aeba6c565c1ea847205ba191e94d153079d","yParity":"0x1","v":"0x1","hash":"0x5685356c6cf2a01b5e28c51d2742e38a6f40cf0673008775ab648fdc3ce4216b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xe2cc5ca9fa3487c496989f0346a8a2665442a7e212a54e45e84286251e1550bb","transactionsRoot":"0x3372c01818e9245ab810af1f59cb4d0cc8989177cfc5342ad3314a826a7a1a5a","receiptsRoot":"0xe4d9f87c2251df5fabdf6908a74e34cbcda0ff6a3fed0c6876a8b0257c193481","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x10","gasLimit":"0x1c9c380","gasUsed":"0x16fb3","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xab1a7b5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x13","gas":"0x219c2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x9e233353b3a57f549b17d147397a126b4709af4f202af934295fa111a4cd0b65","s":"0x6d8fa2e99e9e8bea7f8d4c060cb88af7c7e0a09c59d6ba15c54aba0d31738d5f","yParity":"0x0","v":"0x0","hash":"0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2015783bbb64310c7dbabb78421376693653582b46bbf7d9e43480fcec17f2fc","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x2a3f119a64ad30fddcb0b5c0854fb7b429f82cf4f3512dea27ebcb4b5f1f68ed","transactionsRoot":"0x4569f0e8632f3e7750bb33dfb425f3641a746d041bc8a6367f5df4180e1dac91","receiptsRoot":"0x6a7b5b50d51a1401e565352fe0419ce6fe64e44087d3cc5b2c7c2b625b7879ee","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000008000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0x64b4f","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x34316549","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x21","gas":"0x82eb3","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608080604052346059575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361060b908161005e8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163204e1c7a1461045057508063715018a6146103f95780637eff275e146103675780638da5cb5b146103405780639623609d1461024257806399a88ec4146101ad578063f2fde38b146100e75763f3b7dead14610076575f80fd5b346100e45760203660031901126100e457808060046001600160a01b0361009b6104b2565b6040516303e1469160e61b815291165afa6100b4610530565b90156100e25780516020916001600160a01b03916100d991908101840190840161055f565b16604051908152f35b505b80fd5b50346100e45760203660031901126100e4576101016104b2565b61010961057e565b6001600160a01b031680156101595781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346100e45760403660031901126100e457806101c86104b2565b6101d06104c8565b906101d961057e565b6001600160a01b031690813b1561023e57604051631b2ce7f360e11b81526001600160a01b0390911660048201529082908290602490829084905af18015610233576102225750f35b8161022c916104de565b6100e45780f35b6040513d84823e3d90fd5b5050fd5b5060603660031901126100e457806102586104b2565b6102606104c8565b6044359167ffffffffffffffff831161033b573660238401121561033b5782600401359061028d82610514565b9161029b60405193846104de565b80835260208301943660248383010111610337578187926024602093018837840101526102c661057e565b6001600160a01b0316803b15610333578492606460405180968195829463278f794360e11b845260018060a01b03166004840152604060248401525180918160448501528484015e8181018301879052601f01601f1916810103019134905af18015610233576102225750f35b8480fd5b8680fd5b505050fd5b50346100e457806003193601126100e457546040516001600160a01b039091168152602090f35b50346103f55760403660031901126103f5576103816104b2565b6103896104c8565b9061039261057e565b6001600160a01b031690813b156103f5576040516308f2839760e41b81526001600160a01b039091166004820152905f908290602490829084905af180156103ea576103dc575080f35b6103e891505f906104de565b005b6040513d5f823e3d90fd5b5f80fd5b346103f5575f3660031901126103f55761041161057e565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346103f55760203660031901126103f5575f9081906004906001600160a01b036104786104b2565b635c60da1b60e01b8352165afa61048d610530565b90156103f55780516020916001600160a01b03916100d991908101840190840161055f565b600435906001600160a01b03821682036103f557565b602435906001600160a01b03821682036103f557565b90601f8019910116810190811067ffffffffffffffff82111761050057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161050057601f01601f191660200190565b3d1561055a573d9061054182610514565b9161054f60405193846104de565b82523d5f602084013e565b606090565b908160209103126103f557516001600160a01b03811681036103f55790565b5f546001600160a01b0316330361059157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220da783ab89c5c287c74b7661204a758c01ff9259a5a2e0c6e9f8f2eefdc4105bf64736f6c634300081b0033","r":"0x9d3574ae69c1c2de0c34196f0622a9fc2364a16963f25f4a7d4221a056d23587","s":"0x60a08fd16bc7c6d94893f2cefa7269c4f0dcc72d69cb0e538e245ac3572e1889","yParity":"0x1","v":"0x1","hash":"0x185c1b4b5f51a6c7b11234027bc275a8e916319d36384e586789f5ae7864c11d"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x5fdceab7dcbffb6a1b885ef6eee71a2b836cc42598f27fe46a283b2ae99f1dc5","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x00673777adb4e085c41349156b1396b6d18595245358d803a7d36752432b4471","transactionsRoot":"0x1653df3985200dde09d0f75bffd13636eeef7f7f5d4f0fb33829950311dbc1f5","receiptsRoot":"0xfea3145bc595057dbf9fb13869c55d5351ea2676882f1a5ea654f01786a862bd","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0x3693c","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x283a0960","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x23","gas":"0x46f34","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60808060405234601557610314908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081632702747d146100b157508063793e1c8e1461009557637be6aa6b1461003d575f80fd5b346100915760203660031901126100915761008d61008161005c61010a565b60405163e481af9d60e01b6020820152600481529061007c602483610162565b610198565b60405191829182610120565b0390f35b5f80fd5b34610091575f36600319011261009157602060405161dead8152f35b34610091576040366003190112610091576100ca61010a565b906024356001600160a01b03811691908290036100915761008d92610081926333cfb7b760e01b602084015260248301526024825261007c604483610162565b600435906001600160a01b038216820361009157565b60206040818301928281528451809452019201905f5b8181106101435750505090565b82516001600160a01b0316845260209384019390920191600101610136565b90601f8019910116810190811067ffffffffffffffff82111761018457604052565b634e487b7160e01b5f52604160045260245ffd5b5f918291602082519201905afa3d156102d6573d9067ffffffffffffffff821161018457604051916101d4601f8201601f191660200184610162565b82523d5f602084013e5b806102cc575b1561028d5780518101906020818184019303126100915760208101519067ffffffffffffffff8211610091570181603f820112156100915760208101519167ffffffffffffffff8311610184578260051b9160208301936102486040519586610162565b84526020840192810160400191821161009157604001915b81831061026d5750505090565b82516001600160a01b038116810361009157815260209283019201610260565b5060405161029c604082610162565b600181526020808201903682378151156102b85761dead905290565b634e487b7160e01b5f52603260045260245ffd5b50805115156101e4565b6060906101de56fea264697066735822122076ca2349a6e41fd590991eccd3f6a0b9335745993e7c7a70c835b28e908b43eb64736f6c634300081b0033","r":"0x90ae2f950af77cfc19a6658a00a14754af1ff958f3dcf98925880eb203759e49","s":"0x5f7e47cf1e6b6a0a29fcd4ea1280a0633cc7eca6f99b5bc380c8530e59db8c8e","yParity":"0x1","v":"0x1","hash":"0xd34e15542e0dbc47e49042365fc5a8d2e4e5f8568f65f77fbdc00c4f623c3649"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xeea0cf337f58440d64dde0356dd4ee7b4f65db83b2c7b3bdeb917eca4d7e19cb","transactionsRoot":"0x003cf6847d199fc3a0a7bcc16fe99b5729696eb6e600887622bdcb1fe8555159","receiptsRoot":"0x7d94aad6acf03e3a33f2388fd3aa1536fb20a3e37b2d5c4fb8a9c4c8f880041e","logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x45cdf","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x345de6be","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gas":"0x5abee","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xf03f02f23fb83bbf12c56b7acb7677870073673fe17e05dabbb4de8cfe15d9c","s":"0x72c7ef4fc448b5c732204282a0bd53208e8fb3b5bb9018c9388bc0dab8cc799","yParity":"0x0","v":"0x0","hash":"0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x253747ff4999586476c876609f56ca75dadb7d488051a7b7061022dee57c6478","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x2bd69fddae46ee1dc99cba683954fcd17eabb9eef6c2070d4d77a894525edeef","transactionsRoot":"0x66f7336bacb8c94485b648fd24917a604cbbd0181d3f551960fdf90c1ec0011d","receiptsRoot":"0x753f8af4e554d613885268c282be52ddec5e5b706ce118a9ece31763f272acda","logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000400000000000000000000000000020000000000400100000800000000000000000000000000000000400000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000400002000000000000000000000000001000000000020000000208000000000040000040000002000000000000000000020000000000200000000000000000000000000000000000000000000000000002000","difficulty":"0x0","number":"0x21","gasLimit":"0x1c9c380","gasUsed":"0x49432","timestamp":"0x68b895df","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1c9bbe8","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3e","gas":"0x5f3da","maxFeePerGas":"0x49a5425","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60806040526103ca803803806100148161024f565b92833981019060408183031261024b578051916001600160a01b0383169182840361024b576020810151906001600160401b03821161024b57019181601f8401121561024b57825161006d61006882610288565b61024f565b9381855260208501936020838301011161024b57815f926020809301865e85010152833b156101f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906101e9575b610109575b60405160cb90816102ff8239f35b610113606061024f565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561019557610184935f92839251915af43d1561018d573d9061017561006883610288565b9182523d5f602084013e6102a3565b505f80806100fb565b6060906102a3565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f6100f6565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027457604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161027457601f01601f191660200190565b909190156102af575090565b8151156102bf5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b00330000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4f28c3e3700000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000000000000000000000000000000000000000000ff00000000000000000000000000000000000000000000000000000000000000ff4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c9700a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b00000000000000000000000000000000000000000000000000000000","r":"0xc5b34a113345ceb7b9ca345cbeba089bba99af51bbef99a87fe9f9fce2bad87b","s":"0x28bfced406ea26566406d2e901f61cc19b290979a3e807a5f95361b683f1fa83","yParity":"0x0","v":"0x0","hash":"0xafa57a651737a8c9b9ee0dd946df3783e6898d9b08a0bf42e7ef7848e7be1419"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbd09368e8ecc4c96fc1760e7677be02dd27c0c58aa739eaf9244b16347239c50","transactionsRoot":"0x02ea02feae1c7c080f2d1325ea0afc7b27dc67ead8cf7156cc8394674bc9a042","receiptsRoot":"0xa846cf60ed497420ed2569067e2280aa70704a8e2abd2ee3e47d6fe6603a5f6a","logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000","difficulty":"0x0","number":"0xc","gasLimit":"0x1c9c380","gasUsed":"0x3a1ea5","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xfa331d2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xd","gas":"0x31b28a","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x615e45fdd1e541f669ac74f9f28f695014444e83e50031bb026e0ce9a19927e3","s":"0x46c9a9fb5a4606d9dd995ee097ee7c75d8fbaffed22c3ec96b95414fb102e237","yParity":"0x1","v":"0x1","hash":"0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xe","gas":"0x19dbb2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xb95b51d92cbdc531a0cef68b4df15a21ffec7599acf3435df22f8129ca117db6","s":"0x1419604921d9b98927b52ce4ef8ce91e497541de3c79b305323ceb2074815cbf","yParity":"0x0","v":"0x0","hash":"0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x37977e14f043d7c0313bdf337e8ff324b3028017795da6286bacf0c59dc9ffa2","transactionsRoot":"0x70477c0d59fabbb248f7e17646c3d5a328348dbc15d4428106abe2084f1002a6","receiptsRoot":"0x205ca2480444d24376d9ba2e6e577a68de995c60a2f8f5102510380aa0c61c28","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1554fde5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x9","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x85b7e3b3941d20b6d399fead20007319620283869df3674a6faad28ab0f3a1e4","s":"0x5960ddb83a4133431b104428382259ffcbf973a2a13a496aa45a330255258995","yParity":"0x0","v":"0x0","hash":"0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2aa8e0c25e9b38ee84f7973b0da1a18a38f302fe1001c2a37e8b7fb36b956ecb","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xdc068174a76edb4fcc13a69fae0bbb92fbacca91027ac23883f707057598a5f9","transactionsRoot":"0x2ced456c2f5622e60c3b211a00bac23d6678e306b89669ae9743307efc497c17","receiptsRoot":"0x3c35e6e82d8b8a97d4dd2ecaf24a00236189f1275cc74b652d8b3a3dc8666eef","logsBloom":"0x00002000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000008000002000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xf","gasLimit":"0x1c9c380","gasUsed":"0x9772","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x10c4f252","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2c","gas":"0xdd7c","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x99a88ec4000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","r":"0x21b6294b01900ee8b7c092784141f2d6ce7bd62b5e3e8fd95c00ce1a71dfadd","s":"0x77f8f52800eb9bd9297580820760755580313f9698a78f28df89059259469c30","yParity":"0x0","v":"0x0","hash":"0x2eec617e8e4ab4a4f7b3a884212cc300ad35c95305a8f3e676bbc8db7df2a353"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd49cb1e6c4d63abe3eea23ee8214311ec5c783fb0c1ae69c27b84516c3d7d689","transactionsRoot":"0xd3d99613a4add2901dede645f3670036418ee0e11a422d217cd6e902720de8dd","receiptsRoot":"0x2fe61838dff500688c03ba0736cc804e62904b8a776a45fe42cca7e82c23c3b1","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x1a","gasLimit":"0x1c9c380","gasUsed":"0x130b8","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e800d3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1f","gas":"0x13c46","maxFeePerGas":"0x6a42941","maxPriorityFeePerGas":"0x1","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","value":"0x0","accessList":[],"input":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","r":"0x27e0a78db3f7be6c0687bf6bc80939f2e6134a353eb044328ff0b40ab6e8791","s":"0x66db0351bc1a675318695fa6c86cd35c73cf98b013aa4d5330ce52763e41d7e1","yParity":"0x1","v":"0x1","hash":"0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68b88db4","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xb4086485440798e64843ad74485184e273d0a29b8eb6c73e06c5a49d8aefdca3","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x92b3ecacdd402870311f05f80182ca3c5e2cdae18e36059016c38e4c66d58f02","transactionsRoot":"0xb9c9947c60d8a77173a1da3cd4b1e83edd1bc7ac898f0d64da58eacea8fc3c48","receiptsRoot":"0x9d695a6f4fac6d6d4ee873a3ecc18e797059f88a4488bcdbfb4a29a3d16443b1","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000800000000000002000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000400000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000020000000000000","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0x7f51d","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1f04769a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x25","gas":"0xa583f","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xb3a2fa3d998f7ebd111d06d1cfdc03e4f7d6db31cd19e1de2debf87cba0fdc0","s":"0x4f704012d4f8b7075a6772bb758313010fc0244baaeb625b97989d6720865177","yParity":"0x0","v":"0x0","hash":"0x3c60e70d37b00e7472369f59ac1d4e3c04e59162f74a173588c482670fbe8652"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x763cffee8611f05215c9e336f0d206fe2caeaa5031b93dac472ed701a1d274da","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x68e405e0274fbfe1cfd402c0d05df870a64de19986ce28cddc4e1a13fb6a8c85","transactionsRoot":"0x4f2a27837a991f45fb739b1375714257a37b8ccf12002ceeeb2699d7419c7e1d","receiptsRoot":"0x35c7afa35197287a3144a3243a823907469cdc12e364d7e9ae4bb7ace8a482df","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xe","gasLimit":"0x1c9c380","gasUsed":"0x26a7a9","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x12b6a495","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2b","gas":"0x32405b","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60c0346100cd57601f612db538819003918201601f19168301916001600160401b038311848410176100d15780849260409485528339810103126100cd5780516001600160a01b03811691908290036100cd5760200151906001600160a01b03821682036100cd5760a052608052604051612ccf90816100e682396080518181816103ec0152611fa7015260a0518181816101b8015281816105390152818161065c0152818161078101528181610c3201528181610c7801528181610e310152818161130901526115700152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630491b41c1461187b57508063087324611461181e5780631f9b74e0146117b857806320b66298146114ff57806325504777146112f15780632cd95940146111f55780633ca5a5f5146111c35780634bd26e09146111845780635401ed271461115c5780635e5a67751461113a5780635f1f2d7714610da157806366acfefe14610c615780636d14a98714610c1d5780637c17234714610c0357806381c07502146109405780639f3ccf65146108e7578063ac6bfb0314610899578063adc804da14610831578063b6904b78146107f1578063bc9a40c31461074a578063bd29b8cd14610623578063c46778a5146105e9578063c601527d146104eb578063c8294c56146104a0578063d5eccc0514610442578063dd9846b91461041b578063df5cf723146103d7578063f2be94ae14610368578063f851e1981461030a578063fa28c627146102b75763ff694a7714610171575f80fd5b346102b35760603660031901126102b35761018a6118a9565b610192611a52565b906044356001600160401b0381116102b3576101b2903690600401611a68565b6101e6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b6101fe8260ff165f52600160205260405f2054151590565b6102505760ff9261021261021892846125cf565b8261256c565b165f52600160205261024e60405f2060405190610234826119bd565b63ffffffff431682525f60208301525f6040830152611e93565b005b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608490fd5b5f80fd5b346102b35760206001600160601b036102fc6102f66102d536611b0d565b90825f949394526002875260405f2060ff82165f52875260405f2093612acb565b906118c9565b505460401c16604051908152f35b346102b35760403660031901126102b35760606103306103286118b9565b600435611df3565b61036660405180926001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565bf35b346102b35760803660031901126102b35760206001600160601b03604061038d6118a9565b610395611a3f565b906044355f526002855260ff835f2091165f5284526103cc6103c56103bf845f20606435906118c9565b50611d51565b9182612964565b015116604051908152f35b346102b3575f3660031901126102b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102b357602061043461042e36611b0d565b91612acb565b63ffffffff60405191168152f35b346102b35760203660031901126102b35760ff61045d6118a9565b165f90815260016020526040902080545f19810190811161048c576102fc6001600160601b03916020936118c9565b634e487b7160e01b5f52601160045260245ffd5b346102b35760603660031901126102b35760206001600160601b0360406104c56118a9565b60ff6104cf611a3f565b91165f52600184526103cc6103c56103bf604435855f206118c9565b346102b35760403660031901126102b3576105046118a9565b6024356001600160401b0381116102b357610523903690600401611a68565b604051638da5cb5b60e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9283156105de5761024e9361058a915f916105af575b506001600160a01b03163314611bc3565b6105aa6105a58260ff165f52600160205260405f2054151590565b611b3e565b6125cf565b6105d1915060203d6020116105d7575b6105c98183611a07565b810190611ba4565b85610579565b503d6105bf565b6040513d5f823e3d90fd5b346102b35760203660031901126102b35760ff6106046118a9565b165f525f60205260206001600160601b0360405f205416604051908152f35b346102b35760403660031901126102b3576004356024356001600160401b0381116102b35761065690369060040161190e565b61068a337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b5f5b81811061069557005b6106a0818385611d31565b3560f81c906106bd8260ff165f52600160205260405f2054151590565b156106df576106d8826106d260019488612146565b90612497565b500161068c565b60405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608490fd5b346102b35760403660031901126102b3576107636118a9565b61076b611a52565b604051638da5cb5b60e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9283156105de5761024e936107d1915f916105af57506001600160a01b03163314611bc3565b6107ec6105a58260ff165f52600160205260405f2054151590565b61256c565b346102b35760403660031901126102b35760ff61080c6118a9565b610814611d98565b50165f52600160205260606103306103bf60243560405f206118c9565b346102b35760403660031901126102b35760ff61084c6118a9565b610854611db6565b50165f5260036020526040610876610870602435835f206118c9565b50611dce565b6001600160601b03602083519260018060a01b0381511684520151166020820152f35b346102b35760603660031901126102b3576108b26118a9565b6108ba611d98565b506024355f52600260205260ff60405f2091165f5260205260606103306103bf60405f20604435906118c9565b346102b35760403660031901126102b3576109006118a9565b60ff60243591165f52600460205260405f2080548210156102b357602091610927916118c9565b905460405160039290921b1c6001600160a01b03168152f35b346102b35760403660031901126102b35760043563ffffffff81168091036102b3576024356001600160401b0381116102b35761098190369060040161190e565b9061098b82611a28565b926109996040519485611a07565b8284526109a583611a28565b602085019390601f19013685375f5b818110610a05578486604051918291602083019060208452518091526040830191905f5b8181106109e6575050500390f35b825163ffffffff168452859450602093840193909201916001016109d8565b610a10818386611d31565b3560f81c5f8181526001602052604090205415610b8957805f52600160205260405f20805415610b75575f528363ffffffff60205f20541611610ae457805f52600160205260405f20545f5b818110610a6f575b5050506001016109b4565b825f52600160205260405f20610a858284611d8b565b5f19810190811161048c57610aa063ffffffff9189936118c9565b5054161115610ab157600101610a5c565b90610abc9250611d8b565b5f1981019190821161048c5763ffffffff60019216610adb8289611d3d565b52908780610a64565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a490fd5b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a490fd5b346102b3575f3660031901126102b3576020604051818152f35b346102b3575f3660031901126102b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102b357610c6f3661193b565b929091610ca6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b5f935f5b818110610cc5576040516001600160c01b0387168152602090f35b610cd0818387611d31565b3560f81c90610ced8260ff165f52600160205260405f2054151590565b15610d3657610d1382610d0287600195611f1d565b15610d1a575b6106d29082886122ea565b5001610caa565b5083811b60c085901b859003908116991698909817975f610d08565b60405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608490fd5b346102b35760403660031901126102b357610dba6118a9565b602435906001600160401b0382116102b357366023830112156102b357816004013591610de683611a28565b92610df46040519485611a07565b8084526024602085019160051b830101913683116102b357602401905b82821061112a575050604051638da5cb5b60e01b815290506020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105de57610e7c915f9161110b57506001600160a01b03163314611bc3565b610e976105a58260ff165f52600160205260405f2054151590565b81519081156110a05760ff1691825f52600360205260405f20835f52600460205260405f20935f5b848110610ec857005b817f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f76020610f00610ef98589611d3d565b51876118c9565b50546040516001600160a01b039091168152a2817f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a756040610f44610ef98589611d3d565b505481516001600160a01b0390911681525f6020820152a282545f19810190811161048c57610f7390846118c9565b50610f88610f818387611d3d565b51856118c9565b61105f57818103611072575b50508254801561104b575f1901610fab81856118c9565b61105f575f9055835585545f19810190811161048c57610fce61101891886118c9565b905460039190911b1c6001600160a01b0316610ff4610fed8488611d3d565b51896118c9565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b855490811561104b576001915f190161103181896118c9565b815490858060a01b039060031b1b19169055875501610ebf565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f525f60045260245ffd5b815481546001600160a01b039091166001600160a01b03199182168117835592541690911790558680610f94565b60405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608490fd5b611124915060203d6020116105d7576105c98183611a07565b84610579565b8135815260209182019101610e11565b346102b3575f3660031901126102b3576020604051670de0b6b3a76400008152f35b346102b35760403660031901126102b35760206001600160601b0360406103cc6103286118b9565b346102b35760403660031901126102b35761119d6118b9565b6004355f52600260205260ff60405f2091165f52602052602060405f2054604051908152f35b346102b35760203660031901126102b35760ff6111de6118a9565b165f526003602052602060405f2054604051908152f35b346102b35760403660031901126102b35761120e6118b9565b6004355f52600260205260ff60405f2091165f5260205260405f2080549061123582611a28565b916112436040519384611a07565b8083526020830180925f5260205f205f915b8383106112d4578486604051918291602083019060208452518091526040830191905f5b818110611287575050500390f35b9193509160206060826112c660019488516001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565b019401910191849392611279565b6001602081926112e385611d51565b815201920192019190611255565b346102b3576112ff3661193b565b91929190611337337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b61134082611cff565b9261134a83611cff565b925f5b818110611382576113708661137e87604051938493604085526040850190611981565b908382036020850152611981565b0390f35b61138d818386611d31565b3560f81c906113aa8260ff165f52600160205260405f2054151590565b1561149c576113b98483611f1d565b9290921561140b5782816113d36001956113ef948d6122ea565b916001600160601b036113e6868d611d3d565b91169052612497565b6001600160601b036114018389611d3d565b911690520161134d565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a490fd5b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b346102b35760603660031901126102b3576115186118a9565b6024356001600160401b0381116102b3576115379036906004016118de565b916044356001600160401b0381116102b3576115579036906004016118de565b604051638da5cb5b60e01b8152919290916020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105de576115bb915f9161179957506001600160a01b03163314611bc3565b6115d66105a58260ff165f52600160205260405f2054151590565b841561172f578482036116c45760ff1691825f52600360205260405f20935f5b8681106115ff57005b806116516116186116136001948888611c54565b611c64565b61162d611626848c88611c54565b358a6118c9565b5080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b857f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75611681611626848c88611c54565b50848060a01b03905416611699611613858a8a611c54565b604080516001600160a01b039390931683526001600160601b0391909116602083015290a2016115f6565b60405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608490fd5b608460405162461bcd60e51b815260206004820152604060248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152fd5b6117b2915060203d6020116105d7576105c98183611a07565b87610579565b346102b35760403660031901126102b3576117d16118a9565b602435906001600160a01b03821682036102b357602091816118076105a561180c9460ff165f52600160205260405f2054151590565b611f1d565b506001600160601b0360405191168152f35b346102b35760403660031901126102b3576118376118a9565b60ff60243591165f52600360205260405f2080548210156102b35760409161185e916118c9565b505481516001600160a01b038216815260a09190911c6020820152f35b346102b35760203660031901126102b35760209060ff6118996118a9565b165f526001825260405f20548152f35b6004359060ff821682036102b357565b6024359060ff821682036102b357565b8054821015610b75575f5260205f2001905f90565b9181601f840112156102b3578235916001600160401b0383116102b3576020808501948460051b0101116102b357565b9181601f840112156102b3578235916001600160401b0383116102b357602083818601950101116102b357565b60606003198201126102b3576004356001600160a01b03811681036102b3579160243591604435906001600160401b0382116102b35761197d9160040161190e565b9091565b90602080835192838152019201905f5b81811061199e5750505090565b82516001600160601b0316845260209384019390920191600101611991565b606081019081106001600160401b038211176119d857604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176119d857604052565b90601f801991011681019081106001600160401b038211176119d857604052565b6001600160401b0381116119d85760051b60200190565b6024359063ffffffff821682036102b357565b602435906001600160601b03821682036102b357565b81601f820112156102b357803590611a7f82611a28565b92611a8d6040519485611a07565b82845260208085019360061b830101918183116102b357602001925b828410611ab7575050505090565b6040848303126102b35760405190611ace826119ec565b84356001600160a01b03811681036102b35782526020850135906001600160601b03821682036102b35782602092836040950152815201930192611aa9565b60609060031901126102b3576004359060243560ff811681036102b3579060443563ffffffff811681036102b35790565b15611b4557565b60405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608490fd5b908160209103126102b357516001600160a01b03811681036102b35790565b15611bca57565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a490fd5b9190811015610b755760051b0190565b356001600160601b03811681036102b35790565b15611c7f57565b60405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a490fd5b90611d0982611a28565b611d166040519182611a07565b8281528092611d27601f1991611a28565b0190602036910137565b90821015610b75570190565b8051821015610b755760209160051b010190565b90604051611d5e816119bd565b60406001600160601b0382945463ffffffff8116845263ffffffff8160201c166020850152821c16910152565b9190820391821161048c57565b60405190611da5826119bd565b5f6040838281528260208201520152565b60405190611dc3826119ec565b5f6020838281520152565b90604051611ddb816119ec565b91546001600160a01b038116835260a01c6020830152565b90611dfc611d98565b50815f52600260205260405f2060ff82165f5260205260405f205490611e20611d98565b9282611e2c5750505090565b909192505f52600260205260ff60405f2091165f5260205260405f205f19820191821161048c57611e60916103bf916118c9565b90565b906bffffffffffffffffffffffff60401b82549160401b16906bffffffffffffffffffffffff60401b1916179055565b8054600160401b8110156119d857611eb0916001820181556118c9565b61105f578151815460208085015167ffffffff00000000911b1663ffffffff90921667ffffffffffffffff1990911617178155611efb916001600160601b0390604001511690611e63565b565b906001600160601b03809116911601906001600160601b03821161048c57565b919060ff5f931690815f52600360205260405f205490604051611f3f816119ec565b5f8082526020918201819052848152600480835260408083208151639004134760e01b81526001600160a01b03909616928601929092526024850152805460448501819052908252918120839260648401925b81811061212457505f939283900391508290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105de575f91612094575b505f5b82811061200f575050505f525f6020526001600160601b0360405f2054166001600160601b038316101590565b835f5260036020526120276108708260405f206118c9565b6120318284611d3d565b51612040575b50600101611fe2565b6001600160601b03602061205784869a959a611d3d565b51920151169081810291818304149015171561048c576001916001600160601b03670de0b6b3a764000061208d93041690611efd565b9590612037565b90503d805f833e6120a58183611a07565b8101906020818303126102b3578051906001600160401b0382116102b357019080601f830112156102b35781516120db81611a28565b926120e96040519485611a07565b81845260208085019260051b8201019283116102b357602001905b828210612114575050505f611fdf565b8151815260209182019101612104565b82546001600160a01b0316845285945060209093019260019283019201611f92565b5f90805f52600260205260405f2060ff84165f5260205260405f205480155f146121ed57505f516020612c5a5f395f51905f5260406001600160601b0394835f526002602052815f2060ff82165f526020526121c3825f208351906121aa826119bd565b63ffffffff431682525f60208301525f85830152611e93565b60ff8251911681525f6020820152a2165f81810391125f82128116905f83139015161761048c5790565b908092505f52600260205260405f2060ff84165f5260205260405f20905f19810190811161048c5761221e916118c9565b50908154916001600160601b038360401c169283156122e1576001600160601b03945f516020612c5a5f395f51905f529260409263ffffffff438116911681036122835750805473ffffffffffffffffffffffff0000000000000000191690556121c3565b815467ffffffff000000001916602082901b67ffffffff0000000016179091556122dc90855f526002602052835f2060ff84165f52602052835f208451916122ca836119bd565b82525f60208301525f85830152611e93565b6121c3565b50505050505f90565b9190915f90805f52600260205260405f2060ff85165f5260205260405f205480155f1461239957505f516020612c5a5f395f51905f5260406001600160601b038095845f526002602052825f2060ff89165f5260205261236d835f20845190612352826119bd565b63ffffffff431682525f602083015284841686830152611e93565b60ff8351981688521695866020820152a216905f828203921281831281169183139015161761048c5790565b908092505f52600260205260405f2060ff85165f5260205260405f20905f19810190811161048c576123ca916118c9565b50908154916001600160601b038360401c16926001600160601b0385169081851461248c57855f516020612c5a5f395f51905f52936001600160601b039763ffffffff6040958a9582431692839116145f1461243057505061242b91611e63565b61236d565b835467ffffffff000000001916602083901b67ffffffff00000000161790935561242b92909150875f526002602052855f2060ff8c165f52602052855f209086519261247b846119bd565b83525f602084015286830152611e93565b505050505050505f90565b60ff165f81815260016020526040902080549192915f19810190811161048c576124c0916118c9565b509080156125595763ffffffff6124e58354926001600160601b038460401c16612c10565b938492438316921682036124fe575050611e6091611e63565b835467ffffffff000000001916602083901b67ffffffff000000001617909355611e60929091505f52600160205260405f206040519161253d836119bd565b82525f60208301526001600160601b0384166040830152611e93565b506001600160601b0391505460401c1690565b602060ff7f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf921692835f525f82526001600160601b0360405f20911690816001600160601b0319825416179055604051908152a2565b9190820180921161048c57565b81511561290c5760ff8251911691825f52600360205260405f20549260206125f784866125c2565b116128a6575f925b80841061260d575050505050565b90919293945f5b61261e86886125c2565b8110156126ba57835f52600360205261263a8160405f206118c9565b50546001600160a01b03908116906126528888611d3d565b5151161461266257600101612614565b60405162461bcd60e51b815260206004820152603d60248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608490fd5b509493929190926001600160601b0360206126d58386611d3d565b510151161561283f57815f52600360205260405f206126f48285611d3d565b51908054600160401b8110156119d857612713916001820181556118c9565b61105f5781516020929092015160a01b6001600160a01b0319166001600160a01b03929092169190911790555f828152600460205260409020906001600160a01b0361275f8286611d3d565b515116825490600160401b8210156119d857610ff48260019586612785950181556118c9565b827f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54046020848060a01b036127b98589611d3d565b515116604051908152a2827f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838060a01b036127f58488611d3d565b5151166001600160601b03602061280c868a611d3d565b510151604080516001600160a01b0394909416845291166001600160601b03166020830152819081010390a201926125ff565b60405162461bcd60e51b815260206004820152604660248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a490fd5b60405162461bcd60e51b815260206004820152604560248201525f516020612c7a5f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a490fd5b60405162461bcd60e51b815260206004820152603860248201525f516020612c7a5f395f51905f5260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608490fd5b63ffffffff808251169216918210612a41576020015163ffffffff168015918215612a37575b50501561299357565b60405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c490fd5b1090505f8061298a565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a490fd5b929190835f52600260205260405f2060ff82165f5260205260405f2054805b612baf5760405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e490fd5b845f52600260205260405f2060ff83165f5260205260405f205f1982019082821161048c57612be38263ffffffff926118c9565b50541663ffffffff85161015612c035750801561048c575f190180612aea565b63ffffffff169450505050565b905f811215612c4557600160ff1b811461048c576001600160601b0380915f03169116036001600160601b03811161048c5790565b906001600160601b03611e60921690611efd56fe2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220a53322900ef5b7e2b34473ed4ba3daa5d60bde2a416a384fe7e58d170c91dca164736f6c634300081b0033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","r":"0x32ea0420e717a77750aaead6d8299542d819cd6b570a58528f3cfd4fef5f7fa2","s":"0x299c71df0363c94fc3047c3ed711e0170bb255bac8bdb2d45a99405d2810bd75","yParity":"0x1","v":"0x1","hash":"0xf215329f02c3e41b4a012341dc202c8ceccffe857abdf1268a011fd4c4fc0226"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x93a5a9a21983cfb2d0d9849a10d74056e3067fce770de838f00ad793bba3b810","transactionsRoot":"0xe1fc3e4ee15e07d06f46cfa389a0dec77fe9ff6261cdcaaca68a3a4e290a889d","receiptsRoot":"0xa0ffc9b392082d5dbea7889d3584cc1f6b59905563e2a26b7c3f99f007b9f626","logsBloom":"0x00000000000000000000000040000000400004000000000000800000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000001000000000000000000000000040000000040000000000000000104000000000000800000000000000000000000440000000200000002000050000000000410000000000080000000000200800000000000000000000000000000000400000000000000000000000000000000000000040060480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x18","gasLimit":"0x1c9c380","gasUsed":"0xae183","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3c4f79b","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1c","gas":"0xda227","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000","r":"0x68b93d78cde6ac2e94aee15e25eb2dde5876a9bc3c590f1982e4ef9e5d946fc3","s":"0x6b642bea701cf5fed80fc04caf6c2c1dfd03ac53676aa84b3673c875ed58675a","yParity":"0x1","v":"0x1","hash":"0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1d","gas":"0x8b32","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x2e5ac093e1dc518caaf2a9314f613b2ca47e74442103a64e688569a67cd6a90e","s":"0x1c5cec4d49ac2619aa60c91c66c755ed5627efb23581a34d0e7f3e312466596b","yParity":"0x0","v":"0x0","hash":"0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbd5494d2b153b9e294bddf1a234aada9c10f35b7c1c98076433df4167fce2b50","transactionsRoot":"0xc366bd69c20423c6e1759d44e28cb849d1edf6c77bcc7d2656a8f9b055b0c2f3","receiptsRoot":"0x61963e6ecc4c0a12560a30265e9dcab7f3aa4f82f1e8f15484b9b2f6f5ec016e","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x23661d70","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x4","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x195ded3e07fbfe4e085babca622696a5913ddb617299f87284d2bf2cfa9c0de4","s":"0x190a3a6f244b2f888f4ed3a82788243aa5bf35015a6e493726a205cef25a46ee","yParity":"0x1","v":"0x1","hash":"0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68b88d9a","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0e09d19a5de6c5552ea39fae978c1b998a7e0db7a1bc1a539d8f2e150c821cc1","transactionsRoot":"0x0625a40f3dbf197ade683e0dbbb4fa03437560568849e78c55551069bf942cd2","receiptsRoot":"0xd9aea2498f0b4dcc31cce14880a5dc3174000b41efa1db4e9f5e4d18de81648f","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0x11ca7e","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1f256022","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x5","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xd8c2b63d4ea5678df5a3b3c3a54f2f281a0faf34d84c70fe5733edb1fbcf036","s":"0x3a6cb296c36023894ac7b4fac9d23fcd6ce4235af69b8fd797648976aefe1b5","yParity":"0x1","v":"0x1","hash":"0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x6","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xf5cd16c26b469e91443738f252ed0785fe8e07b610c379acbd5129d580f91c2d","s":"0x64f8f9bfd494992228144fe016fb464d257f82a967c68b17803680d5d65057f1","yParity":"0x0","v":"0x0","hash":"0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x557a45ccbf10c0042bc368d5b9e9261ab119730e3d1bd8238ab410ce49ec9d0b","transactionsRoot":"0x51cc111f3930a241e139b909deaca9e061d655c780591e8c320896084262a6af","receiptsRoot":"0x64fcbf1f14419d9cb04b2c392726da6dfbd58f1b0a35ae979e1c88b8f970eeaf","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x131eb","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2df21af9","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gas":"0x18db1","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","r":"0x834692aa575929c82e8cac73f8a76544f72561dca8706328663a96fc88199372","s":"0x67fa29bd66c480e0eea2edc7f189cc2e3982fba6ce4d67184e2471a57eacb219","yParity":"0x0","v":"0x0","hash":"0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x7a55157364d128b593d70dbb7a807a61c3e65377e16161d00635f4778a6f8fea","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xec2cf92775ce53efccc2b0cb00edeee23e2911f37c7e5045c6335081d6e14c1f","transactionsRoot":"0x398f5175cfe92323ce5ea616ba654ccecca82b74a9157a8f9f1e0d935394b4c5","receiptsRoot":"0x96bb8637bb1de6bd112637fa7518da71a0ff09e6ccfeb5fd300705c2dd2d3131","logsBloom":"0x00000000000000000000000000000000400400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000002000000000000000010000000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000020000000000000","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0x7f51d","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2345f75d","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x24","gas":"0xa583f","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xc0ada5424bac876171f812faf9fe9a0378ffcf6833c747193249b8bfe4f8bbd3","s":"0x5584b7b573c59b033ac3058de88bf702b6beaf61cf34c9d87f8c39e0d0089edd","yParity":"0x0","v":"0x0","hash":"0xb5bbb83b59fb20783381782bdb0aa23231bc93b0d7d1367fb32ad0ca979b3ba2"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x266d3dd8903217771ed1ee39602c8a4edc0bedc7ef08635901e1a6794fa2f1d2","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x93d7195ba0b51b6e78ec6a75c7fc623345f1a9873d64236fcdbdef9c947612be","transactionsRoot":"0xb93cdcebd6ef2319ab3aa62b2b119ab41ea90c0750ff70a4fc31b298f27eede1","receiptsRoot":"0x49698dad21f077a7614d8b2f1423c01e99073ac7e0228e9b9a077dd6b82637f2","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0xc5de","timestamp":"0x68b88db5","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e4f5a9a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gas":"0x1114c","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","value":"0x0","accessList":[],"input":"0x8c95ff1e0000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf","r":"0x80809fdbaf93b7a1b16b776d70940f3b60129d34b1c9d554a7620d32af849d96","s":"0x516076d07ebcc22052585309dd3d2eb5731d7db6c8d9e2a3255373c406f5c93","yParity":"0x1","v":"0x1","hash":"0xadf5de66d8fd77344bd236b9ebedc146b7b17d75ee4a7916ec9f12e7b6391ccd"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x05e432e88ad1de880d4c8672827b5841baaac763fc2cf20f19c5c05be733c5cf","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x477541a6bf10e0910255b160cb93f9771dca94dbd61e4bff7478487e3eba6aee","transactionsRoot":"0x2f08809d1e97c8520843304577f44b0e0c20bcbaacc69c301f989a90d551f4c3","receiptsRoot":"0x6318616d0a67080a38a403662b59f1d0b57195a4d8d16a2c8c4c34fd0aa4e5ed","logsBloom":"0x00000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000080000008000000000000000000000000000000000000000","difficulty":"0x0","number":"0xd","gasLimit":"0x1c9c380","gasUsed":"0x9772","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1560ffe6","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2a","gas":"0xdd7c","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x99a88ec400000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137780000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","r":"0x875d57473788309d46d0891152bb9fe872b5357f0616c792afd7fd2de8a294e9","s":"0x785d44f5c4931ce4d4a39643e14a64b7844c86fa0f1e53b906b6810309df21e6","yParity":"0x1","v":"0x1","hash":"0xa7d58bff6570f853c61a687946a0d5f1feec47397457b8ea03e5244ee19fb250"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x97d71a9dab2c1330ac9975b39a4ca6ed81d9b9b008b1974b454eacdc9c994ede","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x1e7810ea65f259cc2c753dc5b28051603eaceefb9fe03072d82189304f9f6182","transactionsRoot":"0x43df66ad0aed5aba5481d1802726b86735690ee9d11162cfc6a1197749ede136","receiptsRoot":"0xafd150d2d79c1b7e6fdf08822eacd9206b3acf78c3e449427260340aa8ef1616","logsBloom":"0x00002000000001000000000040000000400000000000000000800000000000000000000800000000000000000000000080800010000000100800000000000000000080000000008000002400000102000001000400000000000000008000000000000000020000000000008100010800000000000200000000000100000000400400000100000000000000000000000000000000000080000000000000000000000000000000000000004000400400000000000000000000000000000000000000000020480000280000000000041100000000002000000000000000000020000000000000000000000000800000000000000000000000000208100000408000","difficulty":"0x0","number":"0x13","gasLimit":"0x1c9c380","gasUsed":"0x8bba2","timestamp":"0x68b89568","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xa6ce737","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x30","gas":"0xcc59c","maxFeePerGas":"0x5c9eb535","maxPriorityFeePerGas":"0x1","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000264dd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000","r":"0xc6048831ec63f90979fa9b93843bb19f4539af03fca43bbd1fd95db7d1b048a","s":"0x10f2dcc68aac9db002cd835356d50ed064dd15666d6300ef7b37cb36496b4020","yParity":"0x0","v":"0x0","hash":"0x4ced228a778cb1d6cc358af892621e33cfa4fd3810b3df7ba583ccafdf8bba85"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x113d4e2e12c75dc5dc77e3f843b3ff586a577ff4d510da255d76c1cca38c740d","transactionsRoot":"0x183586121fdd4ee59e4e4cb687bc3bdf57997f9a91bccb50fd024bc3ba3b8e7b","receiptsRoot":"0x98dda837c8d132bfd4039aa4e05ee217f7a23497db5619318147ad978615080c","logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000","difficulty":"0x0","number":"0xd","gasLimit":"0x1c9c380","gasUsed":"0x26429f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xe2ddc73","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xf","gas":"0x31bd01","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xea84ded5f15ebb02432f77cbc867341c788f67dcc07253d308f40758b2ab9990","s":"0x3bc80e23acd0633ed2b6c331e1bd886b2d1f0db80c16a2758a6d2c777e953b2c","yParity":"0x0","v":"0x0","hash":"0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x960db369a7ac67dfcc0954df2c18383b284faa3d48d8c27c76d32e76c9a258cb","transactionsRoot":"0x82481245456b137bad6f2b803289e4bce00248adada84bbba209a620c29e2232","receiptsRoot":"0x43306daaaf74614d90df27fd1b2c403355aeebf7671b156295b332d0f81425f4","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000","difficulty":"0x0","number":"0xb","gasLimit":"0x1c9c380","gasUsed":"0x51001f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1102e8f2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xc","gas":"0x694cf5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xa1d60978a7f3d46ba661c5965044d122a7c29b20672c94d9f1579da1cf260c41","s":"0x339452a6f75f726b7d587b429b545a5726159c2c846ff9dc0fd109651983a33c","yParity":"0x0","v":"0x0","hash":"0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x819755d440401992f7d746d3bae845d75c443fab504ea2248b5cb8874ca78eb6","transactionsRoot":"0x8a53916f6a4ee035fca0c8e94b8a64c214db1d8ebf695e29c984f340577fa902","receiptsRoot":"0x43eb13d2729197f55fdb1dbfad7317a2c2bba461bfe6e588921ed0466c8072cc","logsBloom":"0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200","difficulty":"0x0","number":"0x14","gasLimit":"0x1c9c380","gasUsed":"0x1db2b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x64b2945","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x17","gas":"0x2b6ee","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","r":"0xca8b2bef1a770b1d34f66e5f3542eab9c87ec05107a2cb674dc669b39f15251f","s":"0x71a047a195d82893fefe346cdfaa383bf00329de8336ac7db73403ce8e80f075","yParity":"0x1","v":"0x1","hash":"0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b"}},"impersonated_sender":null}],"ommers":[]}],"transactions":[{"info":{"transaction_hash":"0xf215329f02c3e41b4a012341dc202c8ceccffe857abdf1268a011fd4c4fc0226","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60c0346100cd57601f612db538819003918201601f19168301916001600160401b038311848410176100d15780849260409485528339810103126100cd5780516001600160a01b03811691908290036100cd5760200151906001600160a01b03821682036100cd5760a052608052604051612ccf90816100e682396080518181816103ec0152611fa7015260a0518181816101b8015281816105390152818161065c0152818161078101528181610c3201528181610c7801528181610e310152818161130901526115700152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630491b41c1461187b57508063087324611461181e5780631f9b74e0146117b857806320b66298146114ff57806325504777146112f15780632cd95940146111f55780633ca5a5f5146111c35780634bd26e09146111845780635401ed271461115c5780635e5a67751461113a5780635f1f2d7714610da157806366acfefe14610c615780636d14a98714610c1d5780637c17234714610c0357806381c07502146109405780639f3ccf65146108e7578063ac6bfb0314610899578063adc804da14610831578063b6904b78146107f1578063bc9a40c31461074a578063bd29b8cd14610623578063c46778a5146105e9578063c601527d146104eb578063c8294c56146104a0578063d5eccc0514610442578063dd9846b91461041b578063df5cf723146103d7578063f2be94ae14610368578063f851e1981461030a578063fa28c627146102b75763ff694a7714610171575f80fd5b346102b35760603660031901126102b35761018a6118a9565b610192611a52565b906044356001600160401b0381116102b3576101b2903690600401611a68565b6101e6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b6101fe8260ff165f52600160205260405f2054151590565b6102505760ff9261021261021892846125cf565b8261256c565b165f52600160205261024e60405f2060405190610234826119bd565b63ffffffff431682525f60208301525f6040830152611e93565b005b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608490fd5b5f80fd5b346102b35760206001600160601b036102fc6102f66102d536611b0d565b90825f949394526002875260405f2060ff82165f52875260405f2093612acb565b906118c9565b505460401c16604051908152f35b346102b35760403660031901126102b35760606103306103286118b9565b600435611df3565b61036660405180926001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565bf35b346102b35760803660031901126102b35760206001600160601b03604061038d6118a9565b610395611a3f565b906044355f526002855260ff835f2091165f5284526103cc6103c56103bf845f20606435906118c9565b50611d51565b9182612964565b015116604051908152f35b346102b3575f3660031901126102b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102b357602061043461042e36611b0d565b91612acb565b63ffffffff60405191168152f35b346102b35760203660031901126102b35760ff61045d6118a9565b165f90815260016020526040902080545f19810190811161048c576102fc6001600160601b03916020936118c9565b634e487b7160e01b5f52601160045260245ffd5b346102b35760603660031901126102b35760206001600160601b0360406104c56118a9565b60ff6104cf611a3f565b91165f52600184526103cc6103c56103bf604435855f206118c9565b346102b35760403660031901126102b3576105046118a9565b6024356001600160401b0381116102b357610523903690600401611a68565b604051638da5cb5b60e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9283156105de5761024e9361058a915f916105af575b506001600160a01b03163314611bc3565b6105aa6105a58260ff165f52600160205260405f2054151590565b611b3e565b6125cf565b6105d1915060203d6020116105d7575b6105c98183611a07565b810190611ba4565b85610579565b503d6105bf565b6040513d5f823e3d90fd5b346102b35760203660031901126102b35760ff6106046118a9565b165f525f60205260206001600160601b0360405f205416604051908152f35b346102b35760403660031901126102b3576004356024356001600160401b0381116102b35761065690369060040161190e565b61068a337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b5f5b81811061069557005b6106a0818385611d31565b3560f81c906106bd8260ff165f52600160205260405f2054151590565b156106df576106d8826106d260019488612146565b90612497565b500161068c565b60405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608490fd5b346102b35760403660031901126102b3576107636118a9565b61076b611a52565b604051638da5cb5b60e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9283156105de5761024e936107d1915f916105af57506001600160a01b03163314611bc3565b6107ec6105a58260ff165f52600160205260405f2054151590565b61256c565b346102b35760403660031901126102b35760ff61080c6118a9565b610814611d98565b50165f52600160205260606103306103bf60243560405f206118c9565b346102b35760403660031901126102b35760ff61084c6118a9565b610854611db6565b50165f5260036020526040610876610870602435835f206118c9565b50611dce565b6001600160601b03602083519260018060a01b0381511684520151166020820152f35b346102b35760603660031901126102b3576108b26118a9565b6108ba611d98565b506024355f52600260205260ff60405f2091165f5260205260606103306103bf60405f20604435906118c9565b346102b35760403660031901126102b3576109006118a9565b60ff60243591165f52600460205260405f2080548210156102b357602091610927916118c9565b905460405160039290921b1c6001600160a01b03168152f35b346102b35760403660031901126102b35760043563ffffffff81168091036102b3576024356001600160401b0381116102b35761098190369060040161190e565b9061098b82611a28565b926109996040519485611a07565b8284526109a583611a28565b602085019390601f19013685375f5b818110610a05578486604051918291602083019060208452518091526040830191905f5b8181106109e6575050500390f35b825163ffffffff168452859450602093840193909201916001016109d8565b610a10818386611d31565b3560f81c5f8181526001602052604090205415610b8957805f52600160205260405f20805415610b75575f528363ffffffff60205f20541611610ae457805f52600160205260405f20545f5b818110610a6f575b5050506001016109b4565b825f52600160205260405f20610a858284611d8b565b5f19810190811161048c57610aa063ffffffff9189936118c9565b5054161115610ab157600101610a5c565b90610abc9250611d8b565b5f1981019190821161048c5763ffffffff60019216610adb8289611d3d565b52908780610a64565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a490fd5b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a490fd5b346102b3575f3660031901126102b3576020604051818152f35b346102b3575f3660031901126102b3576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102b357610c6f3661193b565b929091610ca6337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b5f935f5b818110610cc5576040516001600160c01b0387168152602090f35b610cd0818387611d31565b3560f81c90610ced8260ff165f52600160205260405f2054151590565b15610d3657610d1382610d0287600195611f1d565b15610d1a575b6106d29082886122ea565b5001610caa565b5083811b60c085901b859003908116991698909817975f610d08565b60405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608490fd5b346102b35760403660031901126102b357610dba6118a9565b602435906001600160401b0382116102b357366023830112156102b357816004013591610de683611a28565b92610df46040519485611a07565b8084526024602085019160051b830101913683116102b357602401905b82821061112a575050604051638da5cb5b60e01b815290506020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105de57610e7c915f9161110b57506001600160a01b03163314611bc3565b610e976105a58260ff165f52600160205260405f2054151590565b81519081156110a05760ff1691825f52600360205260405f20835f52600460205260405f20935f5b848110610ec857005b817f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f76020610f00610ef98589611d3d565b51876118c9565b50546040516001600160a01b039091168152a2817f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a756040610f44610ef98589611d3d565b505481516001600160a01b0390911681525f6020820152a282545f19810190811161048c57610f7390846118c9565b50610f88610f818387611d3d565b51856118c9565b61105f57818103611072575b50508254801561104b575f1901610fab81856118c9565b61105f575f9055835585545f19810190811161048c57610fce61101891886118c9565b905460039190911b1c6001600160a01b0316610ff4610fed8488611d3d565b51896118c9565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b855490811561104b576001915f190161103181896118c9565b815490858060a01b039060031b1b19169055875501610ebf565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f525f60045260245ffd5b815481546001600160a01b039091166001600160a01b03199182168117835592541690911790558680610f94565b60405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608490fd5b611124915060203d6020116105d7576105c98183611a07565b84610579565b8135815260209182019101610e11565b346102b3575f3660031901126102b3576020604051670de0b6b3a76400008152f35b346102b35760403660031901126102b35760206001600160601b0360406103cc6103286118b9565b346102b35760403660031901126102b35761119d6118b9565b6004355f52600260205260ff60405f2091165f52602052602060405f2054604051908152f35b346102b35760203660031901126102b35760ff6111de6118a9565b165f526003602052602060405f2054604051908152f35b346102b35760403660031901126102b35761120e6118b9565b6004355f52600260205260ff60405f2091165f5260205260405f2080549061123582611a28565b916112436040519384611a07565b8083526020830180925f5260205f205f915b8383106112d4578486604051918291602083019060208452518091526040830191905f5b818110611287575050500390f35b9193509160206060826112c660019488516001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565b019401910191849392611279565b6001602081926112e385611d51565b815201920192019190611255565b346102b3576112ff3661193b565b91929190611337337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611c78565b61134082611cff565b9261134a83611cff565b925f5b818110611382576113708661137e87604051938493604085526040850190611981565b908382036020850152611981565b0390f35b61138d818386611d31565b3560f81c906113aa8260ff165f52600160205260405f2054151590565b1561149c576113b98483611f1d565b9290921561140b5782816113d36001956113ef948d6122ea565b916001600160601b036113e6868d611d3d565b91169052612497565b6001600160601b036114018389611d3d565b911690520161134d565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a490fd5b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b346102b35760603660031901126102b3576115186118a9565b6024356001600160401b0381116102b3576115379036906004016118de565b916044356001600160401b0381116102b3576115579036906004016118de565b604051638da5cb5b60e01b8152919290916020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105de576115bb915f9161179957506001600160a01b03163314611bc3565b6115d66105a58260ff165f52600160205260405f2054151590565b841561172f578482036116c45760ff1691825f52600360205260405f20935f5b8681106115ff57005b806116516116186116136001948888611c54565b611c64565b61162d611626848c88611c54565b358a6118c9565b5080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b857f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75611681611626848c88611c54565b50848060a01b03905416611699611613858a8a611c54565b604080516001600160a01b039390931683526001600160601b0391909116602083015290a2016115f6565b60405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608490fd5b608460405162461bcd60e51b815260206004820152604060248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152fd5b6117b2915060203d6020116105d7576105c98183611a07565b87610579565b346102b35760403660031901126102b3576117d16118a9565b602435906001600160a01b03821682036102b357602091816118076105a561180c9460ff165f52600160205260405f2054151590565b611f1d565b506001600160601b0360405191168152f35b346102b35760403660031901126102b3576118376118a9565b60ff60243591165f52600360205260405f2080548210156102b35760409161185e916118c9565b505481516001600160a01b038216815260a09190911c6020820152f35b346102b35760203660031901126102b35760209060ff6118996118a9565b165f526001825260405f20548152f35b6004359060ff821682036102b357565b6024359060ff821682036102b357565b8054821015610b75575f5260205f2001905f90565b9181601f840112156102b3578235916001600160401b0383116102b3576020808501948460051b0101116102b357565b9181601f840112156102b3578235916001600160401b0383116102b357602083818601950101116102b357565b60606003198201126102b3576004356001600160a01b03811681036102b3579160243591604435906001600160401b0382116102b35761197d9160040161190e565b9091565b90602080835192838152019201905f5b81811061199e5750505090565b82516001600160601b0316845260209384019390920191600101611991565b606081019081106001600160401b038211176119d857604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176119d857604052565b90601f801991011681019081106001600160401b038211176119d857604052565b6001600160401b0381116119d85760051b60200190565b6024359063ffffffff821682036102b357565b602435906001600160601b03821682036102b357565b81601f820112156102b357803590611a7f82611a28565b92611a8d6040519485611a07565b82845260208085019360061b830101918183116102b357602001925b828410611ab7575050505090565b6040848303126102b35760405190611ace826119ec565b84356001600160a01b03811681036102b35782526020850135906001600160601b03821682036102b35782602092836040950152815201930192611aa9565b60609060031901126102b3576004359060243560ff811681036102b3579060443563ffffffff811681036102b35790565b15611b4557565b60405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608490fd5b908160209103126102b357516001600160a01b03811681036102b35790565b15611bca57565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a490fd5b9190811015610b755760051b0190565b356001600160601b03811681036102b35790565b15611c7f57565b60405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a490fd5b90611d0982611a28565b611d166040519182611a07565b8281528092611d27601f1991611a28565b0190602036910137565b90821015610b75570190565b8051821015610b755760209160051b010190565b90604051611d5e816119bd565b60406001600160601b0382945463ffffffff8116845263ffffffff8160201c166020850152821c16910152565b9190820391821161048c57565b60405190611da5826119bd565b5f6040838281528260208201520152565b60405190611dc3826119ec565b5f6020838281520152565b90604051611ddb816119ec565b91546001600160a01b038116835260a01c6020830152565b90611dfc611d98565b50815f52600260205260405f2060ff82165f5260205260405f205490611e20611d98565b9282611e2c5750505090565b909192505f52600260205260ff60405f2091165f5260205260405f205f19820191821161048c57611e60916103bf916118c9565b90565b906bffffffffffffffffffffffff60401b82549160401b16906bffffffffffffffffffffffff60401b1916179055565b8054600160401b8110156119d857611eb0916001820181556118c9565b61105f578151815460208085015167ffffffff00000000911b1663ffffffff90921667ffffffffffffffff1990911617178155611efb916001600160601b0390604001511690611e63565b565b906001600160601b03809116911601906001600160601b03821161048c57565b919060ff5f931690815f52600360205260405f205490604051611f3f816119ec565b5f8082526020918201819052848152600480835260408083208151639004134760e01b81526001600160a01b03909616928601929092526024850152805460448501819052908252918120839260648401925b81811061212457505f939283900391508290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105de575f91612094575b505f5b82811061200f575050505f525f6020526001600160601b0360405f2054166001600160601b038316101590565b835f5260036020526120276108708260405f206118c9565b6120318284611d3d565b51612040575b50600101611fe2565b6001600160601b03602061205784869a959a611d3d565b51920151169081810291818304149015171561048c576001916001600160601b03670de0b6b3a764000061208d93041690611efd565b9590612037565b90503d805f833e6120a58183611a07565b8101906020818303126102b3578051906001600160401b0382116102b357019080601f830112156102b35781516120db81611a28565b926120e96040519485611a07565b81845260208085019260051b8201019283116102b357602001905b828210612114575050505f611fdf565b8151815260209182019101612104565b82546001600160a01b0316845285945060209093019260019283019201611f92565b5f90805f52600260205260405f2060ff84165f5260205260405f205480155f146121ed57505f516020612c5a5f395f51905f5260406001600160601b0394835f526002602052815f2060ff82165f526020526121c3825f208351906121aa826119bd565b63ffffffff431682525f60208301525f85830152611e93565b60ff8251911681525f6020820152a2165f81810391125f82128116905f83139015161761048c5790565b908092505f52600260205260405f2060ff84165f5260205260405f20905f19810190811161048c5761221e916118c9565b50908154916001600160601b038360401c169283156122e1576001600160601b03945f516020612c5a5f395f51905f529260409263ffffffff438116911681036122835750805473ffffffffffffffffffffffff0000000000000000191690556121c3565b815467ffffffff000000001916602082901b67ffffffff0000000016179091556122dc90855f526002602052835f2060ff84165f52602052835f208451916122ca836119bd565b82525f60208301525f85830152611e93565b6121c3565b50505050505f90565b9190915f90805f52600260205260405f2060ff85165f5260205260405f205480155f1461239957505f516020612c5a5f395f51905f5260406001600160601b038095845f526002602052825f2060ff89165f5260205261236d835f20845190612352826119bd565b63ffffffff431682525f602083015284841686830152611e93565b60ff8351981688521695866020820152a216905f828203921281831281169183139015161761048c5790565b908092505f52600260205260405f2060ff85165f5260205260405f20905f19810190811161048c576123ca916118c9565b50908154916001600160601b038360401c16926001600160601b0385169081851461248c57855f516020612c5a5f395f51905f52936001600160601b039763ffffffff6040958a9582431692839116145f1461243057505061242b91611e63565b61236d565b835467ffffffff000000001916602083901b67ffffffff00000000161790935561242b92909150875f526002602052855f2060ff8c165f52602052855f209086519261247b846119bd565b83525f602084015286830152611e93565b505050505050505f90565b60ff165f81815260016020526040902080549192915f19810190811161048c576124c0916118c9565b509080156125595763ffffffff6124e58354926001600160601b038460401c16612c10565b938492438316921682036124fe575050611e6091611e63565b835467ffffffff000000001916602083901b67ffffffff000000001617909355611e60929091505f52600160205260405f206040519161253d836119bd565b82525f60208301526001600160601b0384166040830152611e93565b506001600160601b0391505460401c1690565b602060ff7f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf921692835f525f82526001600160601b0360405f20911690816001600160601b0319825416179055604051908152a2565b9190820180921161048c57565b81511561290c5760ff8251911691825f52600360205260405f20549260206125f784866125c2565b116128a6575f925b80841061260d575050505050565b90919293945f5b61261e86886125c2565b8110156126ba57835f52600360205261263a8160405f206118c9565b50546001600160a01b03908116906126528888611d3d565b5151161461266257600101612614565b60405162461bcd60e51b815260206004820152603d60248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608490fd5b509493929190926001600160601b0360206126d58386611d3d565b510151161561283f57815f52600360205260405f206126f48285611d3d565b51908054600160401b8110156119d857612713916001820181556118c9565b61105f5781516020929092015160a01b6001600160a01b0319166001600160a01b03929092169190911790555f828152600460205260409020906001600160a01b0361275f8286611d3d565b515116825490600160401b8210156119d857610ff48260019586612785950181556118c9565b827f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54046020848060a01b036127b98589611d3d565b515116604051908152a2827f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838060a01b036127f58488611d3d565b5151166001600160601b03602061280c868a611d3d565b510151604080516001600160a01b0394909416845291166001600160601b03166020830152819081010390a201926125ff565b60405162461bcd60e51b815260206004820152604660248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a490fd5b60405162461bcd60e51b815260206004820152604560248201525f516020612c7a5f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a490fd5b60405162461bcd60e51b815260206004820152603860248201525f516020612c7a5f395f51905f5260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608490fd5b63ffffffff808251169216918210612a41576020015163ffffffff168015918215612a37575b50501561299357565b60405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c490fd5b1090505f8061298a565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a490fd5b929190835f52600260205260405f2060ff82165f5260205260405f2054805b612baf5760405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e490fd5b845f52600260205260405f2060ff83165f5260205260405f205f1982019082821161048c57612be38263ffffffff926118c9565b50541663ffffffff85161015612c035750801561048c575f190180612aea565b63ffffffff169450505050565b905f811215612c4557600160ff1b811461048c576001600160601b0380915f03169116036001600160601b03811161048c5790565b906001600160601b03611e60921690611efd56fe2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220a53322900ef5b7e2b34473ed4ba3daa5d60bde2a416a384fe7e58d170c91dca164736f6c634300081b0033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","output":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081630491b41c1461187b57508063087324611461181e5780631f9b74e0146117b857806320b66298146114ff57806325504777146112f15780632cd95940146111f55780633ca5a5f5146111c35780634bd26e09146111845780635401ed271461115c5780635e5a67751461113a5780635f1f2d7714610da157806366acfefe14610c615780636d14a98714610c1d5780637c17234714610c0357806381c07502146109405780639f3ccf65146108e7578063ac6bfb0314610899578063adc804da14610831578063b6904b78146107f1578063bc9a40c31461074a578063bd29b8cd14610623578063c46778a5146105e9578063c601527d146104eb578063c8294c56146104a0578063d5eccc0514610442578063dd9846b91461041b578063df5cf723146103d7578063f2be94ae14610368578063f851e1981461030a578063fa28c627146102b75763ff694a7714610171575f80fd5b346102b35760603660031901126102b35761018a6118a9565b610192611a52565b906044356001600160401b0381116102b3576101b2903690600401611a68565b6101e6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b6101fe8260ff165f52600160205260405f2054151590565b6102505760ff9261021261021892846125cf565b8261256c565b165f52600160205261024e60405f2060405190610234826119bd565b63ffffffff431682525f60208301525f6040830152611e93565b005b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608490fd5b5f80fd5b346102b35760206001600160601b036102fc6102f66102d536611b0d565b90825f949394526002875260405f2060ff82165f52875260405f2093612acb565b906118c9565b505460401c16604051908152f35b346102b35760403660031901126102b35760606103306103286118b9565b600435611df3565b61036660405180926001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565bf35b346102b35760803660031901126102b35760206001600160601b03604061038d6118a9565b610395611a3f565b906044355f526002855260ff835f2091165f5284526103cc6103c56103bf845f20606435906118c9565b50611d51565b9182612964565b015116604051908152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b346102b357602061043461042e36611b0d565b91612acb565b63ffffffff60405191168152f35b346102b35760203660031901126102b35760ff61045d6118a9565b165f90815260016020526040902080545f19810190811161048c576102fc6001600160601b03916020936118c9565b634e487b7160e01b5f52601160045260245ffd5b346102b35760603660031901126102b35760206001600160601b0360406104c56118a9565b60ff6104cf611a3f565b91165f52600184526103cc6103c56103bf604435855f206118c9565b346102b35760403660031901126102b3576105046118a9565b6024356001600160401b0381116102b357610523903690600401611a68565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e9361058a915f916105af575b506001600160a01b03163314611bc3565b6105aa6105a58260ff165f52600160205260405f2054151590565b611b3e565b6125cf565b6105d1915060203d6020116105d7575b6105c98183611a07565b810190611ba4565b85610579565b503d6105bf565b6040513d5f823e3d90fd5b346102b35760203660031901126102b35760ff6106046118a9565b165f525f60205260206001600160601b0360405f205416604051908152f35b346102b35760403660031901126102b3576004356024356001600160401b0381116102b35761065690369060040161190e565b61068a337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f5b81811061069557005b6106a0818385611d31565b3560f81c906106bd8260ff165f52600160205260405f2054151590565b156106df576106d8826106d260019488612146565b90612497565b500161068c565b60405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608490fd5b346102b35760403660031901126102b3576107636118a9565b61076b611a52565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e936107d1915f916105af57506001600160a01b03163314611bc3565b6107ec6105a58260ff165f52600160205260405f2054151590565b61256c565b346102b35760403660031901126102b35760ff61080c6118a9565b610814611d98565b50165f52600160205260606103306103bf60243560405f206118c9565b346102b35760403660031901126102b35760ff61084c6118a9565b610854611db6565b50165f5260036020526040610876610870602435835f206118c9565b50611dce565b6001600160601b03602083519260018060a01b0381511684520151166020820152f35b346102b35760603660031901126102b3576108b26118a9565b6108ba611d98565b506024355f52600260205260ff60405f2091165f5260205260606103306103bf60405f20604435906118c9565b346102b35760403660031901126102b3576109006118a9565b60ff60243591165f52600460205260405f2080548210156102b357602091610927916118c9565b905460405160039290921b1c6001600160a01b03168152f35b346102b35760403660031901126102b35760043563ffffffff81168091036102b3576024356001600160401b0381116102b35761098190369060040161190e565b9061098b82611a28565b926109996040519485611a07565b8284526109a583611a28565b602085019390601f19013685375f5b818110610a05578486604051918291602083019060208452518091526040830191905f5b8181106109e6575050500390f35b825163ffffffff168452859450602093840193909201916001016109d8565b610a10818386611d31565b3560f81c5f8181526001602052604090205415610b8957805f52600160205260405f20805415610b75575f528363ffffffff60205f20541611610ae457805f52600160205260405f20545f5b818110610a6f575b5050506001016109b4565b825f52600160205260405f20610a858284611d8b565b5f19810190811161048c57610aa063ffffffff9189936118c9565b5054161115610ab157600101610a5c565b90610abc9250611d8b565b5f1981019190821161048c5763ffffffff60019216610adb8289611d3d565b52908780610a64565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a490fd5b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a490fd5b346102b3575f3660031901126102b3576020604051818152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346102b357610c6f3661193b565b929091610ca6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f935f5b818110610cc5576040516001600160c01b0387168152602090f35b610cd0818387611d31565b3560f81c90610ced8260ff165f52600160205260405f2054151590565b15610d3657610d1382610d0287600195611f1d565b15610d1a575b6106d29082886122ea565b5001610caa565b5083811b60c085901b859003908116991698909817975f610d08565b60405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608490fd5b346102b35760403660031901126102b357610dba6118a9565b602435906001600160401b0382116102b357366023830112156102b357816004013591610de683611a28565b92610df46040519485611a07565b8084526024602085019160051b830101913683116102b357602401905b82821061112a575050604051638da5cb5b60e01b815290506020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de57610e7c915f9161110b57506001600160a01b03163314611bc3565b610e976105a58260ff165f52600160205260405f2054151590565b81519081156110a05760ff1691825f52600360205260405f20835f52600460205260405f20935f5b848110610ec857005b817f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f76020610f00610ef98589611d3d565b51876118c9565b50546040516001600160a01b039091168152a2817f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a756040610f44610ef98589611d3d565b505481516001600160a01b0390911681525f6020820152a282545f19810190811161048c57610f7390846118c9565b50610f88610f818387611d3d565b51856118c9565b61105f57818103611072575b50508254801561104b575f1901610fab81856118c9565b61105f575f9055835585545f19810190811161048c57610fce61101891886118c9565b905460039190911b1c6001600160a01b0316610ff4610fed8488611d3d565b51896118c9565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b855490811561104b576001915f190161103181896118c9565b815490858060a01b039060031b1b19169055875501610ebf565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f525f60045260245ffd5b815481546001600160a01b039091166001600160a01b03199182168117835592541690911790558680610f94565b60405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608490fd5b611124915060203d6020116105d7576105c98183611a07565b84610579565b8135815260209182019101610e11565b346102b3575f3660031901126102b3576020604051670de0b6b3a76400008152f35b346102b35760403660031901126102b35760206001600160601b0360406103cc6103286118b9565b346102b35760403660031901126102b35761119d6118b9565b6004355f52600260205260ff60405f2091165f52602052602060405f2054604051908152f35b346102b35760203660031901126102b35760ff6111de6118a9565b165f526003602052602060405f2054604051908152f35b346102b35760403660031901126102b35761120e6118b9565b6004355f52600260205260ff60405f2091165f5260205260405f2080549061123582611a28565b916112436040519384611a07565b8083526020830180925f5260205f205f915b8383106112d4578486604051918291602083019060208452518091526040830191905f5b818110611287575050500390f35b9193509160206060826112c660019488516001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565b019401910191849392611279565b6001602081926112e385611d51565b815201920192019190611255565b346102b3576112ff3661193b565b91929190611337337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b61134082611cff565b9261134a83611cff565b925f5b818110611382576113708661137e87604051938493604085526040850190611981565b908382036020850152611981565b0390f35b61138d818386611d31565b3560f81c906113aa8260ff165f52600160205260405f2054151590565b1561149c576113b98483611f1d565b9290921561140b5782816113d36001956113ef948d6122ea565b916001600160601b036113e6868d611d3d565b91169052612497565b6001600160601b036114018389611d3d565b911690520161134d565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a490fd5b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b346102b35760603660031901126102b3576115186118a9565b6024356001600160401b0381116102b3576115379036906004016118de565b916044356001600160401b0381116102b3576115579036906004016118de565b604051638da5cb5b60e01b8152919290916020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de576115bb915f9161179957506001600160a01b03163314611bc3565b6115d66105a58260ff165f52600160205260405f2054151590565b841561172f578482036116c45760ff1691825f52600360205260405f20935f5b8681106115ff57005b806116516116186116136001948888611c54565b611c64565b61162d611626848c88611c54565b358a6118c9565b5080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b857f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75611681611626848c88611c54565b50848060a01b03905416611699611613858a8a611c54565b604080516001600160a01b039390931683526001600160601b0391909116602083015290a2016115f6565b60405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608490fd5b608460405162461bcd60e51b815260206004820152604060248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152fd5b6117b2915060203d6020116105d7576105c98183611a07565b87610579565b346102b35760403660031901126102b3576117d16118a9565b602435906001600160a01b03821682036102b357602091816118076105a561180c9460ff165f52600160205260405f2054151590565b611f1d565b506001600160601b0360405191168152f35b346102b35760403660031901126102b3576118376118a9565b60ff60243591165f52600360205260405f2080548210156102b35760409161185e916118c9565b505481516001600160a01b038216815260a09190911c6020820152f35b346102b35760203660031901126102b35760209060ff6118996118a9565b165f526001825260405f20548152f35b6004359060ff821682036102b357565b6024359060ff821682036102b357565b8054821015610b75575f5260205f2001905f90565b9181601f840112156102b3578235916001600160401b0383116102b3576020808501948460051b0101116102b357565b9181601f840112156102b3578235916001600160401b0383116102b357602083818601950101116102b357565b60606003198201126102b3576004356001600160a01b03811681036102b3579160243591604435906001600160401b0382116102b35761197d9160040161190e565b9091565b90602080835192838152019201905f5b81811061199e5750505090565b82516001600160601b0316845260209384019390920191600101611991565b606081019081106001600160401b038211176119d857604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176119d857604052565b90601f801991011681019081106001600160401b038211176119d857604052565b6001600160401b0381116119d85760051b60200190565b6024359063ffffffff821682036102b357565b602435906001600160601b03821682036102b357565b81601f820112156102b357803590611a7f82611a28565b92611a8d6040519485611a07565b82845260208085019360061b830101918183116102b357602001925b828410611ab7575050505090565b6040848303126102b35760405190611ace826119ec565b84356001600160a01b03811681036102b35782526020850135906001600160601b03821682036102b35782602092836040950152815201930192611aa9565b60609060031901126102b3576004359060243560ff811681036102b3579060443563ffffffff811681036102b35790565b15611b4557565b60405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608490fd5b908160209103126102b357516001600160a01b03811681036102b35790565b15611bca57565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a490fd5b9190811015610b755760051b0190565b356001600160601b03811681036102b35790565b15611c7f57565b60405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a490fd5b90611d0982611a28565b611d166040519182611a07565b8281528092611d27601f1991611a28565b0190602036910137565b90821015610b75570190565b8051821015610b755760209160051b010190565b90604051611d5e816119bd565b60406001600160601b0382945463ffffffff8116845263ffffffff8160201c166020850152821c16910152565b9190820391821161048c57565b60405190611da5826119bd565b5f6040838281528260208201520152565b60405190611dc3826119ec565b5f6020838281520152565b90604051611ddb816119ec565b91546001600160a01b038116835260a01c6020830152565b90611dfc611d98565b50815f52600260205260405f2060ff82165f5260205260405f205490611e20611d98565b9282611e2c5750505090565b909192505f52600260205260ff60405f2091165f5260205260405f205f19820191821161048c57611e60916103bf916118c9565b90565b906bffffffffffffffffffffffff60401b82549160401b16906bffffffffffffffffffffffff60401b1916179055565b8054600160401b8110156119d857611eb0916001820181556118c9565b61105f578151815460208085015167ffffffff00000000911b1663ffffffff90921667ffffffffffffffff1990911617178155611efb916001600160601b0390604001511690611e63565b565b906001600160601b03809116911601906001600160601b03821161048c57565b919060ff5f931690815f52600360205260405f205490604051611f3f816119ec565b5f8082526020918201819052848152600480835260408083208151639004134760e01b81526001600160a01b03909616928601929092526024850152805460448501819052908252918120839260648401925b81811061212457505f939283900391508290507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa9081156105de575f91612094575b505f5b82811061200f575050505f525f6020526001600160601b0360405f2054166001600160601b038316101590565b835f5260036020526120276108708260405f206118c9565b6120318284611d3d565b51612040575b50600101611fe2565b6001600160601b03602061205784869a959a611d3d565b51920151169081810291818304149015171561048c576001916001600160601b03670de0b6b3a764000061208d93041690611efd565b9590612037565b90503d805f833e6120a58183611a07565b8101906020818303126102b3578051906001600160401b0382116102b357019080601f830112156102b35781516120db81611a28565b926120e96040519485611a07565b81845260208085019260051b8201019283116102b357602001905b828210612114575050505f611fdf565b8151815260209182019101612104565b82546001600160a01b0316845285945060209093019260019283019201611f92565b5f90805f52600260205260405f2060ff84165f5260205260405f205480155f146121ed57505f516020612c5a5f395f51905f5260406001600160601b0394835f526002602052815f2060ff82165f526020526121c3825f208351906121aa826119bd565b63ffffffff431682525f60208301525f85830152611e93565b60ff8251911681525f6020820152a2165f81810391125f82128116905f83139015161761048c5790565b908092505f52600260205260405f2060ff84165f5260205260405f20905f19810190811161048c5761221e916118c9565b50908154916001600160601b038360401c169283156122e1576001600160601b03945f516020612c5a5f395f51905f529260409263ffffffff438116911681036122835750805473ffffffffffffffffffffffff0000000000000000191690556121c3565b815467ffffffff000000001916602082901b67ffffffff0000000016179091556122dc90855f526002602052835f2060ff84165f52602052835f208451916122ca836119bd565b82525f60208301525f85830152611e93565b6121c3565b50505050505f90565b9190915f90805f52600260205260405f2060ff85165f5260205260405f205480155f1461239957505f516020612c5a5f395f51905f5260406001600160601b038095845f526002602052825f2060ff89165f5260205261236d835f20845190612352826119bd565b63ffffffff431682525f602083015284841686830152611e93565b60ff8351981688521695866020820152a216905f828203921281831281169183139015161761048c5790565b908092505f52600260205260405f2060ff85165f5260205260405f20905f19810190811161048c576123ca916118c9565b50908154916001600160601b038360401c16926001600160601b0385169081851461248c57855f516020612c5a5f395f51905f52936001600160601b039763ffffffff6040958a9582431692839116145f1461243057505061242b91611e63565b61236d565b835467ffffffff000000001916602083901b67ffffffff00000000161790935561242b92909150875f526002602052855f2060ff8c165f52602052855f209086519261247b846119bd565b83525f602084015286830152611e93565b505050505050505f90565b60ff165f81815260016020526040902080549192915f19810190811161048c576124c0916118c9565b509080156125595763ffffffff6124e58354926001600160601b038460401c16612c10565b938492438316921682036124fe575050611e6091611e63565b835467ffffffff000000001916602083901b67ffffffff000000001617909355611e60929091505f52600160205260405f206040519161253d836119bd565b82525f60208301526001600160601b0384166040830152611e93565b506001600160601b0391505460401c1690565b602060ff7f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf921692835f525f82526001600160601b0360405f20911690816001600160601b0319825416179055604051908152a2565b9190820180921161048c57565b81511561290c5760ff8251911691825f52600360205260405f20549260206125f784866125c2565b116128a6575f925b80841061260d575050505050565b90919293945f5b61261e86886125c2565b8110156126ba57835f52600360205261263a8160405f206118c9565b50546001600160a01b03908116906126528888611d3d565b5151161461266257600101612614565b60405162461bcd60e51b815260206004820152603d60248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608490fd5b509493929190926001600160601b0360206126d58386611d3d565b510151161561283f57815f52600360205260405f206126f48285611d3d565b51908054600160401b8110156119d857612713916001820181556118c9565b61105f5781516020929092015160a01b6001600160a01b0319166001600160a01b03929092169190911790555f828152600460205260409020906001600160a01b0361275f8286611d3d565b515116825490600160401b8210156119d857610ff48260019586612785950181556118c9565b827f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54046020848060a01b036127b98589611d3d565b515116604051908152a2827f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838060a01b036127f58488611d3d565b5151166001600160601b03602061280c868a611d3d565b510151604080516001600160a01b0394909416845291166001600160601b03166020830152819081010390a201926125ff565b60405162461bcd60e51b815260206004820152604660248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a490fd5b60405162461bcd60e51b815260206004820152604560248201525f516020612c7a5f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a490fd5b60405162461bcd60e51b815260206004820152603860248201525f516020612c7a5f395f51905f5260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608490fd5b63ffffffff808251169216918210612a41576020015163ffffffff168015918215612a37575b50501561299357565b60405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c490fd5b1090505f8061298a565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a490fd5b929190835f52600260205260405f2060ff82165f5260205260405f2054805b612baf5760405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e490fd5b845f52600260205260405f2060ff83165f5260205260405f205f1982019082821161048c57612be38263ffffffff926118c9565b50541663ffffffff85161015612c035750801561048c575f190180612aea565b63ffffffff169450505050565b905f811215612c4557600160ff1b811461048c576001600160601b0380915f03169116036001600160601b03811161048c5790565b906001600160601b03611e60921690611efd56fe2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220a53322900ef5b7e2b34473ed4ba3daa5d60bde2a416a384fe7e58d170c91dca164736f6c634300081b0033","gas_used":2297121,"gas_limit":3057107,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081630491b41c1461187b57508063087324611461181e5780631f9b74e0146117b857806320b66298146114ff57806325504777146112f15780632cd95940146111f55780633ca5a5f5146111c35780634bd26e09146111845780635401ed271461115c5780635e5a67751461113a5780635f1f2d7714610da157806366acfefe14610c615780636d14a98714610c1d5780637c17234714610c0357806381c07502146109405780639f3ccf65146108e7578063ac6bfb0314610899578063adc804da14610831578063b6904b78146107f1578063bc9a40c31461074a578063bd29b8cd14610623578063c46778a5146105e9578063c601527d146104eb578063c8294c56146104a0578063d5eccc0514610442578063dd9846b91461041b578063df5cf723146103d7578063f2be94ae14610368578063f851e1981461030a578063fa28c627146102b75763ff694a7714610171575f80fd5b346102b35760603660031901126102b35761018a6118a9565b610192611a52565b906044356001600160401b0381116102b3576101b2903690600401611a68565b6101e6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b6101fe8260ff165f52600160205260405f2054151590565b6102505760ff9261021261021892846125cf565b8261256c565b165f52600160205261024e60405f2060405190610234826119bd565b63ffffffff431682525f60208301525f6040830152611e93565b005b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608490fd5b5f80fd5b346102b35760206001600160601b036102fc6102f66102d536611b0d565b90825f949394526002875260405f2060ff82165f52875260405f2093612acb565b906118c9565b505460401c16604051908152f35b346102b35760403660031901126102b35760606103306103286118b9565b600435611df3565b61036660405180926001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565bf35b346102b35760803660031901126102b35760206001600160601b03604061038d6118a9565b610395611a3f565b906044355f526002855260ff835f2091165f5284526103cc6103c56103bf845f20606435906118c9565b50611d51565b9182612964565b015116604051908152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b346102b357602061043461042e36611b0d565b91612acb565b63ffffffff60405191168152f35b346102b35760203660031901126102b35760ff61045d6118a9565b165f90815260016020526040902080545f19810190811161048c576102fc6001600160601b03916020936118c9565b634e487b7160e01b5f52601160045260245ffd5b346102b35760603660031901126102b35760206001600160601b0360406104c56118a9565b60ff6104cf611a3f565b91165f52600184526103cc6103c56103bf604435855f206118c9565b346102b35760403660031901126102b3576105046118a9565b6024356001600160401b0381116102b357610523903690600401611a68565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e9361058a915f916105af575b506001600160a01b03163314611bc3565b6105aa6105a58260ff165f52600160205260405f2054151590565b611b3e565b6125cf565b6105d1915060203d6020116105d7575b6105c98183611a07565b810190611ba4565b85610579565b503d6105bf565b6040513d5f823e3d90fd5b346102b35760203660031901126102b35760ff6106046118a9565b165f525f60205260206001600160601b0360405f205416604051908152f35b346102b35760403660031901126102b3576004356024356001600160401b0381116102b35761065690369060040161190e565b61068a337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f5b81811061069557005b6106a0818385611d31565b3560f81c906106bd8260ff165f52600160205260405f2054151590565b156106df576106d8826106d260019488612146565b90612497565b500161068c565b60405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608490fd5b346102b35760403660031901126102b3576107636118a9565b61076b611a52565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e936107d1915f916105af57506001600160a01b03163314611bc3565b6107ec6105a58260ff165f52600160205260405f2054151590565b61256c565b346102b35760403660031901126102b35760ff61080c6118a9565b610814611d98565b50165f52600160205260606103306103bf60243560405f206118c9565b346102b35760403660031901126102b35760ff61084c6118a9565b610854611db6565b50165f5260036020526040610876610870602435835f206118c9565b50611dce565b6001600160601b03602083519260018060a01b0381511684520151166020820152f35b346102b35760603660031901126102b3576108b26118a9565b6108ba611d98565b506024355f52600260205260ff60405f2091165f5260205260606103306103bf60405f20604435906118c9565b346102b35760403660031901126102b3576109006118a9565b60ff60243591165f52600460205260405f2080548210156102b357602091610927916118c9565b905460405160039290921b1c6001600160a01b03168152f35b346102b35760403660031901126102b35760043563ffffffff81168091036102b3576024356001600160401b0381116102b35761098190369060040161190e565b9061098b82611a28565b926109996040519485611a07565b8284526109a583611a28565b602085019390601f19013685375f5b818110610a05578486604051918291602083019060208452518091526040830191905f5b8181106109e6575050500390f35b825163ffffffff168452859450602093840193909201916001016109d8565b610a10818386611d31565b3560f81c5f8181526001602052604090205415610b8957805f52600160205260405f20805415610b75575f528363ffffffff60205f20541611610ae457805f52600160205260405f20545f5b818110610a6f575b5050506001016109b4565b825f52600160205260405f20610a858284611d8b565b5f19810190811161048c57610aa063ffffffff9189936118c9565b5054161115610ab157600101610a5c565b90610abc9250611d8b565b5f1981019190821161048c5763ffffffff60019216610adb8289611d3d565b52908780610a64565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a490fd5b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a490fd5b346102b3575f3660031901126102b3576020604051818152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346102b357610c6f3661193b565b929091610ca6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f935f5b818110610cc5576040516001600160c01b0387168152602090f35b610cd0818387611d31565b3560f81c90610ced8260ff165f52600160205260405f2054151590565b15610d3657610d1382610d0287600195611f1d565b15610d1a575b6106d29082886122ea565b5001610caa565b5083811b60c085901b859003908116991698909817975f610d08565b60405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608490fd5b346102b35760403660031901126102b357610dba6118a9565b602435906001600160401b0382116102b357366023830112156102b357816004013591610de683611a28565b92610df46040519485611a07565b8084526024602085019160051b830101913683116102b357602401905b82821061112a575050604051638da5cb5b60e01b815290506020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de57610e7c915f9161110b57506001600160a01b03163314611bc3565b610e976105a58260ff165f52600160205260405f2054151590565b81519081156110a05760ff1691825f52600360205260405f20835f52600460205260405f20935f5b848110610ec857005b817f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f76020610f00610ef98589611d3d565b51876118c9565b50546040516001600160a01b039091168152a2817f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a756040610f44610ef98589611d3d565b505481516001600160a01b0390911681525f6020820152a282545f19810190811161048c57610f7390846118c9565b50610f88610f818387611d3d565b51856118c9565b61105f57818103611072575b50508254801561104b575f1901610fab81856118c9565b61105f575f9055835585545f19810190811161048c57610fce61101891886118c9565b905460039190911b1c6001600160a01b0316610ff4610fed8488611d3d565b51896118c9565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b855490811561104b576001915f190161103181896118c9565b815490858060a01b039060031b1b19169055875501610ebf565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f525f60045260245ffd5b815481546001600160a01b039091166001600160a01b03199182168117835592541690911790558680610f94565b60405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608490fd5b611124915060203d6020116105d7576105c98183611a07565b84610579565b8135815260209182019101610e11565b346102b3575f3660031901126102b3576020604051670de0b6b3a76400008152f35b346102b35760403660031901126102b35760206001600160601b0360406103cc6103286118b9565b346102b35760403660031901126102b35761119d6118b9565b6004355f52600260205260ff60405f2091165f52602052602060405f2054604051908152f35b346102b35760203660031901126102b35760ff6111de6118a9565b165f526003602052602060405f2054604051908152f35b346102b35760403660031901126102b35761120e6118b9565b6004355f52600260205260ff60405f2091165f5260205260405f2080549061123582611a28565b916112436040519384611a07565b8083526020830180925f5260205f205f915b8383106112d4578486604051918291602083019060208452518091526040830191905f5b818110611287575050500390f35b9193509160206060826112c660019488516001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565b019401910191849392611279565b6001602081926112e385611d51565b815201920192019190611255565b346102b3576112ff3661193b565b91929190611337337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b61134082611cff565b9261134a83611cff565b925f5b818110611382576113708661137e87604051938493604085526040850190611981565b908382036020850152611981565b0390f35b61138d818386611d31565b3560f81c906113aa8260ff165f52600160205260405f2054151590565b1561149c576113b98483611f1d565b9290921561140b5782816113d36001956113ef948d6122ea565b916001600160601b036113e6868d611d3d565b91169052612497565b6001600160601b036114018389611d3d565b911690520161134d565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a490fd5b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b346102b35760603660031901126102b3576115186118a9565b6024356001600160401b0381116102b3576115379036906004016118de565b916044356001600160401b0381116102b3576115579036906004016118de565b604051638da5cb5b60e01b8152919290916020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de576115bb915f9161179957506001600160a01b03163314611bc3565b6115d66105a58260ff165f52600160205260405f2054151590565b841561172f578482036116c45760ff1691825f52600360205260405f20935f5b8681106115ff57005b806116516116186116136001948888611c54565b611c64565b61162d611626848c88611c54565b358a6118c9565b5080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b857f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75611681611626848c88611c54565b50848060a01b03905416611699611613858a8a611c54565b604080516001600160a01b039390931683526001600160601b0391909116602083015290a2016115f6565b60405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608490fd5b608460405162461bcd60e51b815260206004820152604060248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152fd5b6117b2915060203d6020116105d7576105c98183611a07565b87610579565b346102b35760403660031901126102b3576117d16118a9565b602435906001600160a01b03821682036102b357602091816118076105a561180c9460ff165f52600160205260405f2054151590565b611f1d565b506001600160601b0360405191168152f35b346102b35760403660031901126102b3576118376118a9565b60ff60243591165f52600360205260405f2080548210156102b35760409161185e916118c9565b505481516001600160a01b038216815260a09190911c6020820152f35b346102b35760203660031901126102b35760209060ff6118996118a9565b165f526001825260405f20548152f35b6004359060ff821682036102b357565b6024359060ff821682036102b357565b8054821015610b75575f5260205f2001905f90565b9181601f840112156102b3578235916001600160401b0383116102b3576020808501948460051b0101116102b357565b9181601f840112156102b3578235916001600160401b0383116102b357602083818601950101116102b357565b60606003198201126102b3576004356001600160a01b03811681036102b3579160243591604435906001600160401b0382116102b35761197d9160040161190e565b9091565b90602080835192838152019201905f5b81811061199e5750505090565b82516001600160601b0316845260209384019390920191600101611991565b606081019081106001600160401b038211176119d857604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176119d857604052565b90601f801991011681019081106001600160401b038211176119d857604052565b6001600160401b0381116119d85760051b60200190565b6024359063ffffffff821682036102b357565b602435906001600160601b03821682036102b357565b81601f820112156102b357803590611a7f82611a28565b92611a8d6040519485611a07565b82845260208085019360061b830101918183116102b357602001925b828410611ab7575050505090565b6040848303126102b35760405190611ace826119ec565b84356001600160a01b03811681036102b35782526020850135906001600160601b03821682036102b35782602092836040950152815201930192611aa9565b60609060031901126102b3576004359060243560ff811681036102b3579060443563ffffffff811681036102b35790565b15611b4557565b60405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608490fd5b908160209103126102b357516001600160a01b03811681036102b35790565b15611bca57565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a490fd5b9190811015610b755760051b0190565b356001600160601b03811681036102b35790565b15611c7f57565b60405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a490fd5b90611d0982611a28565b611d166040519182611a07565b8281528092611d27601f1991611a28565b0190602036910137565b90821015610b75570190565b8051821015610b755760209160051b010190565b90604051611d5e816119bd565b60406001600160601b0382945463ffffffff8116845263ffffffff8160201c166020850152821c16910152565b9190820391821161048c57565b60405190611da5826119bd565b5f6040838281528260208201520152565b60405190611dc3826119ec565b5f6020838281520152565b90604051611ddb816119ec565b91546001600160a01b038116835260a01c6020830152565b90611dfc611d98565b50815f52600260205260405f2060ff82165f5260205260405f205490611e20611d98565b9282611e2c5750505090565b909192505f52600260205260ff60405f2091165f5260205260405f205f19820191821161048c57611e60916103bf916118c9565b90565b906bffffffffffffffffffffffff60401b82549160401b16906bffffffffffffffffffffffff60401b1916179055565b8054600160401b8110156119d857611eb0916001820181556118c9565b61105f578151815460208085015167ffffffff00000000911b1663ffffffff90921667ffffffffffffffff1990911617178155611efb916001600160601b0390604001511690611e63565b565b906001600160601b03809116911601906001600160601b03821161048c57565b919060ff5f931690815f52600360205260405f205490604051611f3f816119ec565b5f8082526020918201819052848152600480835260408083208151639004134760e01b81526001600160a01b03909616928601929092526024850152805460448501819052908252918120839260648401925b81811061212457505f939283900391508290507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa9081156105de575f91612094575b505f5b82811061200f575050505f525f6020526001600160601b0360405f2054166001600160601b038316101590565b835f5260036020526120276108708260405f206118c9565b6120318284611d3d565b51612040575b50600101611fe2565b6001600160601b03602061205784869a959a611d3d565b51920151169081810291818304149015171561048c576001916001600160601b03670de0b6b3a764000061208d93041690611efd565b9590612037565b90503d805f833e6120a58183611a07565b8101906020818303126102b3578051906001600160401b0382116102b357019080601f830112156102b35781516120db81611a28565b926120e96040519485611a07565b81845260208085019260051b8201019283116102b357602001905b828210612114575050505f611fdf565b8151815260209182019101612104565b82546001600160a01b0316845285945060209093019260019283019201611f92565b5f90805f52600260205260405f2060ff84165f5260205260405f205480155f146121ed57505f516020612c5a5f395f51905f5260406001600160601b0394835f526002602052815f2060ff82165f526020526121c3825f208351906121aa826119bd565b63ffffffff431682525f60208301525f85830152611e93565b60ff8251911681525f6020820152a2165f81810391125f82128116905f83139015161761048c5790565b908092505f52600260205260405f2060ff84165f5260205260405f20905f19810190811161048c5761221e916118c9565b50908154916001600160601b038360401c169283156122e1576001600160601b03945f516020612c5a5f395f51905f529260409263ffffffff438116911681036122835750805473ffffffffffffffffffffffff0000000000000000191690556121c3565b815467ffffffff000000001916602082901b67ffffffff0000000016179091556122dc90855f526002602052835f2060ff84165f52602052835f208451916122ca836119bd565b82525f60208301525f85830152611e93565b6121c3565b50505050505f90565b9190915f90805f52600260205260405f2060ff85165f5260205260405f205480155f1461239957505f516020612c5a5f395f51905f5260406001600160601b038095845f526002602052825f2060ff89165f5260205261236d835f20845190612352826119bd565b63ffffffff431682525f602083015284841686830152611e93565b60ff8351981688521695866020820152a216905f828203921281831281169183139015161761048c5790565b908092505f52600260205260405f2060ff85165f5260205260405f20905f19810190811161048c576123ca916118c9565b50908154916001600160601b038360401c16926001600160601b0385169081851461248c57855f516020612c5a5f395f51905f52936001600160601b039763ffffffff6040958a9582431692839116145f1461243057505061242b91611e63565b61236d565b835467ffffffff000000001916602083901b67ffffffff00000000161790935561242b92909150875f526002602052855f2060ff8c165f52602052855f209086519261247b846119bd565b83525f602084015286830152611e93565b505050505050505f90565b60ff165f81815260016020526040902080549192915f19810190811161048c576124c0916118c9565b509080156125595763ffffffff6124e58354926001600160601b038460401c16612c10565b938492438316921682036124fe575050611e6091611e63565b835467ffffffff000000001916602083901b67ffffffff000000001617909355611e60929091505f52600160205260405f206040519161253d836119bd565b82525f60208301526001600160601b0384166040830152611e93565b506001600160601b0391505460401c1690565b602060ff7f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf921692835f525f82526001600160601b0360405f20911690816001600160601b0319825416179055604051908152a2565b9190820180921161048c57565b81511561290c5760ff8251911691825f52600360205260405f20549260206125f784866125c2565b116128a6575f925b80841061260d575050505050565b90919293945f5b61261e86886125c2565b8110156126ba57835f52600360205261263a8160405f206118c9565b50546001600160a01b03908116906126528888611d3d565b5151161461266257600101612614565b60405162461bcd60e51b815260206004820152603d60248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608490fd5b509493929190926001600160601b0360206126d58386611d3d565b510151161561283f57815f52600360205260405f206126f48285611d3d565b51908054600160401b8110156119d857612713916001820181556118c9565b61105f5781516020929092015160a01b6001600160a01b0319166001600160a01b03929092169190911790555f828152600460205260409020906001600160a01b0361275f8286611d3d565b515116825490600160401b8210156119d857610ff48260019586612785950181556118c9565b827f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54046020848060a01b036127b98589611d3d565b515116604051908152a2827f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838060a01b036127f58488611d3d565b5151166001600160601b03602061280c868a611d3d565b510151604080516001600160a01b0394909416845291166001600160601b03166020830152819081010390a201926125ff565b60405162461bcd60e51b815260206004820152604660248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a490fd5b60405162461bcd60e51b815260206004820152604560248201525f516020612c7a5f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a490fd5b60405162461bcd60e51b815260206004820152603860248201525f516020612c7a5f395f51905f5260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608490fd5b63ffffffff808251169216918210612a41576020015163ffffffff168015918215612a37575b50501561299357565b60405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c490fd5b1090505f8061298a565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a490fd5b929190835f52600260205260405f2060ff82165f5260205260405f2054805b612baf5760405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e490fd5b845f52600260205260405f2060ff83165f5260205260405f205f1982019082821161048c57612be38263ffffffff926118c9565b50541663ffffffff85161015612c035750801561048c575f190180612aea565b63ffffffff169450505050565b905f811215612c4557600160ff1b811461048c576001600160601b0380915f03169116036001600160601b03811161048c5790565b906001600160601b03611e60921690611efd56fe2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220a53322900ef5b7e2b34473ed4ba3daa5d60bde2a416a384fe7e58d170c91dca164736f6c634300081b0033","nonce":43,"gas_used":2533289},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x26a7a9","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2aa8e0c25e9b38ee84f7973b0da1a18a38f302fe1001c2a37e8b7fb36b956ecb","block_number":14},{"info":{"transaction_hash":"0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a676e781a523b5d0c0e43731313a708cb607508","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","gas_used":1149341,"gas_limit":1540412,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","nonce":14,"gas_used":1303571},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3a1ea5","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","block_number":12},{"info":{"transaction_hash":"0x4255d599822a3c930084dc7ff93dd4e7b5ca89e6750e7c74b7ece064d410e394","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a080604052346100da57306080525f549060ff8260081c16610088575060ff8082161061004e575b60405161186590816100df8239608051818181610b3601528181610c5b015261102c0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe608080604052600436101561009b575b50361561001a575f80fd5b60fb546001600160a01b0316330361002e57005b335f5260fd60205260405f208054903482018092116100875755335f5260fd6020525f60016040822001556040513481527f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77060203392a2005b634e487b7160e01b5f52601160045260245ffd5b5f905f3560e01c90816317d89c4e14611442575080632df4e21e1461140a5780632e1a7d4d1461130a5780633659cfe61461100e5780633f4ba83a14610f7b5780634d5431ea14610f405780634f1ef28614610be657806352d1902d14610b2457806358b96e2714610afc5780635c975abb14610ada578063715018a614610a7f57806373e289d014610a635780638456cb5914610a0a5780638da5cb5b146109e2578063953ef807146109ba578063a69df4b51461092c578063a7d3180914610651578063c0c53b8b146103b6578063c392299e146102f0578063c89109131461029f578063f2fde38b1461020e5763f83d08ba0361000f573461020b578060031936011261020b576101ad6115d9565b33815260fd6020526040812054156101f85733815260fd602052806001604082200155337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd8280a280f35b63366095e160e11b815233600452602490fd5b80fd5b503461020b57602036600319011261020b57610228611479565b61023061161d565b6001600160a01b0381161561024b5761024890611675565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461020b57602036600319011261020b576060906040906001600160a01b036102c7611479565b16815260fd60205220805490600260018201549101549060405192835260208301526040820152f35b50604036600319011261020b578060043561030961148f565b9061031261161d565b60fb546001600160a01b031691823b156103b157838093602460405180968193632e1a7d4d60e01b83528760048401525af19283156103a6578493610389575b50829182918290821561037f575b6001600160a01b031690f1156103735780f35b604051903d90823e3d90fd5b6108fc9150610360565b83610396919492946114a5565b6103a25782915f610352565b5050fd5b6040513d86823e3d90fd5b505050fd5b503461020b57606036600319011261020b576004356001600160a01b0381169081900361064d576103e561148f565b906044356001600160a01b03811691908290036106495783549260ff8460081c16159384809561063c575b8015610625575b156105c95760ff1981166001178655846105b8575b50811561057a576001600160a01b038116156105345782156104fe5761049a9061046560ff875460081c16610460816116bd565b6116bd565b61046e33611675565b61048b60ff875460081c16610482816116bd565b610460816116bd565b60ff1960655416606555611675565b6001600160601b0360a01b60fb54161760fb556001600160601b0360a01b60fc54161760fc556104c75780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606490fd5b604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606490fd5b61ffff19166101011785555f61042c565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156104175750600160ff821614610417565b50600160ff821610610410565b8380fd5b5080fd5b50346107c65760c03660031901126107c65760243560043567ffffffffffffffff82116107c657366023830112156107c65781600401359267ffffffffffffffff84116107c65736602485850101116107c6576044359167ffffffffffffffff83116107c657366023840112156107c657826004013567ffffffffffffffff81116107c6573660248260051b860101116107c65760fc546084359660643593916001600160a01b03163303610919576107086115d9565b821561090a5787156108fb578361071f848a6115c6565b11156108da575f5b8363ffffffff821610156107ca576024641fffffffe0600583901b16880101356001600160a01b03811691908290036107c657815f5260fd60205260405f208054928b84106107ab57506002810180545f1981146100875763ffffffff946107959260018f930190556114f7565b90551663ffffffff811461008757600101610727565b838c91634f779ceb60e01b5f5260045260245260445260645ffd5b5f80fd5b5060fb5494955087946001600160a01b031687813b156107c6575f91602487608486946040519788968795869363d66eaabd60e01b85528c60048601526060828601528260648601520184840137818101830188905260a4356044830152601f01601f191681010301925af180156108cf576108b1575b5084936108968594610891869586957f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c60408051888152846020820152a260fc546001600160a01b0316946115c6565b6114f7565b908282156108a8575bf1156103735780f35b506108fc61089f565b6108969550936108c55f61089195966114a5565b5f95509392610841565b6040513d5f823e3d90fd5b836108e5848a6115c6565b90637899ec7160e01b5f5260045260245260445ffd5b6351d432c560e11b5f5260045ffd5b630c43ac2960e41b5f5260045ffd5b6302a5785160e31b5f523360045260245ffd5b346107c6575f3660031901126107c6576109446115d9565b335f5260fd60205260405f2054156109a757610e10420180421161008757335f81815260fd6020908152604091829020600101849055905192835290917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439190a2005b63b38340cf60e01b5f523360045260245ffd5b346107c6575f3660031901126107c65760fb546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6576033546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c657610a2261161d565b610a2a6115d9565b600160ff1960655416176065557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346107c6575f3660031901126107c6576020604051610e108152f35b346107c6575f3660031901126107c657610a9761161d565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346107c6575f3660031901126107c657602060ff606554166040519015158152f35b346107c6575f3660031901126107c65760fc546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610b7b5760206040515f5160206118105f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b60403660031901126107c657610bfa611479565b60243567ffffffffffffffff81116107c657366023820112156107c6578060040135610c25816114db565b90610c3360405192836114a5565b808252602082019236602483830101116107c657815f92602460209301863783010152610cad7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c8f30821415611504565b5f5160206118105f395f51905f52546001600160a01b031614611565565b610cb561161d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610cec575050610cea9061171d565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610f0c575b50610d765760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203610eb557610d928461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610ead575b610dcb57005b833b15610e5c5750610cea925f92839251915af43d15610e55573d610def816114db565b90610dfd60405192836114a5565b81523d5f602083013e5b60405191610e166060846114a5565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526117b4565b6060610e07565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610dc5565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610f38575b81610f28602093836114a5565b810103126107c657519086610d15565b3d9150610f1b565b346107c65760203660031901126107c6576001600160a01b03610f61611479565b165f5260fd6020526020600160405f200154604051908152f35b346107c6575f3660031901126107c657610f9361161d565b60655460ff811615610fd25760ff19166065557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346107c65760203660031901126107c657611027611479565b6110607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c8f30821415611504565b61106861161d565b60209060405161107883826114a5565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110bd575050610cea915061171d565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f91816112db575b506111465760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203611284576111628461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061127d575b61119b57005b833b1561122c5750610cea93925f92839251915af43d15611224573d906111c1826114db565b916111cf60405193846114a5565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051936112086060866114a5565b60278552840152660819985a5b195960ca1b60408401526117b4565b6060906111d8565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f611195565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611303575b6112f381836114a5565b810103126107c6575190876110e5565b503d6112e9565b346107c65760203660031901126107c6576004356113266115d9565b335f5260fd60205260405f20908154918183106113f35760018101908154801580156113ea575b6113d4575061135e835f94956114f7565b905555337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd5f80a2805f81156113cb575b5f80809381933390f1156108cf576040519081527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d60203392a2005b506108fc61138f565b635f6e272d60e11b5f526004524260245260445ffd5b5042811161134d565b50906321c3d50f60e01b5f5260045260245260445ffd5b346107c65760203660031901126107c6576001600160a01b0361142b611479565b165f5260fd602052602060405f2054604051908152f35b346107c65760203660031901126107c6576020906001600160a01b03611466611479565b165f5260fd8252600260405f2001548152f35b600435906001600160a01b03821682036107c657565b602435906001600160a01b03821682036107c657565b90601f8019910116810190811067ffffffffffffffff8211176114c757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116114c757601f01601f191660200190565b9190820391821161008757565b1561150b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561156c57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b8181029291811591840414171561008757565b60ff606554166115e557565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b6033546001600160a01b0316330361163157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b156116c457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156117595760018060a01b03166001600160601b0360a01b5f5160206118105f395f51905f525416175f5160206118105f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156117c0575090565b8151156117d05750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c744ec1e96c5cf26e15b252ac9b803717aa2db960126b08e41b9920bda86d72864736f6c634300081b0033","output":"0x608080604052600436101561009b575b50361561001a575f80fd5b60fb546001600160a01b0316330361002e57005b335f5260fd60205260405f208054903482018092116100875755335f5260fd6020525f60016040822001556040513481527f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77060203392a2005b634e487b7160e01b5f52601160045260245ffd5b5f905f3560e01c90816317d89c4e14611442575080632df4e21e1461140a5780632e1a7d4d1461130a5780633659cfe61461100e5780633f4ba83a14610f7b5780634d5431ea14610f405780634f1ef28614610be657806352d1902d14610b2457806358b96e2714610afc5780635c975abb14610ada578063715018a614610a7f57806373e289d014610a635780638456cb5914610a0a5780638da5cb5b146109e2578063953ef807146109ba578063a69df4b51461092c578063a7d3180914610651578063c0c53b8b146103b6578063c392299e146102f0578063c89109131461029f578063f2fde38b1461020e5763f83d08ba0361000f573461020b578060031936011261020b576101ad6115d9565b33815260fd6020526040812054156101f85733815260fd602052806001604082200155337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd8280a280f35b63366095e160e11b815233600452602490fd5b80fd5b503461020b57602036600319011261020b57610228611479565b61023061161d565b6001600160a01b0381161561024b5761024890611675565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461020b57602036600319011261020b576060906040906001600160a01b036102c7611479565b16815260fd60205220805490600260018201549101549060405192835260208301526040820152f35b50604036600319011261020b578060043561030961148f565b9061031261161d565b60fb546001600160a01b031691823b156103b157838093602460405180968193632e1a7d4d60e01b83528760048401525af19283156103a6578493610389575b50829182918290821561037f575b6001600160a01b031690f1156103735780f35b604051903d90823e3d90fd5b6108fc9150610360565b83610396919492946114a5565b6103a25782915f610352565b5050fd5b6040513d86823e3d90fd5b505050fd5b503461020b57606036600319011261020b576004356001600160a01b0381169081900361064d576103e561148f565b906044356001600160a01b03811691908290036106495783549260ff8460081c16159384809561063c575b8015610625575b156105c95760ff1981166001178655846105b8575b50811561057a576001600160a01b038116156105345782156104fe5761049a9061046560ff875460081c16610460816116bd565b6116bd565b61046e33611675565b61048b60ff875460081c16610482816116bd565b610460816116bd565b60ff1960655416606555611675565b6001600160601b0360a01b60fb54161760fb556001600160601b0360a01b60fc54161760fc556104c75780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606490fd5b604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606490fd5b61ffff19166101011785555f61042c565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156104175750600160ff821614610417565b50600160ff821610610410565b8380fd5b5080fd5b50346107c65760c03660031901126107c65760243560043567ffffffffffffffff82116107c657366023830112156107c65781600401359267ffffffffffffffff84116107c65736602485850101116107c6576044359167ffffffffffffffff83116107c657366023840112156107c657826004013567ffffffffffffffff81116107c6573660248260051b860101116107c65760fc546084359660643593916001600160a01b03163303610919576107086115d9565b821561090a5787156108fb578361071f848a6115c6565b11156108da575f5b8363ffffffff821610156107ca576024641fffffffe0600583901b16880101356001600160a01b03811691908290036107c657815f5260fd60205260405f208054928b84106107ab57506002810180545f1981146100875763ffffffff946107959260018f930190556114f7565b90551663ffffffff811461008757600101610727565b838c91634f779ceb60e01b5f5260045260245260445260645ffd5b5f80fd5b5060fb5494955087946001600160a01b031687813b156107c6575f91602487608486946040519788968795869363d66eaabd60e01b85528c60048601526060828601528260648601520184840137818101830188905260a4356044830152601f01601f191681010301925af180156108cf576108b1575b5084936108968594610891869586957f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c60408051888152846020820152a260fc546001600160a01b0316946115c6565b6114f7565b908282156108a8575bf1156103735780f35b506108fc61089f565b6108969550936108c55f61089195966114a5565b5f95509392610841565b6040513d5f823e3d90fd5b836108e5848a6115c6565b90637899ec7160e01b5f5260045260245260445ffd5b6351d432c560e11b5f5260045ffd5b630c43ac2960e41b5f5260045ffd5b6302a5785160e31b5f523360045260245ffd5b346107c6575f3660031901126107c6576109446115d9565b335f5260fd60205260405f2054156109a757610e10420180421161008757335f81815260fd6020908152604091829020600101849055905192835290917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439190a2005b63b38340cf60e01b5f523360045260245ffd5b346107c6575f3660031901126107c65760fb546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6576033546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c657610a2261161d565b610a2a6115d9565b600160ff1960655416176065557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346107c6575f3660031901126107c6576020604051610e108152f35b346107c6575f3660031901126107c657610a9761161d565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346107c6575f3660031901126107c657602060ff606554166040519015158152f35b346107c6575f3660031901126107c65760fc546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6577f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b03163003610b7b5760206040515f5160206118105f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b60403660031901126107c657610bfa611479565b60243567ffffffffffffffff81116107c657366023820112156107c6578060040135610c25816114db565b90610c3360405192836114a5565b808252602082019236602483830101116107c657815f92602460209301863783010152610cad7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b5f5160206118105f395f51905f52546001600160a01b031614611565565b610cb561161d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610cec575050610cea9061171d565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610f0c575b50610d765760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203610eb557610d928461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610ead575b610dcb57005b833b15610e5c5750610cea925f92839251915af43d15610e55573d610def816114db565b90610dfd60405192836114a5565b81523d5f602083013e5b60405191610e166060846114a5565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526117b4565b6060610e07565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610dc5565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610f38575b81610f28602093836114a5565b810103126107c657519086610d15565b3d9150610f1b565b346107c65760203660031901126107c6576001600160a01b03610f61611479565b165f5260fd6020526020600160405f200154604051908152f35b346107c6575f3660031901126107c657610f9361161d565b60655460ff811615610fd25760ff19166065557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346107c65760203660031901126107c657611027611479565b6110607f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b61106861161d565b60209060405161107883826114a5565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110bd575050610cea915061171d565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f91816112db575b506111465760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203611284576111628461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061127d575b61119b57005b833b1561122c5750610cea93925f92839251915af43d15611224573d906111c1826114db565b916111cf60405193846114a5565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051936112086060866114a5565b60278552840152660819985a5b195960ca1b60408401526117b4565b6060906111d8565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f611195565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611303575b6112f381836114a5565b810103126107c6575190876110e5565b503d6112e9565b346107c65760203660031901126107c6576004356113266115d9565b335f5260fd60205260405f20908154918183106113f35760018101908154801580156113ea575b6113d4575061135e835f94956114f7565b905555337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd5f80a2805f81156113cb575b5f80809381933390f1156108cf576040519081527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d60203392a2005b506108fc61138f565b635f6e272d60e11b5f526004524260245260445ffd5b5042811161134d565b50906321c3d50f60e01b5f5260045260245260445ffd5b346107c65760203660031901126107c6576001600160a01b0361142b611479565b165f5260fd602052602060405f2054604051908152f35b346107c65760203660031901126107c6576020906001600160a01b03611466611479565b165f5260fd8252600260405f2001548152f35b600435906001600160a01b03821682036107c657565b602435906001600160a01b03821682036107c657565b90601f8019910116810190811067ffffffffffffffff8211176114c757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116114c757601f01601f191660200190565b9190820391821161008757565b1561150b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561156c57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b8181029291811591840414171561008757565b60ff606554166115e557565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b6033546001600160a01b0316330361163157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b156116c457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156117595760018060a01b03166001600160601b0360a01b5f5160206118105f395f51905f525416175f5160206118105f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156117c0575090565b8151156117d05750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c744ec1e96c5cf26e15b252ac9b803717aa2db960126b08e41b9920bda86d72864736f6c634300081b0033","gas_used":1273601,"gas_limit":1702245,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608080604052600436101561009b575b50361561001a575f80fd5b60fb546001600160a01b0316330361002e57005b335f5260fd60205260405f208054903482018092116100875755335f5260fd6020525f60016040822001556040513481527f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77060203392a2005b634e487b7160e01b5f52601160045260245ffd5b5f905f3560e01c90816317d89c4e14611442575080632df4e21e1461140a5780632e1a7d4d1461130a5780633659cfe61461100e5780633f4ba83a14610f7b5780634d5431ea14610f405780634f1ef28614610be657806352d1902d14610b2457806358b96e2714610afc5780635c975abb14610ada578063715018a614610a7f57806373e289d014610a635780638456cb5914610a0a5780638da5cb5b146109e2578063953ef807146109ba578063a69df4b51461092c578063a7d3180914610651578063c0c53b8b146103b6578063c392299e146102f0578063c89109131461029f578063f2fde38b1461020e5763f83d08ba0361000f573461020b578060031936011261020b576101ad6115d9565b33815260fd6020526040812054156101f85733815260fd602052806001604082200155337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd8280a280f35b63366095e160e11b815233600452602490fd5b80fd5b503461020b57602036600319011261020b57610228611479565b61023061161d565b6001600160a01b0381161561024b5761024890611675565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461020b57602036600319011261020b576060906040906001600160a01b036102c7611479565b16815260fd60205220805490600260018201549101549060405192835260208301526040820152f35b50604036600319011261020b578060043561030961148f565b9061031261161d565b60fb546001600160a01b031691823b156103b157838093602460405180968193632e1a7d4d60e01b83528760048401525af19283156103a6578493610389575b50829182918290821561037f575b6001600160a01b031690f1156103735780f35b604051903d90823e3d90fd5b6108fc9150610360565b83610396919492946114a5565b6103a25782915f610352565b5050fd5b6040513d86823e3d90fd5b505050fd5b503461020b57606036600319011261020b576004356001600160a01b0381169081900361064d576103e561148f565b906044356001600160a01b03811691908290036106495783549260ff8460081c16159384809561063c575b8015610625575b156105c95760ff1981166001178655846105b8575b50811561057a576001600160a01b038116156105345782156104fe5761049a9061046560ff875460081c16610460816116bd565b6116bd565b61046e33611675565b61048b60ff875460081c16610482816116bd565b610460816116bd565b60ff1960655416606555611675565b6001600160601b0360a01b60fb54161760fb556001600160601b0360a01b60fc54161760fc556104c75780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606490fd5b604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606490fd5b61ffff19166101011785555f61042c565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156104175750600160ff821614610417565b50600160ff821610610410565b8380fd5b5080fd5b50346107c65760c03660031901126107c65760243560043567ffffffffffffffff82116107c657366023830112156107c65781600401359267ffffffffffffffff84116107c65736602485850101116107c6576044359167ffffffffffffffff83116107c657366023840112156107c657826004013567ffffffffffffffff81116107c6573660248260051b860101116107c65760fc546084359660643593916001600160a01b03163303610919576107086115d9565b821561090a5787156108fb578361071f848a6115c6565b11156108da575f5b8363ffffffff821610156107ca576024641fffffffe0600583901b16880101356001600160a01b03811691908290036107c657815f5260fd60205260405f208054928b84106107ab57506002810180545f1981146100875763ffffffff946107959260018f930190556114f7565b90551663ffffffff811461008757600101610727565b838c91634f779ceb60e01b5f5260045260245260445260645ffd5b5f80fd5b5060fb5494955087946001600160a01b031687813b156107c6575f91602487608486946040519788968795869363d66eaabd60e01b85528c60048601526060828601528260648601520184840137818101830188905260a4356044830152601f01601f191681010301925af180156108cf576108b1575b5084936108968594610891869586957f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c60408051888152846020820152a260fc546001600160a01b0316946115c6565b6114f7565b908282156108a8575bf1156103735780f35b506108fc61089f565b6108969550936108c55f61089195966114a5565b5f95509392610841565b6040513d5f823e3d90fd5b836108e5848a6115c6565b90637899ec7160e01b5f5260045260245260445ffd5b6351d432c560e11b5f5260045ffd5b630c43ac2960e41b5f5260045ffd5b6302a5785160e31b5f523360045260245ffd5b346107c6575f3660031901126107c6576109446115d9565b335f5260fd60205260405f2054156109a757610e10420180421161008757335f81815260fd6020908152604091829020600101849055905192835290917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439190a2005b63b38340cf60e01b5f523360045260245ffd5b346107c6575f3660031901126107c65760fb546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6576033546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c657610a2261161d565b610a2a6115d9565b600160ff1960655416176065557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346107c6575f3660031901126107c6576020604051610e108152f35b346107c6575f3660031901126107c657610a9761161d565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346107c6575f3660031901126107c657602060ff606554166040519015158152f35b346107c6575f3660031901126107c65760fc546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6577f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b03163003610b7b5760206040515f5160206118105f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b60403660031901126107c657610bfa611479565b60243567ffffffffffffffff81116107c657366023820112156107c6578060040135610c25816114db565b90610c3360405192836114a5565b808252602082019236602483830101116107c657815f92602460209301863783010152610cad7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b5f5160206118105f395f51905f52546001600160a01b031614611565565b610cb561161d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610cec575050610cea9061171d565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610f0c575b50610d765760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203610eb557610d928461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610ead575b610dcb57005b833b15610e5c5750610cea925f92839251915af43d15610e55573d610def816114db565b90610dfd60405192836114a5565b81523d5f602083013e5b60405191610e166060846114a5565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526117b4565b6060610e07565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610dc5565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610f38575b81610f28602093836114a5565b810103126107c657519086610d15565b3d9150610f1b565b346107c65760203660031901126107c6576001600160a01b03610f61611479565b165f5260fd6020526020600160405f200154604051908152f35b346107c6575f3660031901126107c657610f9361161d565b60655460ff811615610fd25760ff19166065557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346107c65760203660031901126107c657611027611479565b6110607f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b61106861161d565b60209060405161107883826114a5565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110bd575050610cea915061171d565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f91816112db575b506111465760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203611284576111628461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061127d575b61119b57005b833b1561122c5750610cea93925f92839251915af43d15611224573d906111c1826114db565b916111cf60405193846114a5565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051936112086060866114a5565b60278552840152660819985a5b195960ca1b60408401526117b4565b6060906111d8565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f611195565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611303575b6112f381836114a5565b810103126107c6575190876110e5565b503d6112e9565b346107c65760203660031901126107c6576004356113266115d9565b335f5260fd60205260405f20908154918183106113f35760018101908154801580156113ea575b6113d4575061135e835f94956114f7565b905555337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd5f80a2805f81156113cb575b5f80809381933390f1156108cf576040519081527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d60203392a2005b506108fc61138f565b635f6e272d60e11b5f526004524260245260445ffd5b5042811161134d565b50906321c3d50f60e01b5f5260045260245260445ffd5b346107c65760203660031901126107c6576001600160a01b0361142b611479565b165f5260fd602052602060405f2054604051908152f35b346107c65760203660031901126107c6576020906001600160a01b03611466611479565b165f5260fd8252600260405f2001548152f35b600435906001600160a01b03821682036107c657565b602435906001600160a01b03821682036107c657565b90601f8019910116810190811067ffffffffffffffff8211176114c757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116114c757601f01601f191660200190565b9190820391821161008757565b1561150b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561156c57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b8181029291811591840414171561008757565b60ff606554166115e557565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b6033546001600160a01b0316330361163157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b156116c457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156117595760018060a01b03166001600160601b0360a01b5f5160206118105f395f51905f525416175f5160206118105f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156117c0575090565b8151156117d05750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c744ec1e96c5cf26e15b252ac9b803717aa2db960126b08e41b9920bda86d72864736f6c634300081b0033","nonce":56,"gas_used":1428815},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x15cd4f","logs":[{"address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000001000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000"},"block_hash":"0x84c056559f2e02597c4a63d49cd134d54994cca86dd7a1c96e94807bcedd6554","block_number":27},{"info":{"transaction_hash":"0xf04e7416e9cae4211819c83dd98e98390e03b88cf5c28e5bbdaaaf2de6742e1b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xfd471836031dc5108809d173a067e8486b9047a3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xfd471836031dc5108809d173a067e8486b9047a3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a080604052346100da57306080525f549060ff8260081c16610088575060ff8082161061004e575b60405161151290816100df823960805181818161093f01528181610a640152610d8f0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","output":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","gas_used":1103220,"gas_limit":1476728,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","nonce":59,"gas_used":1245028},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x12ff64","logs":[{"address":"0xfd471836031dc5108809d173a067e8486b9047a3","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xbb43bdce354cf48cd9e8ab7fb9ae0df8b7b20db4a41831eff7056d30d7c85448","block_number":30},{"info":{"transaction_hash":"0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","gas_used":4859861,"gas_limit":6452395,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","nonce":12,"gas_used":5308447},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x51001f","logs":[{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000"},"block_hash":"0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee","block_number":11},{"info":{"transaction_hash":"0xb5bbb83b59fb20783381782bdb0aa23231bc93b0d7d1367fb32ad0ca979b3ba2","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x851356ae760d987e095750cceb3bc6014560891c","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","gas_used":421667,"gas_limit":578117,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","nonce":36,"gas_used":521501},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x7f51d","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000002000000000000000010000000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000020000000000000"},"block_hash":"0xb4086485440798e64843ad74485184e273d0a29b8eb6c73e06c5a49d8aefdca3","block_number":9},{"info":{"transaction_hash":"0xadf5de66d8fd77344bd236b9ebedc146b7b17d75ee4a7916ec9f12e7b6391ccd","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x8c95ff1e0000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf","output":"0x","gas_used":29222,"gas_limit":48532,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee6"],"data":"0xa4594c59000000000000000000000000000000000000000000000000000000000000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Call":0},{"Log":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","address":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2a510436","output":"0xa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e285913","gas_used":153,"gas_limit":42768,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x","nonce":3,"gas_used":50654},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc5de","logs":[{"address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","topics":["0xcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee6"],"data":"0xa4594c59000000000000000000000000000000000000000000000000000000000000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000"},"block_hash":"0x20311dd5af038637ed3fa85a4d62c9b4c1285ce8a0299ebcb7c0ceda0b7794fb","block_number":4},{"info":{"transaction_hash":"0x0ac294643ab8c52a2c1c6afc36ad26f25bfcb53ce0ba4b905a242e29ecef07bf","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x998abeb3e57409262ae5b751f60747921b33613e","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","gas_used":421667,"gas_limit":578117,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","nonce":39,"gas_used":521501},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xfea3a","logs":[{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00002000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000800000000000002000000000000000000000000000000000000000000000000000000000000000000000000800000000000000100000000000000000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000020000000000000"},"block_hash":"0x90b9606a944251847a71cb743bc77eff59af777f4257795b090a2b43b0c48eb6","block_number":11},{"info":{"transaction_hash":"0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","gas_used":1156594,"gas_limit":1549847,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","nonce":26,"gas_used":1310846},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x149917","logs":[{"address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","block_number":22},{"info":{"transaction_hash":"0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","gas_used":2265519,"gas_limit":3017745,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","nonce":15,"gas_used":2507423},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x26429f","logs":[{"address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000"},"block_hash":"0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184","block_number":13},{"info":{"transaction_hash":"0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70560,"gas_limit":106135,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64623,"gas_limit":98680,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51790,"gas_limit":84955,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":21,"gas_used":93312},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16c80","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27","block_number":18},{"info":{"transaction_hash":"0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70539,"gas_limit":113685,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64602,"gas_limit":106112,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51769,"gas_limit":92271,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":24,"gas_used":93291},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16c6b","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb","block_number":21},{"info":{"transaction_hash":"0x13bd8d3fa7d4753b978e9cf9272e503132fabbd2d00b4dba99f9781c8ecd2c0d","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234610242576105ba803803806100198161025a565b9283398101906040818303126102425780516001600160401b0381116102425781019180601f84011215610242578251926001600160401b038411610246578360051b9060208061006b81850161025a565b80978152019282010192831161024257602001905b82821061022a57846100946020860161027f565b905f5b815181101561016257600581901b8201602001516001600160a01b0316908115610107577f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b91526040836001945f525f602052815f208560ff198254161790558151908152846020820152a101610097565b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b6001600160a01b03831680156101cd57600154604080516001600160a01b0383168152602081018490527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e88929190a16001600160a01b0319161760015560405161032690816102948239f35b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b602080916102378461027f565b815201910190610080565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b0381118382101761024657604052565b51906001600160a01b03821682036102425756fe6080806040526004361015610012575f80fd5b5f3560e01c90816346fbf68e14610243575080638568520614610153578063ce548428146100745763eab66d7a14610048575f80fd5b34610070575f366003190112610070576001546040516001600160a01b039091168152602090f35b5f80fd5b346100705760203660031901126100705761008d61027b565b6001546001600160a01b038116916100a6338414610291565b6001600160a01b03169182156100f65760407f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892918151908152846020820152a16001600160a01b03191617600155005b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b346100705760403660031901126100705761016c61027b565b602435908115158092036100705761018f60018060a01b03600154163314610291565b6001600160a01b03169081156101e857816040917f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152935f525f602052825f2060ff1981541660ff831617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b34610070576020366003190112610070576020906001600160a01b0361026761027b565b165f525f825260ff60405f20541615158152f35b600435906001600160a01b038216820361007057565b1561029857565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fdfea2646970667358221220e71c0c74ddb607e4c85c23ba6d84d6508e60f3e2f8ae33144c449252ab1a1e7364736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816346fbf68e14610243575080638568520614610153578063ce548428146100745763eab66d7a14610048575f80fd5b34610070575f366003190112610070576001546040516001600160a01b039091168152602090f35b5f80fd5b346100705760203660031901126100705761008d61027b565b6001546001600160a01b038116916100a6338414610291565b6001600160a01b03169182156100f65760407f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892918151908152846020820152a16001600160a01b03191617600155005b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b346100705760403660031901126100705761016c61027b565b602435908115158092036100705761018f60018060a01b03600154163314610291565b6001600160a01b03169081156101e857816040917f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152935f525f602052825f2060ff1981541660ff831617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b34610070576020366003190112610070576020906001600160a01b0361026761027b565b165f525f825260ff60405f20541615158152f35b600435906001600160a01b038216820361007057565b1561029857565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fdfea2646970667358221220e71c0c74ddb607e4c85c23ba6d84d6508e60f3e2f8ae33144c449252ab1a1e7364736f6c634300081b0033","gas_used":209305,"gas_limit":295278,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816346fbf68e14610243575080638568520614610153578063ce548428146100745763eab66d7a14610048575f80fd5b34610070575f366003190112610070576001546040516001600160a01b039091168152602090f35b5f80fd5b346100705760203660031901126100705761008d61027b565b6001546001600160a01b038116916100a6338414610291565b6001600160a01b03169182156100f65760407f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892918151908152846020820152a16001600160a01b03191617600155005b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b346100705760403660031901126100705761016c61027b565b602435908115158092036100705761018f60018060a01b03600154163314610291565b6001600160a01b03169081156101e857816040917f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152935f525f602052825f2060ff1981541660ff831617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b34610070576020366003190112610070576020906001600160a01b0361026761027b565b165f525f825260ff60405f20541615158152f35b600435906001600160a01b038216820361007057565b1561029857565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fdfea2646970667358221220e71c0c74ddb607e4c85c23ba6d84d6508e60f3e2f8ae33144c449252ab1a1e7364736f6c634300081b0033","nonce":34,"gas_used":286577},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x45f71","logs":[{"address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9","topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}],"logsBloom":"0x00000000000000040000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000004001000000000000000"},"block_hash":"0x5fdceab7dcbffb6a1b885ef6eee71a2b836cc42598f27fe46a283b2ae99f1dc5","block_number":7},{"info":{"transaction_hash":"0xea277b3ad6a38782d4e229a655d3e930188ed28ec4f196c692077be5c59f4582","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9d4454b023096f34b160d6b654540c56a1f81688","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9d4454b023096f34b160d6b654540c56a1f81688","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a03461012f57601f611d7c38819003918201601f19168301916001600160401b038311848410176101335780849260209460405283398101031261012f57516001600160a01b0381169081900361012f576080525f5460ff8160081c166100da5760ff808216106100a0575b604051611c34908161014882396080518181816102180152818161048001528181610768015281816109140152610c400152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f61006c565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062a1f4cb1461012957806313542a4e146100e857806326d941f214610124578063377ed99d1461011f5780633fb279521461011a57806347b314e8146100e35780635f61a88414610115578063605747d51461011057806368bccaac1461010b5780636d14a987146101065780637916cea6146101015780637ff81a87146100fc578063a3db80e2146100f7578063bf79ce58146100f2578063d5254a8c146100ed578063de29fac0146100e8578063e8bb9ae6146100e35763f4e24fe5146100de575f80fd5b610c0a565b6104fd565b6101b1565b610b9d565b6108d6565b61088b565b61084a565b6107d7565b610753565b610618565b61058b565b610529565b61044a565b6102fc565b6101f9565b61015c565b600435906001600160a01b038216820361014457565b5f80fd5b35906001600160a01b038216820361014457565b34610144576020366003190112610144576001600160a01b0361017d61012e565b165f52600360205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b0390f35b34610144576020366003190112610144576001600160a01b036101d261012e565b165f526001602052602060405f2054604051908152f35b6004359060ff8216820361014457565b34610144576020366003190112610144576102126101e9565b610246337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b60ff81165f52600460205260405f2054610298576102726102969160ff165f52600460205260405f2090565b61027a6103a7565b5f81524363ffffffff166020820152905b5f6040830152610d12565b005b60405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608490fd5b346101445760203660031901126101445760ff6103176101e9565b165f526004602052602063ffffffff60405f205416604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761036457604052565b610334565b6060810190811067ffffffffffffffff82111761036457604052565b90601f8019910116810190811067ffffffffffffffff82111761036457604052565b604051906103b6606083610385565b565b906103b66040519283610385565b906040600319830112610144576103dd6004610148565b9160243567ffffffffffffffff811161014457816023820112156101445780600401359067ffffffffffffffff82116103645760405192610428601f8401601f191660200185610385565b8284526024838301011161014457815f92602460209301838601378301015290565b34610144577f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e610479366103c6565b906104ae337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b6104c16104ba82610eb4565b508361156f565b60018060a01b0381165f5260016020526104e660405f20549260405193849384610d87565b0390a1005b60209060031901126101445760043590565b346101445761050b366104eb565b5f526002602052602060018060a01b0360405f205416604051908152f35b346101445760203660031901126101445760ff6105446101e9565b61054c610dc7565b50165f5260056020526040805f20600182519161056883610348565b80548352015460208201526105898251809260208091805184520151910152565bf35b34610144576040366003190112610144576105e06105da6105aa6101e9565b60ff602435915f604080516105be81610369565b8281528260208201520152165f52600460205260405f206107c2565b50610dfd565b604051809163ffffffff6040606084019267ffffffffffffffff19815116855282602082015116602086015201511660408301520390f35b34610144576060366003190112610144576106316101e9565b6024359063ffffffff8216809203610144576105da6106679160ff61065560443590565b91165f52600460205260405f206107c2565b9063ffffffff60208301511681106106e857816106ad6106bc9261069560406101ad96015163ffffffff1690565b9063ffffffff8216159182156106d8575b5050610e36565b5167ffffffffffffffff191690565b60405167ffffffffffffffff1990911681529081906020820190565b63ffffffff161190505f806106a6565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608490fd5b34610144575f366003190112610144576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054156107bd575f5260205f20905f90565b610797565b80548210156107bd575f5260205f2001905f90565b34610144576040366003190112610144576107f06101e9565b60ff60243591165f52600460205260405f2090815481101561014457610815916107c2565b50546040805182821b67ffffffffffffffff1916815260c083901c63ffffffff16602082015260e09290921c90820152606090f35b3461014457602036600319011261014457606061086d61086861012e565b610eb4565b610884604051809360208091805184520151910152565b6040820152f35b346101445760203660031901126101445760ff6108a66101e9565b165f52600560205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b3461014457610160366003190112610144576108f061012e565b61010036602319011261014457604036610123190112610144576101ad90610942337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b61096061094e36610f6f565b80515f526020015160205260405f2090565b9061098d7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5831415610fea565b6001600160a01b0381165f9081526001602052604090206109af905415611048565b5f828152600260205260409020546109d0906001600160a01b0316156110b7565b604051610a9790610a9290610a3c906020810190610a1381610a0561014435610124356084356064356044356024358a611121565b03601f198101835282610385565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b610a60610a4836610f97565b610a5a83610a5536610f6f565b611737565b9061177d565b90610a82610a6c611805565b91610a5a610a7936610fbf565b91610a556118fc565b90610a8c366111a5565b926119e1565b6111de565b6001600160a01b0381165f908152600360205260409020610ac19060643581556001608435910155565b6001600160a01b0381165f908152600160205260409020829055610b1081610af1845f52600260205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03909116907fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba38280419080610b4b81611278565b0390a26040519081529081906020820190565b60206040818301928281528451809452019201905f5b818110610b815750505090565b825163ffffffff16845260209384019390920191600101610b74565b346101445760403660031901126101445760043567ffffffffffffffff8111610144573660238201121561014457806004013567ffffffffffffffff8111610144573660248284010111610144576101ad91610bfe91602480359201611339565b60405191829182610b5e565b34610144577ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e610c39366103c6565b90610c6e337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c89565b6104c1610c83610c7d83610eb4565b50611b1e565b8361156f565b15610c9057565b60405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a490fd5b80546801000000000000000081101561036457610d34916001820181556107c2565b610d74578151602083015160409384015163ffffffff60c01b60c09290921b919091169190931c1760e09290921b6001600160e01b031916919091179055565b634e487b7160e01b5f525f60045260245ffd5b919260809360209260018060a01b0316845282840152606060408401528051918291826060860152018484015e5f828201840152601f01601f1916010190565b60405190610dd482610348565b5f6020838281520152565b90604051610dec81610348565b602060018294805484520154910152565b90604051610e0a81610369565b604081935467ffffffffffffffff1981831b16835263ffffffff8160c01c16602084015260e01c910152565b15610e3d57565b60405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a490fd5b610ebc610dc7565b5060018060a01b031690815f52600360205260405f2091600160405193610ee285610348565b80548552015460208401525f52600160205260405f2054918215610f04579190565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608490fd5b60409060631901126101445760405190610f8882610348565b60643582526084356020830152565b60409060231901126101445760405190610fb082610348565b60243582526044356020830152565b6040906101231901126101445760405190610fd982610348565b610124358252610144356020830152565b15610ff157565b608460405162461bcd60e51b815260206004820152604060248201525f516020611bdf5f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152fd5b1561104f57565b60405162461bcd60e51b815260206004820152604760248201525f516020611bdf5f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a490fd5b156110be57565b60405162461bcd60e51b815260206004820152604260248201525f516020611bdf5f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a490fd5b949290916101409694928652602086015260408501526060840152604060a46080850137604060e460c08501376101008301526101208201520190565b9080601f830112156101445760405191611179604084610385565b82906040810192831161014457905b8282106111955750505090565b8135815260209182019101611188565b90608060a319830112610144576040516111be81610348565b60206111d982946111d08160a461115e565b845260e461115e565b910152565b156111e557565b60405162461bcd60e51b815260206004820152606c60248201525f516020611bdf5f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c490fd5b90604060e4608060c0850194606435815260843560208201528360a4818301370137565b67ffffffffffffffff81116103645760051b60200190565b906112be8261129c565b6112cb6040519182610385565b82815280926112dc601f199161129c565b0190602036910137565b908210156107bd570190565b634e487b7160e01b5f52601160045260245ffd5b8015611312575f190190565b6112f2565b5f1981019190821161131257565b80518210156107bd5760209160051b010190565b919091611345836112b4565b925f5b818110611356575050505090565b61137b6113756113678385876112e6565b356001600160f81b03191690565b60f81c90565b6113908160ff165f52600460205260405f2090565b54801580156114c1575b61143c57805b6113af575b5050600101611348565b8563ffffffff6113ed6113df6113d08660ff165f52600460205260405f2090565b6113d986611317565b906107c2565b505460c01c63ffffffff1690565b161115611403576113fd90611306565b806113a0565b600192915061142061141761143592611317565b63ffffffff1690565b61142a8389611325565b9063ffffffff169052565b905f6113a5565b60405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a490fd5b506114e56114176113df6114e08560ff165f52600460205260405f2090565b6107ab565b861061139a565b9081518110156107bd570160200190565b1561150457565b60405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608490fd5b9190611579610dc7565b504363ffffffff16905f5b84518110156117045780836115af6113756115a16001958a6114ec565b516001600160f81b03191690565b6115c48160ff165f52600460205260405f2090565b54906115d18215156114fd565b61165761163861162a611600896115fb6115f68760ff165f52600560205260405f2090565b610ddf565b61177d565b61094e816116198760ff165f52600560205260405f2090565b906020600191805184550151910155565b67ffffffffffffffff191690565b926113d96116518460ff165f52600460205260405f2090565b91611317565b50908361166f611417845463ffffffff9060c01c1690565b03611698575061169292509060401c67ffffffffffffffff60c01b825416179055565b01611584565b81546001600160e01b031660e09490941b6001600160e01b0319169390931790556116ff916116d29060ff165f52600460205260405f2090565b6116ee6116dd6103a7565b67ffffffffffffffff199093168352565b63ffffffff8716602083015261028b565b611692565b5050509050565b6040519061018061171c8184610385565b368337565b60405190611730602083610385565b6020368337565b91906040906060611746610dc7565b94859260208551926117588585610385565b8436853780518452015160208301528482015260076107cf195a01fa1561177b57565bfe5b60209291608060409261178e610dc7565b9586938186519361179f8686610385565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561177b57156117d057565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b60405161181181610348565b60409081516118208382610385565b82368237815260208251916118358484610385565b83368437015280516118478282610385565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602082015281519061189d8383610385565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526118f283519384610385565b8252602082015290565b611904610dc7565b5060405161191181610348565b600181526002602082015290565b9060068202918083046006149015171561131257565b9060028110156107bd5760051b0190565b906001820180921161131257565b906002820180921161131257565b906003820180921161131257565b906004820180921161131257565b906005820180921161131257565b90600c8110156107bd5760051b0190565b156119a457565b60405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606490fd5b9290916119ee60406103b8565b9384526020840152611a0060406103b8565b9182526020820152611a1061170b565b915f5b60028110611a4d57505050602061018091611a2c611721565b92839160086107cf195a01fa801561177b57611a479061199d565b51151590565b80611a5960019261191f565b611a638285611935565b5151611a6f828861198c565b526020611a7c8386611935565b510151611a91611a8b83611946565b8861198c565b52611a9c8286611935565b515151611aab611a8b83611954565b52611ac1611ab98387611935565b515160200190565b51611ace611a8b83611962565b526020611adb8387611935565b51015151611aeb611a8b83611970565b52611b17611b11611b0a6020611b01868a611935565b51015160200190565b519261197e565b8761198c565b5201611a13565b611b26610dc7565b50805190811580611bd2575b15611b53575050604051611b47604082610385565b5f81525f602082015290565b60207f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47910151067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47811161131257604051916118f2604084610385565b50602081015115611b3256fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220907abf636d9e883e89ae38478a10f1607c3e4b038b27973de3ffd4e2d7a9915664736f6c634300081b0033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","output":"0x60806040526004361015610011575f80fd5b5f3560e01c8062a1f4cb1461012957806313542a4e146100e857806326d941f214610124578063377ed99d1461011f5780633fb279521461011a57806347b314e8146100e35780635f61a88414610115578063605747d51461011057806368bccaac1461010b5780636d14a987146101065780637916cea6146101015780637ff81a87146100fc578063a3db80e2146100f7578063bf79ce58146100f2578063d5254a8c146100ed578063de29fac0146100e8578063e8bb9ae6146100e35763f4e24fe5146100de575f80fd5b610c0a565b6104fd565b6101b1565b610b9d565b6108d6565b61088b565b61084a565b6107d7565b610753565b610618565b61058b565b610529565b61044a565b6102fc565b6101f9565b61015c565b600435906001600160a01b038216820361014457565b5f80fd5b35906001600160a01b038216820361014457565b34610144576020366003190112610144576001600160a01b0361017d61012e565b165f52600360205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b0390f35b34610144576020366003190112610144576001600160a01b036101d261012e565b165f526001602052602060405f2054604051908152f35b6004359060ff8216820361014457565b34610144576020366003190112610144576102126101e9565b610246337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b60ff81165f52600460205260405f2054610298576102726102969160ff165f52600460205260405f2090565b61027a6103a7565b5f81524363ffffffff166020820152905b5f6040830152610d12565b005b60405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608490fd5b346101445760203660031901126101445760ff6103176101e9565b165f526004602052602063ffffffff60405f205416604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761036457604052565b610334565b6060810190811067ffffffffffffffff82111761036457604052565b90601f8019910116810190811067ffffffffffffffff82111761036457604052565b604051906103b6606083610385565b565b906103b66040519283610385565b906040600319830112610144576103dd6004610148565b9160243567ffffffffffffffff811161014457816023820112156101445780600401359067ffffffffffffffff82116103645760405192610428601f8401601f191660200185610385565b8284526024838301011161014457815f92602460209301838601378301015290565b34610144577f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e610479366103c6565b906104ae337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c16104ba82610eb4565b508361156f565b60018060a01b0381165f5260016020526104e660405f20549260405193849384610d87565b0390a1005b60209060031901126101445760043590565b346101445761050b366104eb565b5f526002602052602060018060a01b0360405f205416604051908152f35b346101445760203660031901126101445760ff6105446101e9565b61054c610dc7565b50165f5260056020526040805f20600182519161056883610348565b80548352015460208201526105898251809260208091805184520151910152565bf35b34610144576040366003190112610144576105e06105da6105aa6101e9565b60ff602435915f604080516105be81610369565b8281528260208201520152165f52600460205260405f206107c2565b50610dfd565b604051809163ffffffff6040606084019267ffffffffffffffff19815116855282602082015116602086015201511660408301520390f35b34610144576060366003190112610144576106316101e9565b6024359063ffffffff8216809203610144576105da6106679160ff61065560443590565b91165f52600460205260405f206107c2565b9063ffffffff60208301511681106106e857816106ad6106bc9261069560406101ad96015163ffffffff1690565b9063ffffffff8216159182156106d8575b5050610e36565b5167ffffffffffffffff191690565b60405167ffffffffffffffff1990911681529081906020820190565b63ffffffff161190505f806106a6565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608490fd5b34610144575f366003190112610144576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054156107bd575f5260205f20905f90565b610797565b80548210156107bd575f5260205f2001905f90565b34610144576040366003190112610144576107f06101e9565b60ff60243591165f52600460205260405f2090815481101561014457610815916107c2565b50546040805182821b67ffffffffffffffff1916815260c083901c63ffffffff16602082015260e09290921c90820152606090f35b3461014457602036600319011261014457606061086d61086861012e565b610eb4565b610884604051809360208091805184520151910152565b6040820152f35b346101445760203660031901126101445760ff6108a66101e9565b165f52600560205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b3461014457610160366003190112610144576108f061012e565b61010036602319011261014457604036610123190112610144576101ad90610942337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b61096061094e36610f6f565b80515f526020015160205260405f2090565b9061098d7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5831415610fea565b6001600160a01b0381165f9081526001602052604090206109af905415611048565b5f828152600260205260409020546109d0906001600160a01b0316156110b7565b604051610a9790610a9290610a3c906020810190610a1381610a0561014435610124356084356064356044356024358a611121565b03601f198101835282610385565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b610a60610a4836610f97565b610a5a83610a5536610f6f565b611737565b9061177d565b90610a82610a6c611805565b91610a5a610a7936610fbf565b91610a556118fc565b90610a8c366111a5565b926119e1565b6111de565b6001600160a01b0381165f908152600360205260409020610ac19060643581556001608435910155565b6001600160a01b0381165f908152600160205260409020829055610b1081610af1845f52600260205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03909116907fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba38280419080610b4b81611278565b0390a26040519081529081906020820190565b60206040818301928281528451809452019201905f5b818110610b815750505090565b825163ffffffff16845260209384019390920191600101610b74565b346101445760403660031901126101445760043567ffffffffffffffff8111610144573660238201121561014457806004013567ffffffffffffffff8111610144573660248284010111610144576101ad91610bfe91602480359201611339565b60405191829182610b5e565b34610144577ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e610c39366103c6565b90610c6e337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c1610c83610c7d83610eb4565b50611b1e565b8361156f565b15610c9057565b60405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a490fd5b80546801000000000000000081101561036457610d34916001820181556107c2565b610d74578151602083015160409384015163ffffffff60c01b60c09290921b919091169190931c1760e09290921b6001600160e01b031916919091179055565b634e487b7160e01b5f525f60045260245ffd5b919260809360209260018060a01b0316845282840152606060408401528051918291826060860152018484015e5f828201840152601f01601f1916010190565b60405190610dd482610348565b5f6020838281520152565b90604051610dec81610348565b602060018294805484520154910152565b90604051610e0a81610369565b604081935467ffffffffffffffff1981831b16835263ffffffff8160c01c16602084015260e01c910152565b15610e3d57565b60405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a490fd5b610ebc610dc7565b5060018060a01b031690815f52600360205260405f2091600160405193610ee285610348565b80548552015460208401525f52600160205260405f2054918215610f04579190565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608490fd5b60409060631901126101445760405190610f8882610348565b60643582526084356020830152565b60409060231901126101445760405190610fb082610348565b60243582526044356020830152565b6040906101231901126101445760405190610fd982610348565b610124358252610144356020830152565b15610ff157565b608460405162461bcd60e51b815260206004820152604060248201525f516020611bdf5f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152fd5b1561104f57565b60405162461bcd60e51b815260206004820152604760248201525f516020611bdf5f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a490fd5b156110be57565b60405162461bcd60e51b815260206004820152604260248201525f516020611bdf5f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a490fd5b949290916101409694928652602086015260408501526060840152604060a46080850137604060e460c08501376101008301526101208201520190565b9080601f830112156101445760405191611179604084610385565b82906040810192831161014457905b8282106111955750505090565b8135815260209182019101611188565b90608060a319830112610144576040516111be81610348565b60206111d982946111d08160a461115e565b845260e461115e565b910152565b156111e557565b60405162461bcd60e51b815260206004820152606c60248201525f516020611bdf5f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c490fd5b90604060e4608060c0850194606435815260843560208201528360a4818301370137565b67ffffffffffffffff81116103645760051b60200190565b906112be8261129c565b6112cb6040519182610385565b82815280926112dc601f199161129c565b0190602036910137565b908210156107bd570190565b634e487b7160e01b5f52601160045260245ffd5b8015611312575f190190565b6112f2565b5f1981019190821161131257565b80518210156107bd5760209160051b010190565b919091611345836112b4565b925f5b818110611356575050505090565b61137b6113756113678385876112e6565b356001600160f81b03191690565b60f81c90565b6113908160ff165f52600460205260405f2090565b54801580156114c1575b61143c57805b6113af575b5050600101611348565b8563ffffffff6113ed6113df6113d08660ff165f52600460205260405f2090565b6113d986611317565b906107c2565b505460c01c63ffffffff1690565b161115611403576113fd90611306565b806113a0565b600192915061142061141761143592611317565b63ffffffff1690565b61142a8389611325565b9063ffffffff169052565b905f6113a5565b60405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a490fd5b506114e56114176113df6114e08560ff165f52600460205260405f2090565b6107ab565b861061139a565b9081518110156107bd570160200190565b1561150457565b60405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608490fd5b9190611579610dc7565b504363ffffffff16905f5b84518110156117045780836115af6113756115a16001958a6114ec565b516001600160f81b03191690565b6115c48160ff165f52600460205260405f2090565b54906115d18215156114fd565b61165761163861162a611600896115fb6115f68760ff165f52600560205260405f2090565b610ddf565b61177d565b61094e816116198760ff165f52600560205260405f2090565b906020600191805184550151910155565b67ffffffffffffffff191690565b926113d96116518460ff165f52600460205260405f2090565b91611317565b50908361166f611417845463ffffffff9060c01c1690565b03611698575061169292509060401c67ffffffffffffffff60c01b825416179055565b01611584565b81546001600160e01b031660e09490941b6001600160e01b0319169390931790556116ff916116d29060ff165f52600460205260405f2090565b6116ee6116dd6103a7565b67ffffffffffffffff199093168352565b63ffffffff8716602083015261028b565b611692565b5050509050565b6040519061018061171c8184610385565b368337565b60405190611730602083610385565b6020368337565b91906040906060611746610dc7565b94859260208551926117588585610385565b8436853780518452015160208301528482015260076107cf195a01fa1561177b57565bfe5b60209291608060409261178e610dc7565b9586938186519361179f8686610385565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561177b57156117d057565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b60405161181181610348565b60409081516118208382610385565b82368237815260208251916118358484610385565b83368437015280516118478282610385565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602082015281519061189d8383610385565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526118f283519384610385565b8252602082015290565b611904610dc7565b5060405161191181610348565b600181526002602082015290565b9060068202918083046006149015171561131257565b9060028110156107bd5760051b0190565b906001820180921161131257565b906002820180921161131257565b906003820180921161131257565b906004820180921161131257565b906005820180921161131257565b90600c8110156107bd5760051b0190565b156119a457565b60405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606490fd5b9290916119ee60406103b8565b9384526020840152611a0060406103b8565b9182526020820152611a1061170b565b915f5b60028110611a4d57505050602061018091611a2c611721565b92839160086107cf195a01fa801561177b57611a479061199d565b51151590565b80611a5960019261191f565b611a638285611935565b5151611a6f828861198c565b526020611a7c8386611935565b510151611a91611a8b83611946565b8861198c565b52611a9c8286611935565b515151611aab611a8b83611954565b52611ac1611ab98387611935565b515160200190565b51611ace611a8b83611962565b526020611adb8387611935565b51015151611aeb611a8b83611970565b52611b17611b11611b0a6020611b01868a611935565b51015160200190565b519261197e565b8761198c565b5201611a13565b611b26610dc7565b50805190811580611bd2575b15611b53575050604051611b47604082610385565b5f81525f602082015290565b60207f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47910151067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47811161131257604051916118f2604084610385565b50602081015115611b3256fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220907abf636d9e883e89ae38478a10f1607c3e4b038b27973de3ffd4e2d7a9915664736f6c634300081b0033","gas_used":1469019,"gas_limit":1961387,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c8062a1f4cb1461012957806313542a4e146100e857806326d941f214610124578063377ed99d1461011f5780633fb279521461011a57806347b314e8146100e35780635f61a88414610115578063605747d51461011057806368bccaac1461010b5780636d14a987146101065780637916cea6146101015780637ff81a87146100fc578063a3db80e2146100f7578063bf79ce58146100f2578063d5254a8c146100ed578063de29fac0146100e8578063e8bb9ae6146100e35763f4e24fe5146100de575f80fd5b610c0a565b6104fd565b6101b1565b610b9d565b6108d6565b61088b565b61084a565b6107d7565b610753565b610618565b61058b565b610529565b61044a565b6102fc565b6101f9565b61015c565b600435906001600160a01b038216820361014457565b5f80fd5b35906001600160a01b038216820361014457565b34610144576020366003190112610144576001600160a01b0361017d61012e565b165f52600360205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b0390f35b34610144576020366003190112610144576001600160a01b036101d261012e565b165f526001602052602060405f2054604051908152f35b6004359060ff8216820361014457565b34610144576020366003190112610144576102126101e9565b610246337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b60ff81165f52600460205260405f2054610298576102726102969160ff165f52600460205260405f2090565b61027a6103a7565b5f81524363ffffffff166020820152905b5f6040830152610d12565b005b60405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608490fd5b346101445760203660031901126101445760ff6103176101e9565b165f526004602052602063ffffffff60405f205416604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761036457604052565b610334565b6060810190811067ffffffffffffffff82111761036457604052565b90601f8019910116810190811067ffffffffffffffff82111761036457604052565b604051906103b6606083610385565b565b906103b66040519283610385565b906040600319830112610144576103dd6004610148565b9160243567ffffffffffffffff811161014457816023820112156101445780600401359067ffffffffffffffff82116103645760405192610428601f8401601f191660200185610385565b8284526024838301011161014457815f92602460209301838601378301015290565b34610144577f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e610479366103c6565b906104ae337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c16104ba82610eb4565b508361156f565b60018060a01b0381165f5260016020526104e660405f20549260405193849384610d87565b0390a1005b60209060031901126101445760043590565b346101445761050b366104eb565b5f526002602052602060018060a01b0360405f205416604051908152f35b346101445760203660031901126101445760ff6105446101e9565b61054c610dc7565b50165f5260056020526040805f20600182519161056883610348565b80548352015460208201526105898251809260208091805184520151910152565bf35b34610144576040366003190112610144576105e06105da6105aa6101e9565b60ff602435915f604080516105be81610369565b8281528260208201520152165f52600460205260405f206107c2565b50610dfd565b604051809163ffffffff6040606084019267ffffffffffffffff19815116855282602082015116602086015201511660408301520390f35b34610144576060366003190112610144576106316101e9565b6024359063ffffffff8216809203610144576105da6106679160ff61065560443590565b91165f52600460205260405f206107c2565b9063ffffffff60208301511681106106e857816106ad6106bc9261069560406101ad96015163ffffffff1690565b9063ffffffff8216159182156106d8575b5050610e36565b5167ffffffffffffffff191690565b60405167ffffffffffffffff1990911681529081906020820190565b63ffffffff161190505f806106a6565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608490fd5b34610144575f366003190112610144576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054156107bd575f5260205f20905f90565b610797565b80548210156107bd575f5260205f2001905f90565b34610144576040366003190112610144576107f06101e9565b60ff60243591165f52600460205260405f2090815481101561014457610815916107c2565b50546040805182821b67ffffffffffffffff1916815260c083901c63ffffffff16602082015260e09290921c90820152606090f35b3461014457602036600319011261014457606061086d61086861012e565b610eb4565b610884604051809360208091805184520151910152565b6040820152f35b346101445760203660031901126101445760ff6108a66101e9565b165f52600560205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b3461014457610160366003190112610144576108f061012e565b61010036602319011261014457604036610123190112610144576101ad90610942337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b61096061094e36610f6f565b80515f526020015160205260405f2090565b9061098d7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5831415610fea565b6001600160a01b0381165f9081526001602052604090206109af905415611048565b5f828152600260205260409020546109d0906001600160a01b0316156110b7565b604051610a9790610a9290610a3c906020810190610a1381610a0561014435610124356084356064356044356024358a611121565b03601f198101835282610385565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b610a60610a4836610f97565b610a5a83610a5536610f6f565b611737565b9061177d565b90610a82610a6c611805565b91610a5a610a7936610fbf565b91610a556118fc565b90610a8c366111a5565b926119e1565b6111de565b6001600160a01b0381165f908152600360205260409020610ac19060643581556001608435910155565b6001600160a01b0381165f908152600160205260409020829055610b1081610af1845f52600260205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03909116907fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba38280419080610b4b81611278565b0390a26040519081529081906020820190565b60206040818301928281528451809452019201905f5b818110610b815750505090565b825163ffffffff16845260209384019390920191600101610b74565b346101445760403660031901126101445760043567ffffffffffffffff8111610144573660238201121561014457806004013567ffffffffffffffff8111610144573660248284010111610144576101ad91610bfe91602480359201611339565b60405191829182610b5e565b34610144577ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e610c39366103c6565b90610c6e337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c1610c83610c7d83610eb4565b50611b1e565b8361156f565b15610c9057565b60405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a490fd5b80546801000000000000000081101561036457610d34916001820181556107c2565b610d74578151602083015160409384015163ffffffff60c01b60c09290921b919091169190931c1760e09290921b6001600160e01b031916919091179055565b634e487b7160e01b5f525f60045260245ffd5b919260809360209260018060a01b0316845282840152606060408401528051918291826060860152018484015e5f828201840152601f01601f1916010190565b60405190610dd482610348565b5f6020838281520152565b90604051610dec81610348565b602060018294805484520154910152565b90604051610e0a81610369565b604081935467ffffffffffffffff1981831b16835263ffffffff8160c01c16602084015260e01c910152565b15610e3d57565b60405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a490fd5b610ebc610dc7565b5060018060a01b031690815f52600360205260405f2091600160405193610ee285610348565b80548552015460208401525f52600160205260405f2054918215610f04579190565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608490fd5b60409060631901126101445760405190610f8882610348565b60643582526084356020830152565b60409060231901126101445760405190610fb082610348565b60243582526044356020830152565b6040906101231901126101445760405190610fd982610348565b610124358252610144356020830152565b15610ff157565b608460405162461bcd60e51b815260206004820152604060248201525f516020611bdf5f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152fd5b1561104f57565b60405162461bcd60e51b815260206004820152604760248201525f516020611bdf5f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a490fd5b156110be57565b60405162461bcd60e51b815260206004820152604260248201525f516020611bdf5f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a490fd5b949290916101409694928652602086015260408501526060840152604060a46080850137604060e460c08501376101008301526101208201520190565b9080601f830112156101445760405191611179604084610385565b82906040810192831161014457905b8282106111955750505090565b8135815260209182019101611188565b90608060a319830112610144576040516111be81610348565b60206111d982946111d08160a461115e565b845260e461115e565b910152565b156111e557565b60405162461bcd60e51b815260206004820152606c60248201525f516020611bdf5f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c490fd5b90604060e4608060c0850194606435815260843560208201528360a4818301370137565b67ffffffffffffffff81116103645760051b60200190565b906112be8261129c565b6112cb6040519182610385565b82815280926112dc601f199161129c565b0190602036910137565b908210156107bd570190565b634e487b7160e01b5f52601160045260245ffd5b8015611312575f190190565b6112f2565b5f1981019190821161131257565b80518210156107bd5760209160051b010190565b919091611345836112b4565b925f5b818110611356575050505090565b61137b6113756113678385876112e6565b356001600160f81b03191690565b60f81c90565b6113908160ff165f52600460205260405f2090565b54801580156114c1575b61143c57805b6113af575b5050600101611348565b8563ffffffff6113ed6113df6113d08660ff165f52600460205260405f2090565b6113d986611317565b906107c2565b505460c01c63ffffffff1690565b161115611403576113fd90611306565b806113a0565b600192915061142061141761143592611317565b63ffffffff1690565b61142a8389611325565b9063ffffffff169052565b905f6113a5565b60405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a490fd5b506114e56114176113df6114e08560ff165f52600460205260405f2090565b6107ab565b861061139a565b9081518110156107bd570160200190565b1561150457565b60405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608490fd5b9190611579610dc7565b504363ffffffff16905f5b84518110156117045780836115af6113756115a16001958a6114ec565b516001600160f81b03191690565b6115c48160ff165f52600460205260405f2090565b54906115d18215156114fd565b61165761163861162a611600896115fb6115f68760ff165f52600560205260405f2090565b610ddf565b61177d565b61094e816116198760ff165f52600560205260405f2090565b906020600191805184550151910155565b67ffffffffffffffff191690565b926113d96116518460ff165f52600460205260405f2090565b91611317565b50908361166f611417845463ffffffff9060c01c1690565b03611698575061169292509060401c67ffffffffffffffff60c01b825416179055565b01611584565b81546001600160e01b031660e09490941b6001600160e01b0319169390931790556116ff916116d29060ff165f52600460205260405f2090565b6116ee6116dd6103a7565b67ffffffffffffffff199093168352565b63ffffffff8716602083015261028b565b611692565b5050509050565b6040519061018061171c8184610385565b368337565b60405190611730602083610385565b6020368337565b91906040906060611746610dc7565b94859260208551926117588585610385565b8436853780518452015160208301528482015260076107cf195a01fa1561177b57565bfe5b60209291608060409261178e610dc7565b9586938186519361179f8686610385565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561177b57156117d057565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b60405161181181610348565b60409081516118208382610385565b82368237815260208251916118358484610385565b83368437015280516118478282610385565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602082015281519061189d8383610385565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526118f283519384610385565b8252602082015290565b611904610dc7565b5060405161191181610348565b600181526002602082015290565b9060068202918083046006149015171561131257565b9060028110156107bd5760051b0190565b906001820180921161131257565b906002820180921161131257565b906003820180921161131257565b906004820180921161131257565b906005820180921161131257565b90600c8110156107bd5760051b0190565b156119a457565b60405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606490fd5b9290916119ee60406103b8565b9384526020840152611a0060406103b8565b9182526020820152611a1061170b565b915f5b60028110611a4d57505050602061018091611a2c611721565b92839160086107cf195a01fa801561177b57611a479061199d565b51151590565b80611a5960019261191f565b611a638285611935565b5151611a6f828861198c565b526020611a7c8386611935565b510151611a91611a8b83611946565b8861198c565b52611a9c8286611935565b515151611aab611a8b83611954565b52611ac1611ab98387611935565b515160200190565b51611ace611a8b83611962565b526020611adb8387611935565b51015151611aeb611a8b83611970565b52611b17611b11611b0a6020611b01868a611935565b51015160200190565b519261197e565b8761198c565b5201611a13565b611b26610dc7565b50805190811580611bd2575b15611b53575050604051611b47604082610385565b5f81525f602082015290565b60207f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47910151067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47811161131257604051916118f2604084610385565b50602081015115611b3256fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220907abf636d9e883e89ae38478a10f1607c3e4b038b27973de3ffd4e2d7a9915664736f6c634300081b0033","nonce":45,"gas_used":1641229},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x190b0d","logs":[{"address":"0x9d4454b023096f34b160d6b654540c56a1f81688","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000080000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000"},"block_hash":"0xc346bedd4c8042d62dfaf5fb5209979ec1aa7fa706f4b08561bbf3cbb415f4c8","block_number":16},{"info":{"transaction_hash":"0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","output":"0x","gas_used":17265,"gas_limit":35332,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe600000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","output":"0x","gas_used":11797,"gas_limit":29441,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":25,"gas_used":39065},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x9899","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000"},"block_hash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","block_number":22},{"info":{"transaction_hash":"0x3c60e70d37b00e7472369f59ac1d4e3c04e59162f74a173588c482670fbe8652","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xf5059a5d33d5853360d16c683c16e67980206f36","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","gas_used":421667,"gas_limit":578117,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","nonce":37,"gas_used":521501},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x7f51d","logs":[{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000800000000000002000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000400000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000020000000000000"},"block_hash":"0x9ad3c840de0cae5443b4c919119304daf1b437dad97229036380fe7b4cf8c518","block_number":10},{"info":{"transaction_hash":"0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","gas_used":207717,"gas_limit":293492,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","nonce":1,"gas_used":285919},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x45cdf","logs":[{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}],"logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000"},"block_hash":"0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96","block_number":2},{"info":{"transaction_hash":"0x0e0e9d804b70d2a5df7d24391d340283584e30f46ad4f375ed9f4a1eb08f5a51","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcd8a1c3ba11cf5ecfa6267617243239504a98d90","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608080604052346015576116b9908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806331b36bd914610ce35780633563b0d114610c4a5780634d2b57fe14610b0c5780634f739f741461046d5780635c155662146102b25763cefdc1d41461005b575f80fd5b346102ae5760603660031901126102ae57610074610e37565b60243590610080610f02565b916040926100d78451926100948685610e7c565b60018452601f198601366020860137806100ad85611084565b5285516361c8a12f60e11b81526001600160a01b0386169490925f91849182918760048401611663565b0381875afa9182156102a45763ffffffff6100fe6020946064935f91610282575b50611084565b511691875195869384926304ec635160e01b8452600484015263ffffffff8716602484015260448301525afa918215610278575f92610247575b506001600160c01b038216915f83805b61020e575061ffff169261015b84610ee7565b9361016887519586610e7c565b808552610177601f1991610ee7565b013660208601375f925f5b8551851080610203575b156101da576001811b84166001600160c01b03166101b3575b6101ae90611655565b610182565b9360016101ae9160ff60f81b8760f81b165f1a6101d0828a6110f4565b53019490506101a5565b87836101ff6101ea858a8c611105565b83519384938452806020850152830190610f15565b0390f35b50610100811061018c565b5f1981018181116102335761ffff9116911661ffff8114610233576001019080610148565b634e487b7160e01b5f52601160045260245ffd5b61026a91925060203d602011610271575b6102628183610e7c565b81019061162a565b905f610138565b503d610258565b84513d5f823e3d90fd5b61029e91503d805f833e6102968183610e7c565b810190611579565b5f6100f8565b86513d5f823e3d90fd5b5f80fd5b346102ae5760603660031901126102ae576102cb610e37565b6024356001600160401b0381116102ae576102ea903690600401610fbc565b6102f2610f02565b6040516361c8a12f60e11b815290926001600160a01b03165f828061031b868860048401611663565b0381845afa918215610402575f92610451575b5082519361035461033e86610e9d565b9561034c6040519788610e7c565b808752610e9d565b602086019490601f19013686375f5b815181101561040d5761037681836110a5565b519060208463ffffffff61038a848a6110a5565b516040516304ec635160e01b8152600481019690965263ffffffff92831660248701521616604484015282606481885afa8015610402576001925f916103e4575b50828060c01b03166103dd828a6110a5565b5201610363565b6103fc915060203d8111610271576102628183610e7c565b896103cb565b6040513d5f823e3d90fd5b8587604051918291602083019060208452518091526040830191905f5b818110610438575050500390f35b825184528594506020938401939092019160010161042a565b6104669192503d805f833e6102968183610e7c565b908461032e565b346102ae5760803660031901126102ae57610486610e37565b60243563ffffffff8116908181036102ae57604435926001600160401b0384116102ae57366023850112156102ae578360040135936001600160401b0385116102ae57602481019060248636920101116102ae57606435926001600160401b0384116102ae57366023850112156102ae578360040135956001600160401b0387116102ae5760248501938760051b9560248736920101116102ae57610529611534565b50604051636830483560e01b81526001600160a01b03919091169390602081600481885afa908115610402575f91610aed575b50610565611534565b604080516361c8a12f60e11b8152600481018b90526024810191909152604481018b905290976001600160fb1b038b116102ae5781606481835f948c848401378101030181895afa908115610402575f91610ad3575b50875260018060a01b031691604051986340e03a8160e11b8a528860048b0152604060248b01525f8a806105f36044820186886115fa565b0381875afa998a15610402575f9a610ab7575b5060408801998a5261061782610e9d565b966106256040519889610e7c565b828852610641601f1961063785610e9d565b0160208a016110d8565b606089019788525f5b60ff81168481101561092e575f6106778261066487611052565b8d519061067183836110a5565b526110a5565b505f84868e5b8d8d8386106106fa5750505050505061069581611052565b905f5b8c8282106106ca5760ff959492506106b8939150519061067183836110a5565b501660ff81146102335760010161064a565b9063ffffffff6106e7826106e188600196516110a5565b516110a5565b51166106f382866110a5565b5201610698565b63ffffffff61071b87610713816020986107559a61161a565b3595516110a5565b516040516304ec635160e01b8152600481019590955263ffffffff9283166024860152161660448301529092839190829081906064820190565b03915afa908115610402575f91610910575b506001600160c01b0316801561087f5760018091610786868b8d611649565b3560f81c1c161461079d575b60010184868e61067d565b908960206107ac84898961161a565b356107b8868b8d611649565b60405163dd9846b960e01b815260048101929092523560f81c602482015263ffffffff929092166044830152816064818d5afa908115610402578d85915f93610829575b509163ffffffff610818856106e16001979561082197516110a5565b91169052611655565b919050610792565b925050506020813d8211610877575b8161084560209383610e7c565b810103126102ae57818d63ffffffff6108186001956106e18961086a61082198611568565b97509550509550506107fc565b3d9150610838565b60405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a490fd5b610928915060203d8111610271576102628183610e7c565b5f610767565b5089898c8e8760048a60208f60405193848092632efa2ca360e11b82525afa908115610402575f93610987938593610a86575b506040519687948593849363354952a360e21b85526040600486015260448501916115fa565b602483019190915203916001600160a01b03165afa91821561040257610a05926109f2915f91610a6c575b5090859493929160206109df970190815260405196879660208852516080602089015260a0880190611019565b9051868203601f19016040880152611019565b9051848203601f19016060860152611019565b905190601f19838203016080840152815180825260208201916020808360051b8301019401925f915b838310610a3b5786860387f35b919395509193602080610a5a600193601f198682030187528951611019565b97019301930190928695949293610a2e565b610a8091503d805f833e6102968183610e7c565b866109b2565b610aa991935060203d602011610ab0575b610aa18183610e7c565b8101906110b9565b9189610961565b503d610a97565b610acc919a503d805f833e6102968183610e7c565b988a610606565b610ae791503d805f833e6102968183610e7c565b8a6105bb565b610b06915060203d602011610ab057610aa18183610e7c565b8961055c565b346102ae5760403660031901126102ae57610b25610e37565b6024356001600160401b0381116102ae57610b44903690600401610fbc565b8051610b68610b5282610e9d565b91610b606040519384610e7c565b808352610e9d565b602082019290601f19013684376001600160a01b03909316925f5b8151811015610bfd57610b9681836110a5565b519060405191630a5aec1960e21b83526004830152602082602481895afa8015610402576001925f91610bdf575b50610bcf82866110a5565b90838060a01b0316905201610b83565b610bf7915060203d8111610ab057610aa18183610e7c565b87610bc4565b8383604051918291602083019060208452518091526040830191905f5b818110610c28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610c1a565b346102ae5760603660031901126102ae57610c63610e37565b6024356001600160401b0381116102ae57366023820112156102ae57806004013591610c8e83610ee7565b610c9b6040519182610e7c565b83815236602485850101116102ae575f6020856101ff966024610ccf97018386013783010152610cc9610f02565b91611105565b604051918291602083526020830190610f15565b346102ae5760403660031901126102ae57610cfc610e37565b602435906001600160401b0382116102ae57366023830112156102ae578160040135610d2781610e9d565b92610d356040519485610e7c565b8184526024602085019260051b820101903682116102ae57602401915b818310610e17578385610d658151611052565b6001600160a01b03909216915f5b8251811015610e01576001600160a01b03610d8e82856110a5565b516040516309aa152760e11b81529116600482015290602082602481885afa8015610402575f90610dcf575b60019250610dc882856110a5565b5201610d73565b506020823d8211610df9575b81610de860209383610e7c565b810103126102ae5760019151610dba565b3d9150610ddb565b604051602080825281906101ff90820185610eb4565b82356001600160a01b03811681036102ae57815260209283019201610d52565b600435906001600160a01b03821682036102ae57565b606081019081106001600160401b03821117610e6857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117610e6857604052565b6001600160401b038111610e685760051b60200190565b90602080835192838152019201905f5b818110610ed15750505090565b8251845260209384019390920191600101610ec4565b6001600160401b038111610e6857601f01601f191660200190565b6044359063ffffffff821682036102ae57565b9080602083519182815201916020808360051b8301019401925f915b838310610f4057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b808210610f805750505060208060019297019301930191939290610f31565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610f61565b9080601f830112156102ae578135610fd381610e9d565b92610fe16040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106110095750505090565b8135815260209182019101610ffc565b90602080835192838152019201905f5b8181106110365750505090565b825163ffffffff16845260209384019390920191600101611029565b9061105c82610e9d565b6110696040519182610e7c565b828152809261107a601f1991610e9d565b0190602036910137565b8051156110915760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156110915760209160051b010190565b908160209103126102ae57516001600160a01b03811681036102ae5790565b5f5b8281106110e657505050565b6060828201526020016110da565b908151811015611091570160200190565b604051636830483560e01b81526001600160a01b0390911692909190602083600481875afa928315610402575f93611513575b50604051634f4c91e160e11b815292602084600481885afa938415610402575f946114ce575b5060206004949560405195868092632efa2ca360e11b82525afa938415610402575f946114ad575b50919493908551926111c161119a85610e9d565b946111a86040519687610e7c565b8086526111b7601f1991610e9d565b01602086016110d8565b5f965b80518810156114a3576111d788826110f4565b51604051638902624560e01b815260f89190911c6004820181905263ffffffff851660248301529790945f866044816001600160a01b0385165afa958615610402575f96611411575b50855161122c81610e9d565b9061123a6040519283610e7c565b808252611249601f1991610e9d565b015f5b8181106113e857505061125f8b896110a5565b5261126a8a886110a5565b505f5b86518110156113d75761128081886110a5565b516040516308f6629d60e31b81526004810191909152906020826024816001600160a01b038e165afa918215610402575f926113b7575b50866112c3828a6110a5565b5160208d6112d1858d6110a5565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff939093166044840152826064816001600160a01b038c165afa908115610402578e925f92611370575b509361135d611369936001600160601b0386946001986040519561134387610e4d565b8a8060a01b0316865260208601521660408401528d6110a5565b519061067183836110a5565b500161126d565b915091506020813d82116113af575b8161138c60209383610e7c565b810103126102ae57516001600160601b03811681036102ae578d9161135d611320565b3d915061137f565b6113d091925060203d8111610ab057610aa18183610e7c565b905f6112b7565b5060019099019890975093506111c4565b6020906040516113f781610e4d565b5f81525f838201525f60408201528282860101520161124c565b9095503d805f833e6114238183610e7c565b8101906020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae57815161145981610e9d565b926114676040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b82821061149357505050945f611220565b8151815260209182019101611482565b5092955050505050565b6114c791945060203d602011610ab057610aa18183610e7c565b925f611186565b9093506020813d60201161150b575b816114ea60209383610e7c565b810103126102ae5751926001600160a01b03841684036102ae57602061115e565b3d91506114dd565b61152d91935060203d602011610ab057610aa18183610e7c565b915f611138565b60405190608082018281106001600160401b03821117610e6857604052606080838181528160208201528160408201520152565b519063ffffffff821682036102ae57565b6020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae5781516115ac81610e9d565b926115ba6040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106115e25750505090565b602080916115ef84611568565b8152019101906115d5565b908060209392818452848401375f828201840152601f01601f1916010190565b91908110156110915760051b0190565b908160209103126102ae57516001600160c01b03811681036102ae5790565b90821015611091570190565b5f1981146102335760010190565b60409063ffffffff61168094931681528160208201520190610eb4565b9056fea26469706673582212205aa9d189ad095bab98556b37227470a01b266e1c907e6602c3b98b12740b02f464736f6c634300081b0033","output":"0x60806040526004361015610011575f80fd5b5f3560e01c806331b36bd914610ce35780633563b0d114610c4a5780634d2b57fe14610b0c5780634f739f741461046d5780635c155662146102b25763cefdc1d41461005b575f80fd5b346102ae5760603660031901126102ae57610074610e37565b60243590610080610f02565b916040926100d78451926100948685610e7c565b60018452601f198601366020860137806100ad85611084565b5285516361c8a12f60e11b81526001600160a01b0386169490925f91849182918760048401611663565b0381875afa9182156102a45763ffffffff6100fe6020946064935f91610282575b50611084565b511691875195869384926304ec635160e01b8452600484015263ffffffff8716602484015260448301525afa918215610278575f92610247575b506001600160c01b038216915f83805b61020e575061ffff169261015b84610ee7565b9361016887519586610e7c565b808552610177601f1991610ee7565b013660208601375f925f5b8551851080610203575b156101da576001811b84166001600160c01b03166101b3575b6101ae90611655565b610182565b9360016101ae9160ff60f81b8760f81b165f1a6101d0828a6110f4565b53019490506101a5565b87836101ff6101ea858a8c611105565b83519384938452806020850152830190610f15565b0390f35b50610100811061018c565b5f1981018181116102335761ffff9116911661ffff8114610233576001019080610148565b634e487b7160e01b5f52601160045260245ffd5b61026a91925060203d602011610271575b6102628183610e7c565b81019061162a565b905f610138565b503d610258565b84513d5f823e3d90fd5b61029e91503d805f833e6102968183610e7c565b810190611579565b5f6100f8565b86513d5f823e3d90fd5b5f80fd5b346102ae5760603660031901126102ae576102cb610e37565b6024356001600160401b0381116102ae576102ea903690600401610fbc565b6102f2610f02565b6040516361c8a12f60e11b815290926001600160a01b03165f828061031b868860048401611663565b0381845afa918215610402575f92610451575b5082519361035461033e86610e9d565b9561034c6040519788610e7c565b808752610e9d565b602086019490601f19013686375f5b815181101561040d5761037681836110a5565b519060208463ffffffff61038a848a6110a5565b516040516304ec635160e01b8152600481019690965263ffffffff92831660248701521616604484015282606481885afa8015610402576001925f916103e4575b50828060c01b03166103dd828a6110a5565b5201610363565b6103fc915060203d8111610271576102628183610e7c565b896103cb565b6040513d5f823e3d90fd5b8587604051918291602083019060208452518091526040830191905f5b818110610438575050500390f35b825184528594506020938401939092019160010161042a565b6104669192503d805f833e6102968183610e7c565b908461032e565b346102ae5760803660031901126102ae57610486610e37565b60243563ffffffff8116908181036102ae57604435926001600160401b0384116102ae57366023850112156102ae578360040135936001600160401b0385116102ae57602481019060248636920101116102ae57606435926001600160401b0384116102ae57366023850112156102ae578360040135956001600160401b0387116102ae5760248501938760051b9560248736920101116102ae57610529611534565b50604051636830483560e01b81526001600160a01b03919091169390602081600481885afa908115610402575f91610aed575b50610565611534565b604080516361c8a12f60e11b8152600481018b90526024810191909152604481018b905290976001600160fb1b038b116102ae5781606481835f948c848401378101030181895afa908115610402575f91610ad3575b50875260018060a01b031691604051986340e03a8160e11b8a528860048b0152604060248b01525f8a806105f36044820186886115fa565b0381875afa998a15610402575f9a610ab7575b5060408801998a5261061782610e9d565b966106256040519889610e7c565b828852610641601f1961063785610e9d565b0160208a016110d8565b606089019788525f5b60ff81168481101561092e575f6106778261066487611052565b8d519061067183836110a5565b526110a5565b505f84868e5b8d8d8386106106fa5750505050505061069581611052565b905f5b8c8282106106ca5760ff959492506106b8939150519061067183836110a5565b501660ff81146102335760010161064a565b9063ffffffff6106e7826106e188600196516110a5565b516110a5565b51166106f382866110a5565b5201610698565b63ffffffff61071b87610713816020986107559a61161a565b3595516110a5565b516040516304ec635160e01b8152600481019590955263ffffffff9283166024860152161660448301529092839190829081906064820190565b03915afa908115610402575f91610910575b506001600160c01b0316801561087f5760018091610786868b8d611649565b3560f81c1c161461079d575b60010184868e61067d565b908960206107ac84898961161a565b356107b8868b8d611649565b60405163dd9846b960e01b815260048101929092523560f81c602482015263ffffffff929092166044830152816064818d5afa908115610402578d85915f93610829575b509163ffffffff610818856106e16001979561082197516110a5565b91169052611655565b919050610792565b925050506020813d8211610877575b8161084560209383610e7c565b810103126102ae57818d63ffffffff6108186001956106e18961086a61082198611568565b97509550509550506107fc565b3d9150610838565b60405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a490fd5b610928915060203d8111610271576102628183610e7c565b5f610767565b5089898c8e8760048a60208f60405193848092632efa2ca360e11b82525afa908115610402575f93610987938593610a86575b506040519687948593849363354952a360e21b85526040600486015260448501916115fa565b602483019190915203916001600160a01b03165afa91821561040257610a05926109f2915f91610a6c575b5090859493929160206109df970190815260405196879660208852516080602089015260a0880190611019565b9051868203601f19016040880152611019565b9051848203601f19016060860152611019565b905190601f19838203016080840152815180825260208201916020808360051b8301019401925f915b838310610a3b5786860387f35b919395509193602080610a5a600193601f198682030187528951611019565b97019301930190928695949293610a2e565b610a8091503d805f833e6102968183610e7c565b866109b2565b610aa991935060203d602011610ab0575b610aa18183610e7c565b8101906110b9565b9189610961565b503d610a97565b610acc919a503d805f833e6102968183610e7c565b988a610606565b610ae791503d805f833e6102968183610e7c565b8a6105bb565b610b06915060203d602011610ab057610aa18183610e7c565b8961055c565b346102ae5760403660031901126102ae57610b25610e37565b6024356001600160401b0381116102ae57610b44903690600401610fbc565b8051610b68610b5282610e9d565b91610b606040519384610e7c565b808352610e9d565b602082019290601f19013684376001600160a01b03909316925f5b8151811015610bfd57610b9681836110a5565b519060405191630a5aec1960e21b83526004830152602082602481895afa8015610402576001925f91610bdf575b50610bcf82866110a5565b90838060a01b0316905201610b83565b610bf7915060203d8111610ab057610aa18183610e7c565b87610bc4565b8383604051918291602083019060208452518091526040830191905f5b818110610c28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610c1a565b346102ae5760603660031901126102ae57610c63610e37565b6024356001600160401b0381116102ae57366023820112156102ae57806004013591610c8e83610ee7565b610c9b6040519182610e7c565b83815236602485850101116102ae575f6020856101ff966024610ccf97018386013783010152610cc9610f02565b91611105565b604051918291602083526020830190610f15565b346102ae5760403660031901126102ae57610cfc610e37565b602435906001600160401b0382116102ae57366023830112156102ae578160040135610d2781610e9d565b92610d356040519485610e7c565b8184526024602085019260051b820101903682116102ae57602401915b818310610e17578385610d658151611052565b6001600160a01b03909216915f5b8251811015610e01576001600160a01b03610d8e82856110a5565b516040516309aa152760e11b81529116600482015290602082602481885afa8015610402575f90610dcf575b60019250610dc882856110a5565b5201610d73565b506020823d8211610df9575b81610de860209383610e7c565b810103126102ae5760019151610dba565b3d9150610ddb565b604051602080825281906101ff90820185610eb4565b82356001600160a01b03811681036102ae57815260209283019201610d52565b600435906001600160a01b03821682036102ae57565b606081019081106001600160401b03821117610e6857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117610e6857604052565b6001600160401b038111610e685760051b60200190565b90602080835192838152019201905f5b818110610ed15750505090565b8251845260209384019390920191600101610ec4565b6001600160401b038111610e6857601f01601f191660200190565b6044359063ffffffff821682036102ae57565b9080602083519182815201916020808360051b8301019401925f915b838310610f4057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b808210610f805750505060208060019297019301930191939290610f31565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610f61565b9080601f830112156102ae578135610fd381610e9d565b92610fe16040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106110095750505090565b8135815260209182019101610ffc565b90602080835192838152019201905f5b8181106110365750505090565b825163ffffffff16845260209384019390920191600101611029565b9061105c82610e9d565b6110696040519182610e7c565b828152809261107a601f1991610e9d565b0190602036910137565b8051156110915760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156110915760209160051b010190565b908160209103126102ae57516001600160a01b03811681036102ae5790565b5f5b8281106110e657505050565b6060828201526020016110da565b908151811015611091570160200190565b604051636830483560e01b81526001600160a01b0390911692909190602083600481875afa928315610402575f93611513575b50604051634f4c91e160e11b815292602084600481885afa938415610402575f946114ce575b5060206004949560405195868092632efa2ca360e11b82525afa938415610402575f946114ad575b50919493908551926111c161119a85610e9d565b946111a86040519687610e7c565b8086526111b7601f1991610e9d565b01602086016110d8565b5f965b80518810156114a3576111d788826110f4565b51604051638902624560e01b815260f89190911c6004820181905263ffffffff851660248301529790945f866044816001600160a01b0385165afa958615610402575f96611411575b50855161122c81610e9d565b9061123a6040519283610e7c565b808252611249601f1991610e9d565b015f5b8181106113e857505061125f8b896110a5565b5261126a8a886110a5565b505f5b86518110156113d75761128081886110a5565b516040516308f6629d60e31b81526004810191909152906020826024816001600160a01b038e165afa918215610402575f926113b7575b50866112c3828a6110a5565b5160208d6112d1858d6110a5565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff939093166044840152826064816001600160a01b038c165afa908115610402578e925f92611370575b509361135d611369936001600160601b0386946001986040519561134387610e4d565b8a8060a01b0316865260208601521660408401528d6110a5565b519061067183836110a5565b500161126d565b915091506020813d82116113af575b8161138c60209383610e7c565b810103126102ae57516001600160601b03811681036102ae578d9161135d611320565b3d915061137f565b6113d091925060203d8111610ab057610aa18183610e7c565b905f6112b7565b5060019099019890975093506111c4565b6020906040516113f781610e4d565b5f81525f838201525f60408201528282860101520161124c565b9095503d805f833e6114238183610e7c565b8101906020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae57815161145981610e9d565b926114676040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b82821061149357505050945f611220565b8151815260209182019101611482565b5092955050505050565b6114c791945060203d602011610ab057610aa18183610e7c565b925f611186565b9093506020813d60201161150b575b816114ea60209383610e7c565b810103126102ae5751926001600160a01b03841684036102ae57602061115e565b3d91506114dd565b61152d91935060203d602011610ab057610aa18183610e7c565b915f611138565b60405190608082018281106001600160401b03821117610e6857604052606080838181528160208201528160408201520152565b519063ffffffff821682036102ae57565b6020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae5781516115ac81610e9d565b926115ba6040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106115e25750505090565b602080916115ef84611568565b8152019101906115d5565b908060209392818452848401375f828201840152601f01601f1916010190565b91908110156110915760051b0190565b908160209103126102ae57516001600160c01b03811681036102ae5790565b90821015611091570190565b5f1981146102335760010190565b60409063ffffffff61168094931681528160208201520190610eb4565b9056fea26469706673582212205aa9d189ad095bab98556b37227470a01b266e1c907e6602c3b98b12740b02f464736f6c634300081b0033","gas_used":1164616,"gas_limit":1557995,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c806331b36bd914610ce35780633563b0d114610c4a5780634d2b57fe14610b0c5780634f739f741461046d5780635c155662146102b25763cefdc1d41461005b575f80fd5b346102ae5760603660031901126102ae57610074610e37565b60243590610080610f02565b916040926100d78451926100948685610e7c565b60018452601f198601366020860137806100ad85611084565b5285516361c8a12f60e11b81526001600160a01b0386169490925f91849182918760048401611663565b0381875afa9182156102a45763ffffffff6100fe6020946064935f91610282575b50611084565b511691875195869384926304ec635160e01b8452600484015263ffffffff8716602484015260448301525afa918215610278575f92610247575b506001600160c01b038216915f83805b61020e575061ffff169261015b84610ee7565b9361016887519586610e7c565b808552610177601f1991610ee7565b013660208601375f925f5b8551851080610203575b156101da576001811b84166001600160c01b03166101b3575b6101ae90611655565b610182565b9360016101ae9160ff60f81b8760f81b165f1a6101d0828a6110f4565b53019490506101a5565b87836101ff6101ea858a8c611105565b83519384938452806020850152830190610f15565b0390f35b50610100811061018c565b5f1981018181116102335761ffff9116911661ffff8114610233576001019080610148565b634e487b7160e01b5f52601160045260245ffd5b61026a91925060203d602011610271575b6102628183610e7c565b81019061162a565b905f610138565b503d610258565b84513d5f823e3d90fd5b61029e91503d805f833e6102968183610e7c565b810190611579565b5f6100f8565b86513d5f823e3d90fd5b5f80fd5b346102ae5760603660031901126102ae576102cb610e37565b6024356001600160401b0381116102ae576102ea903690600401610fbc565b6102f2610f02565b6040516361c8a12f60e11b815290926001600160a01b03165f828061031b868860048401611663565b0381845afa918215610402575f92610451575b5082519361035461033e86610e9d565b9561034c6040519788610e7c565b808752610e9d565b602086019490601f19013686375f5b815181101561040d5761037681836110a5565b519060208463ffffffff61038a848a6110a5565b516040516304ec635160e01b8152600481019690965263ffffffff92831660248701521616604484015282606481885afa8015610402576001925f916103e4575b50828060c01b03166103dd828a6110a5565b5201610363565b6103fc915060203d8111610271576102628183610e7c565b896103cb565b6040513d5f823e3d90fd5b8587604051918291602083019060208452518091526040830191905f5b818110610438575050500390f35b825184528594506020938401939092019160010161042a565b6104669192503d805f833e6102968183610e7c565b908461032e565b346102ae5760803660031901126102ae57610486610e37565b60243563ffffffff8116908181036102ae57604435926001600160401b0384116102ae57366023850112156102ae578360040135936001600160401b0385116102ae57602481019060248636920101116102ae57606435926001600160401b0384116102ae57366023850112156102ae578360040135956001600160401b0387116102ae5760248501938760051b9560248736920101116102ae57610529611534565b50604051636830483560e01b81526001600160a01b03919091169390602081600481885afa908115610402575f91610aed575b50610565611534565b604080516361c8a12f60e11b8152600481018b90526024810191909152604481018b905290976001600160fb1b038b116102ae5781606481835f948c848401378101030181895afa908115610402575f91610ad3575b50875260018060a01b031691604051986340e03a8160e11b8a528860048b0152604060248b01525f8a806105f36044820186886115fa565b0381875afa998a15610402575f9a610ab7575b5060408801998a5261061782610e9d565b966106256040519889610e7c565b828852610641601f1961063785610e9d565b0160208a016110d8565b606089019788525f5b60ff81168481101561092e575f6106778261066487611052565b8d519061067183836110a5565b526110a5565b505f84868e5b8d8d8386106106fa5750505050505061069581611052565b905f5b8c8282106106ca5760ff959492506106b8939150519061067183836110a5565b501660ff81146102335760010161064a565b9063ffffffff6106e7826106e188600196516110a5565b516110a5565b51166106f382866110a5565b5201610698565b63ffffffff61071b87610713816020986107559a61161a565b3595516110a5565b516040516304ec635160e01b8152600481019590955263ffffffff9283166024860152161660448301529092839190829081906064820190565b03915afa908115610402575f91610910575b506001600160c01b0316801561087f5760018091610786868b8d611649565b3560f81c1c161461079d575b60010184868e61067d565b908960206107ac84898961161a565b356107b8868b8d611649565b60405163dd9846b960e01b815260048101929092523560f81c602482015263ffffffff929092166044830152816064818d5afa908115610402578d85915f93610829575b509163ffffffff610818856106e16001979561082197516110a5565b91169052611655565b919050610792565b925050506020813d8211610877575b8161084560209383610e7c565b810103126102ae57818d63ffffffff6108186001956106e18961086a61082198611568565b97509550509550506107fc565b3d9150610838565b60405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a490fd5b610928915060203d8111610271576102628183610e7c565b5f610767565b5089898c8e8760048a60208f60405193848092632efa2ca360e11b82525afa908115610402575f93610987938593610a86575b506040519687948593849363354952a360e21b85526040600486015260448501916115fa565b602483019190915203916001600160a01b03165afa91821561040257610a05926109f2915f91610a6c575b5090859493929160206109df970190815260405196879660208852516080602089015260a0880190611019565b9051868203601f19016040880152611019565b9051848203601f19016060860152611019565b905190601f19838203016080840152815180825260208201916020808360051b8301019401925f915b838310610a3b5786860387f35b919395509193602080610a5a600193601f198682030187528951611019565b97019301930190928695949293610a2e565b610a8091503d805f833e6102968183610e7c565b866109b2565b610aa991935060203d602011610ab0575b610aa18183610e7c565b8101906110b9565b9189610961565b503d610a97565b610acc919a503d805f833e6102968183610e7c565b988a610606565b610ae791503d805f833e6102968183610e7c565b8a6105bb565b610b06915060203d602011610ab057610aa18183610e7c565b8961055c565b346102ae5760403660031901126102ae57610b25610e37565b6024356001600160401b0381116102ae57610b44903690600401610fbc565b8051610b68610b5282610e9d565b91610b606040519384610e7c565b808352610e9d565b602082019290601f19013684376001600160a01b03909316925f5b8151811015610bfd57610b9681836110a5565b519060405191630a5aec1960e21b83526004830152602082602481895afa8015610402576001925f91610bdf575b50610bcf82866110a5565b90838060a01b0316905201610b83565b610bf7915060203d8111610ab057610aa18183610e7c565b87610bc4565b8383604051918291602083019060208452518091526040830191905f5b818110610c28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610c1a565b346102ae5760603660031901126102ae57610c63610e37565b6024356001600160401b0381116102ae57366023820112156102ae57806004013591610c8e83610ee7565b610c9b6040519182610e7c565b83815236602485850101116102ae575f6020856101ff966024610ccf97018386013783010152610cc9610f02565b91611105565b604051918291602083526020830190610f15565b346102ae5760403660031901126102ae57610cfc610e37565b602435906001600160401b0382116102ae57366023830112156102ae578160040135610d2781610e9d565b92610d356040519485610e7c565b8184526024602085019260051b820101903682116102ae57602401915b818310610e17578385610d658151611052565b6001600160a01b03909216915f5b8251811015610e01576001600160a01b03610d8e82856110a5565b516040516309aa152760e11b81529116600482015290602082602481885afa8015610402575f90610dcf575b60019250610dc882856110a5565b5201610d73565b506020823d8211610df9575b81610de860209383610e7c565b810103126102ae5760019151610dba565b3d9150610ddb565b604051602080825281906101ff90820185610eb4565b82356001600160a01b03811681036102ae57815260209283019201610d52565b600435906001600160a01b03821682036102ae57565b606081019081106001600160401b03821117610e6857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117610e6857604052565b6001600160401b038111610e685760051b60200190565b90602080835192838152019201905f5b818110610ed15750505090565b8251845260209384019390920191600101610ec4565b6001600160401b038111610e6857601f01601f191660200190565b6044359063ffffffff821682036102ae57565b9080602083519182815201916020808360051b8301019401925f915b838310610f4057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b808210610f805750505060208060019297019301930191939290610f31565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610f61565b9080601f830112156102ae578135610fd381610e9d565b92610fe16040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106110095750505090565b8135815260209182019101610ffc565b90602080835192838152019201905f5b8181106110365750505090565b825163ffffffff16845260209384019390920191600101611029565b9061105c82610e9d565b6110696040519182610e7c565b828152809261107a601f1991610e9d565b0190602036910137565b8051156110915760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156110915760209160051b010190565b908160209103126102ae57516001600160a01b03811681036102ae5790565b5f5b8281106110e657505050565b6060828201526020016110da565b908151811015611091570160200190565b604051636830483560e01b81526001600160a01b0390911692909190602083600481875afa928315610402575f93611513575b50604051634f4c91e160e11b815292602084600481885afa938415610402575f946114ce575b5060206004949560405195868092632efa2ca360e11b82525afa938415610402575f946114ad575b50919493908551926111c161119a85610e9d565b946111a86040519687610e7c565b8086526111b7601f1991610e9d565b01602086016110d8565b5f965b80518810156114a3576111d788826110f4565b51604051638902624560e01b815260f89190911c6004820181905263ffffffff851660248301529790945f866044816001600160a01b0385165afa958615610402575f96611411575b50855161122c81610e9d565b9061123a6040519283610e7c565b808252611249601f1991610e9d565b015f5b8181106113e857505061125f8b896110a5565b5261126a8a886110a5565b505f5b86518110156113d75761128081886110a5565b516040516308f6629d60e31b81526004810191909152906020826024816001600160a01b038e165afa918215610402575f926113b7575b50866112c3828a6110a5565b5160208d6112d1858d6110a5565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff939093166044840152826064816001600160a01b038c165afa908115610402578e925f92611370575b509361135d611369936001600160601b0386946001986040519561134387610e4d565b8a8060a01b0316865260208601521660408401528d6110a5565b519061067183836110a5565b500161126d565b915091506020813d82116113af575b8161138c60209383610e7c565b810103126102ae57516001600160601b03811681036102ae578d9161135d611320565b3d915061137f565b6113d091925060203d8111610ab057610aa18183610e7c565b905f6112b7565b5060019099019890975093506111c4565b6020906040516113f781610e4d565b5f81525f838201525f60408201528282860101520161124c565b9095503d805f833e6114238183610e7c565b8101906020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae57815161145981610e9d565b926114676040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b82821061149357505050945f611220565b8151815260209182019101611482565b5092955050505050565b6114c791945060203d602011610ab057610aa18183610e7c565b925f611186565b9093506020813d60201161150b575b816114ea60209383610e7c565b810103126102ae5751926001600160a01b03841684036102ae57602061115e565b3d91506114dd565b61152d91935060203d602011610ab057610aa18183610e7c565b915f611138565b60405190608082018281106001600160401b03821117610e6857604052606080838181528160208201528160408201520152565b519063ffffffff821682036102ae57565b6020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae5781516115ac81610e9d565b926115ba6040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106115e25750505090565b602080916115ef84611568565b8152019101906115d5565b908060209392818452848401375f828201840152601f01601f1916010190565b91908110156110915760051b0190565b908160209103126102ae57516001600160c01b03811681036102ae5790565b90821015611091570190565b5f1981146102335760010190565b60409063ffffffff61168094931681528160208201520190610eb4565b9056fea26469706673582212205aa9d189ad095bab98556b37227470a01b266e1c907e6602c3b98b12740b02f464736f6c634300081b0033","nonce":53,"gas_used":1311266},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x140222","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x94162b3ee6ca489eaa6411d56e5e8dff309e3666c6d071a018b5068f1ad7bfff","block_number":24},{"info":{"transaction_hash":"0x0e184154ccf84eebbf7e669899520643ffe81c577e73e87630532484869b7e37","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x851356ae760d987e095750cceb3bc6014560891c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x4223d5510000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650","output":"0x","gas_used":33603,"gas_limit":33992,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0xde0b6b3a7640000","data":"0x4223d5510000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650","output":"0x","gas_used":26439,"gas_limit":26439,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x0ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0","0x0000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650"],"data":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":58,"gas_used":55035},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xd6fb","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x0ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0","0x0000000000000000000000007bc06c482dead17c0e297afbc32f6e63d3846650"],"data":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000"}],"logsBloom":"0x00000000000000000000000000000000000400000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000020000000000000000000008000000000000000000000040000000000000000000000000000000000080000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x74bcf43188c9c49ba0becb4f814f338621345ace0813e66b5f581e9753c1e347","block_number":29},{"info":{"transaction_hash":"0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":3,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702","block_number":4},{"info":{"transaction_hash":"0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":5,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","block_number":6},{"info":{"transaction_hash":"0x69fa40685941bacfc3c21a4a6fab84cbc803afb78fc84533237448cdb1ebcc3a","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a03461012857601f61106238819003918201601f19168301916001600160401b0383118484101761012c5780849260209460405283398101031261012857516001600160a01b03811690819003610128576080525f5460ff8160081c166100d35760ff80821610610099575b604051610f2190816101418239608051818181610148015281816104b6015281816105a001526106c60152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f61006c565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062bff04d146106b157806312d1d74d1461066c57806326d941f21461057f5780632ed583e5146104e55780636d14a987146104a15780638121906f1461046557806389026245146102f6578063a48bb0ac14610279578063bd29b8cd14610132578063caa3cd7614610118578063e2e68580146100d45763f34109221461009c575f80fd5b346100d05760203660031901126100d057602063ffffffff6100c46100bf6108cd565b610cb2565b54821c16604051908152f35b5f80fd5b346100d05760403660031901126100d05760ff6100ef6108cd565b165f52600160205260405f206024355f52602052602063ffffffff60405f205416604051908152f35b346100d0575f3660031901126100d05760206040515f8152f35b346100d05761014036610879565b9190610176337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146108f0565b4363ffffffff16915f5b84811061018957005b8061019760019287866109ea565b3560f81c805f5260036020526101b260405f20541515610a0a565b805f528260205260405f20845f5260205263ffffffff60405f2054166101d782610cb2565b916101f66101ee63ffffffff855460201c16610a74565b809483610e78565b6102008382610c76565b928584018963ffffffff8254965416145f1461023d575f9150555b82860361022c575b50505001610180565b61023592610bc1565b868080610223565b50815f52600260205263ffffffff60405f2091165f5260205261027460405f20610265610978565b908a82525f6020830152610b7b565b61021b565b346100d05760403660031901126100d0576102f26102cd6102c761029b6108cd565b60ff6102a56108dd565b915f60206102b1610978565b8281520152165f52600360205260405f20610abf565b50610b5b565b60405191829182919091602063ffffffff816040840195828151168552015116910152565b0390f35b346100d05760403660031901126100d05761030f6108cd565b6103176108dd565b9063ffffffff6103278383610ce4565b16610339610334826109d2565b6109ac565b92818452610346826109d2565b602085019390601f19013685375f5b8381106103a0578486604051918291602083019060208452518091526040830191905f5b818110610387575050500390f35b8251845285945060209384019390920191600101610379565b6103b18363ffffffff831684610ddf565b6103bb8288610a8c565b526103c68187610a8c565b51156103d457600101610355565b60405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a490fd5b346100d05760203660031901126100d0576102f26102cd61049c6104876108cd565b5f6020610492610978565b8281520152610cb2565b610b5b565b346100d0575f3660031901126100d0576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100d05760603660031901126100d0576104fe6108cd565b6105066108dd565b6044359163ffffffff831683036100d0576102f29261055c9260ff610556935f6020610530610978565b8281520152165f52600260205263ffffffff60405f2091165f5260205260405f20610b42565b50610aa0565b60405191829182919091602080604083019463ffffffff81511684520151910152565b346100d05760203660031901126100d05760ff61059a6108cd565b6105ce337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146108f0565b16805f52600360205260405f205461060d575f52600360205261060b60405f206105f6610978565b9063ffffffff431682525f6020830152610ad4565b005b60405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608490fd5b346100d05760403660031901126100d0576102f261055c6106ac61068e6108cd565b6106966108dd565b905f60206106a2610978565b8281520152610c76565b610aa0565b346100d0576106bf36610879565b906106f4337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146108f0565b610700610334836109d2565b9282845261070d836109d2565b602085019390601f19013685375f5b81811061076d578486604051918291602083019060208452518091526040830191905f5b81811061074e575050500390f35b825163ffffffff16845285945060209384019390920191600101610740565b6107788183866109ea565b3560f81c90815f52600360205261079460405f20541515610a0a565b61079d82610cb2565b600163ffffffff825460201c16019063ffffffff821161086557836107c88361080393600197610e78565b805f52600260205260405f2063ffffffff6107e285610a74565b165f5260205260405f20541561081c575b6107fc83610a74565b9087610bc1565b63ffffffff610812838a610a8c565b911690520161071c565b805f52600260205260405f2063ffffffff61083685610a74565b165f5260205261086060405f2061084b610978565b9063ffffffff431682525f6020830152610b7b565b6107f3565b634e487b7160e01b5f52601160045260245ffd5b60406003198201126100d0576004359160243567ffffffffffffffff81116100d057826023820112156100d05780600401359267ffffffffffffffff84116100d057602484830101116100d0576024019190565b6004359060ff821682036100d057565b6024359063ffffffff821682036100d057565b156108f757565b60405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a490fd5b604051906040820182811067ffffffffffffffff82111761099857604052565b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761099857604052565b67ffffffffffffffff81116109985760051b60200190565b908210156109f6570190565b634e487b7160e01b5f52603260045260245ffd5b15610a1157565b60405162461bcd60e51b815260206004820152603560248201527f496e64657852656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b63ffffffff5f199116019063ffffffff821161086557565b80518210156109f65760209160051b010190565b906001610aab610978565b9263ffffffff815416845201546020830152565b80548210156109f6575f5260205f2001905f90565b8054600160401b81101561099857610af191600182018155610abf565b610b2f578151815460209384015167ffffffffffffffff1990911663ffffffff9290921691909117921b67ffffffff0000000016919091179055565b565b634e487b7160e01b5f525f60045260245ffd5b80548210156109f6575f5260205f209060011b01905f90565b9063ffffffff610b69610978565b9254818116845260201c166020830152565b8054600160401b81101561099857610b9891600182018155610b42565b919091610b2f5760208163ffffffff8060019451161663ffffffff198554161784550151910155565b9160409063ffffffff60ff7f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f69486610bf98583610c76565b80544386169086168103610c3c5750600101555b1691825f526001602052835f20865f52602052835f2082821683198254161790558351928352166020820152a2565b9050610c7191508383165f526002602052865f208587165f52602052865f20610c63610978565b918252896020830152610b7b565b610c0d565b60ff165f90815260026020908152604080832063ffffffff9490941683529290522080545f19810190811161086557610cae91610b42565b5090565b60ff165f90815260036020526040902080545f19810190811161086557610cae91610abf565b8015610865575f190190565b60ff1690815f52600360205260405f2054805b610d845760405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a490fd5b825f52600360205260405f205f1982019082821161086557610da9916102c791610abf565b63ffffffff81511663ffffffff84161015610dce5750610dc890610cd8565b80610cf7565b6020015163ffffffff169392505050565b60ff909291921691825f52600260205260405f2063ffffffff82165f5260205260405f2054805b610e1257505050505f90565b835f52600260205260405f2063ffffffff83165f5260205260405f205f1982019082821161086557610e479161055691610b42565b63ffffffff81511663ffffffff85161015610e6c5750610e6690610cd8565b80610e06565b60200151949350505050565b919063ffffffff81541663ffffffff43168091145f14610eba5750610b2d92509067ffffffff0000000082549160201b169067ffffffff000000001916179055565b91905060ff610b2d93165f52600360205263ffffffff60405f2091610edd610978565b938452166020830152610ad456fea264697066735822122053d4af3d0c4f2686c612617d49f8b839866038606635662e26fbfc230a697ada64736f6c634300081b0033000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36","output":"0x60806040526004361015610011575f80fd5b5f3560e01c8062bff04d146106b157806312d1d74d1461066c57806326d941f21461057f5780632ed583e5146104e55780636d14a987146104a15780638121906f1461046557806389026245146102f6578063a48bb0ac14610279578063bd29b8cd14610132578063caa3cd7614610118578063e2e68580146100d45763f34109221461009c575f80fd5b346100d05760203660031901126100d057602063ffffffff6100c46100bf6108cd565b610cb2565b54821c16604051908152f35b5f80fd5b346100d05760403660031901126100d05760ff6100ef6108cd565b165f52600160205260405f206024355f52602052602063ffffffff60405f205416604051908152f35b346100d0575f3660031901126100d05760206040515f8152f35b346100d05761014036610879565b9190610176337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b4363ffffffff16915f5b84811061018957005b8061019760019287866109ea565b3560f81c805f5260036020526101b260405f20541515610a0a565b805f528260205260405f20845f5260205263ffffffff60405f2054166101d782610cb2565b916101f66101ee63ffffffff855460201c16610a74565b809483610e78565b6102008382610c76565b928584018963ffffffff8254965416145f1461023d575f9150555b82860361022c575b50505001610180565b61023592610bc1565b868080610223565b50815f52600260205263ffffffff60405f2091165f5260205261027460405f20610265610978565b908a82525f6020830152610b7b565b61021b565b346100d05760403660031901126100d0576102f26102cd6102c761029b6108cd565b60ff6102a56108dd565b915f60206102b1610978565b8281520152165f52600360205260405f20610abf565b50610b5b565b60405191829182919091602063ffffffff816040840195828151168552015116910152565b0390f35b346100d05760403660031901126100d05761030f6108cd565b6103176108dd565b9063ffffffff6103278383610ce4565b16610339610334826109d2565b6109ac565b92818452610346826109d2565b602085019390601f19013685375f5b8381106103a0578486604051918291602083019060208452518091526040830191905f5b818110610387575050500390f35b8251845285945060209384019390920191600101610379565b6103b18363ffffffff831684610ddf565b6103bb8288610a8c565b526103c68187610a8c565b51156103d457600101610355565b60405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a490fd5b346100d05760203660031901126100d0576102f26102cd61049c6104876108cd565b5f6020610492610978565b8281520152610cb2565b610b5b565b346100d0575f3660031901126100d0576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346100d05760603660031901126100d0576104fe6108cd565b6105066108dd565b6044359163ffffffff831683036100d0576102f29261055c9260ff610556935f6020610530610978565b8281520152165f52600260205263ffffffff60405f2091165f5260205260405f20610b42565b50610aa0565b60405191829182919091602080604083019463ffffffff81511684520151910152565b346100d05760203660031901126100d05760ff61059a6108cd565b6105ce337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b16805f52600360205260405f205461060d575f52600360205261060b60405f206105f6610978565b9063ffffffff431682525f6020830152610ad4565b005b60405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608490fd5b346100d05760403660031901126100d0576102f261055c6106ac61068e6108cd565b6106966108dd565b905f60206106a2610978565b8281520152610c76565b610aa0565b346100d0576106bf36610879565b906106f4337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b610700610334836109d2565b9282845261070d836109d2565b602085019390601f19013685375f5b81811061076d578486604051918291602083019060208452518091526040830191905f5b81811061074e575050500390f35b825163ffffffff16845285945060209384019390920191600101610740565b6107788183866109ea565b3560f81c90815f52600360205261079460405f20541515610a0a565b61079d82610cb2565b600163ffffffff825460201c16019063ffffffff821161086557836107c88361080393600197610e78565b805f52600260205260405f2063ffffffff6107e285610a74565b165f5260205260405f20541561081c575b6107fc83610a74565b9087610bc1565b63ffffffff610812838a610a8c565b911690520161071c565b805f52600260205260405f2063ffffffff61083685610a74565b165f5260205261086060405f2061084b610978565b9063ffffffff431682525f6020830152610b7b565b6107f3565b634e487b7160e01b5f52601160045260245ffd5b60406003198201126100d0576004359160243567ffffffffffffffff81116100d057826023820112156100d05780600401359267ffffffffffffffff84116100d057602484830101116100d0576024019190565b6004359060ff821682036100d057565b6024359063ffffffff821682036100d057565b156108f757565b60405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a490fd5b604051906040820182811067ffffffffffffffff82111761099857604052565b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761099857604052565b67ffffffffffffffff81116109985760051b60200190565b908210156109f6570190565b634e487b7160e01b5f52603260045260245ffd5b15610a1157565b60405162461bcd60e51b815260206004820152603560248201527f496e64657852656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b63ffffffff5f199116019063ffffffff821161086557565b80518210156109f65760209160051b010190565b906001610aab610978565b9263ffffffff815416845201546020830152565b80548210156109f6575f5260205f2001905f90565b8054600160401b81101561099857610af191600182018155610abf565b610b2f578151815460209384015167ffffffffffffffff1990911663ffffffff9290921691909117921b67ffffffff0000000016919091179055565b565b634e487b7160e01b5f525f60045260245ffd5b80548210156109f6575f5260205f209060011b01905f90565b9063ffffffff610b69610978565b9254818116845260201c166020830152565b8054600160401b81101561099857610b9891600182018155610b42565b919091610b2f5760208163ffffffff8060019451161663ffffffff198554161784550151910155565b9160409063ffffffff60ff7f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f69486610bf98583610c76565b80544386169086168103610c3c5750600101555b1691825f526001602052835f20865f52602052835f2082821683198254161790558351928352166020820152a2565b9050610c7191508383165f526002602052865f208587165f52602052865f20610c63610978565b918252896020830152610b7b565b610c0d565b60ff165f90815260026020908152604080832063ffffffff9490941683529290522080545f19810190811161086557610cae91610b42565b5090565b60ff165f90815260036020526040902080545f19810190811161086557610cae91610abf565b8015610865575f190190565b60ff1690815f52600360205260405f2054805b610d845760405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a490fd5b825f52600360205260405f205f1982019082821161086557610da9916102c791610abf565b63ffffffff81511663ffffffff84161015610dce5750610dc890610cd8565b80610cf7565b6020015163ffffffff169392505050565b60ff909291921691825f52600260205260405f2063ffffffff82165f5260205260405f2054805b610e1257505050505f90565b835f52600260205260405f2063ffffffff83165f5260205260405f205f1982019082821161086557610e479161055691610b42565b63ffffffff81511663ffffffff85161015610e6c5750610e6690610cd8565b80610e06565b60200151949350505050565b919063ffffffff81541663ffffffff43168091145f14610eba5750610b2d92509067ffffffff0000000082549160201b169067ffffffff000000001916179055565b91905060ff610b2d93165f52600360205263ffffffff60405f2091610edd610978565b938452166020830152610ad456fea264697066735822122053d4af3d0c4f2686c612617d49f8b839866038606635662e26fbfc230a697ada64736f6c634300081b0033","gas_used":798907,"gas_limit":1074123,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c8062bff04d146106b157806312d1d74d1461066c57806326d941f21461057f5780632ed583e5146104e55780636d14a987146104a15780638121906f1461046557806389026245146102f6578063a48bb0ac14610279578063bd29b8cd14610132578063caa3cd7614610118578063e2e68580146100d45763f34109221461009c575f80fd5b346100d05760203660031901126100d057602063ffffffff6100c46100bf6108cd565b610cb2565b54821c16604051908152f35b5f80fd5b346100d05760403660031901126100d05760ff6100ef6108cd565b165f52600160205260405f206024355f52602052602063ffffffff60405f205416604051908152f35b346100d0575f3660031901126100d05760206040515f8152f35b346100d05761014036610879565b9190610176337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b4363ffffffff16915f5b84811061018957005b8061019760019287866109ea565b3560f81c805f5260036020526101b260405f20541515610a0a565b805f528260205260405f20845f5260205263ffffffff60405f2054166101d782610cb2565b916101f66101ee63ffffffff855460201c16610a74565b809483610e78565b6102008382610c76565b928584018963ffffffff8254965416145f1461023d575f9150555b82860361022c575b50505001610180565b61023592610bc1565b868080610223565b50815f52600260205263ffffffff60405f2091165f5260205261027460405f20610265610978565b908a82525f6020830152610b7b565b61021b565b346100d05760403660031901126100d0576102f26102cd6102c761029b6108cd565b60ff6102a56108dd565b915f60206102b1610978565b8281520152165f52600360205260405f20610abf565b50610b5b565b60405191829182919091602063ffffffff816040840195828151168552015116910152565b0390f35b346100d05760403660031901126100d05761030f6108cd565b6103176108dd565b9063ffffffff6103278383610ce4565b16610339610334826109d2565b6109ac565b92818452610346826109d2565b602085019390601f19013685375f5b8381106103a0578486604051918291602083019060208452518091526040830191905f5b818110610387575050500390f35b8251845285945060209384019390920191600101610379565b6103b18363ffffffff831684610ddf565b6103bb8288610a8c565b526103c68187610a8c565b51156103d457600101610355565b60405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a490fd5b346100d05760203660031901126100d0576102f26102cd61049c6104876108cd565b5f6020610492610978565b8281520152610cb2565b610b5b565b346100d0575f3660031901126100d0576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346100d05760603660031901126100d0576104fe6108cd565b6105066108dd565b6044359163ffffffff831683036100d0576102f29261055c9260ff610556935f6020610530610978565b8281520152165f52600260205263ffffffff60405f2091165f5260205260405f20610b42565b50610aa0565b60405191829182919091602080604083019463ffffffff81511684520151910152565b346100d05760203660031901126100d05760ff61059a6108cd565b6105ce337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b16805f52600360205260405f205461060d575f52600360205261060b60405f206105f6610978565b9063ffffffff431682525f6020830152610ad4565b005b60405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608490fd5b346100d05760403660031901126100d0576102f261055c6106ac61068e6108cd565b6106966108dd565b905f60206106a2610978565b8281520152610c76565b610aa0565b346100d0576106bf36610879565b906106f4337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b610700610334836109d2565b9282845261070d836109d2565b602085019390601f19013685375f5b81811061076d578486604051918291602083019060208452518091526040830191905f5b81811061074e575050500390f35b825163ffffffff16845285945060209384019390920191600101610740565b6107788183866109ea565b3560f81c90815f52600360205261079460405f20541515610a0a565b61079d82610cb2565b600163ffffffff825460201c16019063ffffffff821161086557836107c88361080393600197610e78565b805f52600260205260405f2063ffffffff6107e285610a74565b165f5260205260405f20541561081c575b6107fc83610a74565b9087610bc1565b63ffffffff610812838a610a8c565b911690520161071c565b805f52600260205260405f2063ffffffff61083685610a74565b165f5260205261086060405f2061084b610978565b9063ffffffff431682525f6020830152610b7b565b6107f3565b634e487b7160e01b5f52601160045260245ffd5b60406003198201126100d0576004359160243567ffffffffffffffff81116100d057826023820112156100d05780600401359267ffffffffffffffff84116100d057602484830101116100d0576024019190565b6004359060ff821682036100d057565b6024359063ffffffff821682036100d057565b156108f757565b60405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a490fd5b604051906040820182811067ffffffffffffffff82111761099857604052565b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761099857604052565b67ffffffffffffffff81116109985760051b60200190565b908210156109f6570190565b634e487b7160e01b5f52603260045260245ffd5b15610a1157565b60405162461bcd60e51b815260206004820152603560248201527f496e64657852656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b63ffffffff5f199116019063ffffffff821161086557565b80518210156109f65760209160051b010190565b906001610aab610978565b9263ffffffff815416845201546020830152565b80548210156109f6575f5260205f2001905f90565b8054600160401b81101561099857610af191600182018155610abf565b610b2f578151815460209384015167ffffffffffffffff1990911663ffffffff9290921691909117921b67ffffffff0000000016919091179055565b565b634e487b7160e01b5f525f60045260245ffd5b80548210156109f6575f5260205f209060011b01905f90565b9063ffffffff610b69610978565b9254818116845260201c166020830152565b8054600160401b81101561099857610b9891600182018155610b42565b919091610b2f5760208163ffffffff8060019451161663ffffffff198554161784550151910155565b9160409063ffffffff60ff7f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f69486610bf98583610c76565b80544386169086168103610c3c5750600101555b1691825f526001602052835f20865f52602052835f2082821683198254161790558351928352166020820152a2565b9050610c7191508383165f526002602052865f208587165f52602052865f20610c63610978565b918252896020830152610b7b565b610c0d565b60ff165f90815260026020908152604080832063ffffffff9490941683529290522080545f19810190811161086557610cae91610b42565b5090565b60ff165f90815260036020526040902080545f19810190811161086557610cae91610abf565b8015610865575f190190565b60ff1690815f52600360205260405f2054805b610d845760405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a490fd5b825f52600360205260405f205f1982019082821161086557610da9916102c791610abf565b63ffffffff81511663ffffffff84161015610dce5750610dc890610cd8565b80610cf7565b6020015163ffffffff169392505050565b60ff909291921691825f52600260205260405f2063ffffffff82165f5260205260405f2054805b610e1257505050505f90565b835f52600260205260405f2063ffffffff83165f5260205260405f205f1982019082821161086557610e479161055691610b42565b63ffffffff81511663ffffffff85161015610e6c5750610e6690610cd8565b80610e06565b60200151949350505050565b919063ffffffff81541663ffffffff43168091145f14610eba5750610b2d92509067ffffffff0000000082549160201b169067ffffffff000000001916179055565b91905060ff610b2d93165f52600360205263ffffffff60405f2091610edd610978565b938452166020830152610ad456fea264697066735822122053d4af3d0c4f2686c612617d49f8b839866038606635662e26fbfc230a697ada64736f6c634300081b0033","nonce":41,"gas_used":917389},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x15f4aa","logs":[{"address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000080000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000"},"block_hash":"0x05e432e88ad1de880d4c8672827b5841baaac763fc2cf20f19c5c05be733c5cf","block_number":12},{"info":{"transaction_hash":"0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":4,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10","block_number":5},{"info":{"transaction_hash":"0x46f93918c2a1adbca8e26b26edb140cece0f6079970838ca1cd036e236f6dba7","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60806040526103ca803803806100148161024f565b92833981019060408183031261024b578051916001600160a01b0383169182840361024b576020810151906001600160401b03821161024b57019181601f8401121561024b57825161006d61006882610288565b61024f565b9381855260208501936020838301011161024b57815f926020809301865e85010152833b156101f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906101e9575b610109575b60405160cb90816102ff8239f35b610113606061024f565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561019557610184935f92839251915af43d1561018d573d9061017561006883610288565b9182523d5f602084013e6102a3565b505f80806100fb565b6060906102a3565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f6100f6565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027457604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161027457601f01601f191660200190565b909190156102af575090565b8151156102bf5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b00330000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc00000000000000000000000000000000000000000000000000000000","output":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","gas_used":164668,"gas_limit":235193,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","address":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xc0c53b8b000000000000000000000000851356ae760d987e095750cceb3bc6014560891c00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d99550000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc","output":"0x","gas_used":96860,"gas_limit":204898,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Return","out":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","nonce":57,"gas_used":235084},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3964c","logs":[{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0"],"data":"0x"},{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},{"address":"0x7bc06c482dead17c0e297afbc32f6e63d3846650","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000080000000000800000000000000000000000000000000000000000000000000000000000002000001000000000400000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400002010000100000000000000000000000000000020000000200000000000040000040000002000000000000000200020000000000000000000000000000000000000000000000000000000000100000000"},"block_hash":"0x86bc722416eb6c6a2a8ccbe1110b9581b38ce03d90dd713aac7d545d5e6e4907","block_number":28},{"info":{"transaction_hash":"0x25c8229cefd05f308ba1b96ab6cd39c4c46c5dc5f1045e83ba42e8636c2b8ef8","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000851356ae760d987e095750cceb3bc6014560891c0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":142488,"gas_limit":205906,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a4f7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":136456,"gas_limit":196895,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf7013ef6000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":124211,"gas_limit":181863,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5}]}],"exit":"Return","out":"0x","nonce":50,"gas_used":166344},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x289c8","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400400000000000000800000000000000000000800000000000000000000000000000100000000100000000000000000000000000000000000000400000002000001000000000018000000000000000000000000020000000000000100000820000000000000000000000000000000400000000100000000000000000000000000000000000080000000100000000000000000000000000000000000000400000004000000000000000000000000000000000020400000280000000000040000100000002000000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x1fcec931265e1d1b4955eb5e69f8828f029fa9418f1bf60af151c1d86a5a09cb","block_number":21},{"info":{"transaction_hash":"0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xc5a5c42992decbae36851359345fe25997f5c42d","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xc5a5c42992decbae36851359345fe25997f5c42d","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":576796,"gas_limit":782983,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Log":0},{"Call":0},{"Log":1}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xa6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","output":"0x","gas_used":102007,"gas_limit":743939,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507"],"data":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012"},"decoded":{"name":null,"params":null},"position":1},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Call":0},{"Log":3},{"Log":4}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x313ce567","output":"0x0000000000000000000000000000000000000000000000000000000000000012","gas_used":265,"gas_limit":635006,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":28,"gas_used":687292},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xa7cbc","logs":[{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507"],"data":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000000000000000000000000000000040000000000000000000000000104000000000000800000000000000000000000040000000200000002000050000000000410000000000080000000000000800000000000000000000000000000000400000000000000000000000000000000000000040020480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","block_number":24},{"info":{"transaction_hash":"0x05b063825862b62f9d5be96ceafc4f9a9bcaa3bc00b6c021c1a3542a09e081ed","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","traces":[{"parent":null,"children":[1,3,5],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x61018080604052346103325760808161521e803803809161002082856103c5565b833981010312610332578051906001600160a01b0382168083036103325760208201516001600160a01b03811691908281036103325760408401516001600160a01b0381169490919085830361033257606061007c91016103fc565b9560805260a0528060c0528460e052610093610410565b61010052604051636830483560e01b8152602081600481875afa90811561033e575f9161038b575b5061012052604051632efa2ca360e11b8152602081600481875afa90811561033e575f91610349575b50610140526101205160405163df5cf72360e01b815290602090829060049082906001600160a01b03165afa90811561033e575f916102f8575b5061016052156102c357156102885715610242576001600160a01b03161561020c57610148610410565b604051614d6890816104b6823960805181818161107201528181611328015281816113e90152613587015260a05181613ad2015260c0518181816112f8015281816124b2015281816135570152613728015260e05181818161254e0152613774015261010051818181610a3e015281816110b601528181612d4f01528181612e38015261336901526101205181818161102e015281816130e90152613231015261014051818181610fea0152613026015261016051818181611a260152612f470152f35b604051630b0f5aa160e11b815260206004820152600d60248201526c7374616b65526567697374727960981b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601360248201527f7265676973747279436f6f7264696e61746f72000000000000000000000000006044820152606490fd5b604051630b0f5aa160e11b81526020600482015260126024820152713932bbb0b93239a1b7b7b93234b730ba37b960711b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b6176734469726563746f727960a01b6044820152606490fd5b90506020813d602011610336575b81610313602093836103c5565b8101031261033257516001600160a01b0381168103610332575f61011e565b5f80fd5b3d9150610306565b6040513d5f823e3d90fd5b90506020813d602011610383575b81610364602093836103c5565b8101031261033257516001600160a01b0381168103610332575f6100e4565b3d9150610357565b90506020813d6020116103bd575b816103a6602093836103c5565b81010312610332576103b7906103fc565b5f6100bb565b3d9150610399565b601f909101601f19168101906001600160401b038211908210176103e857604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361033257565b5f5460ff8160081c166104605760ff8082161061042a5750565b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fdfe60806040526004361015610022575b3615610018575f80fd5b610020613ef5565b005b5f3560e01c806306045a91146102ec57806310d67a2f146102e7578063136439dd146102e2578063137122b5146102dd578063171f1d5b146102d857806318daeeaf146102d35780632e1a7d4d146102ce57806333cfb7b7146102c95780633bc28c8c146102c4578063416c7e5e146102bf5780634223d551146102ba5780634a5bf632146102b55780634ae07c37146102b0578063595c6a67146102ab5780635ac86ab7146102a65780635c975abb146102a15780635df459461461029c57806368304835146102975780636b3aa72e146102925780636d14a9871461028d57806370a0823114610238578063715018a614610288578063886f1195146102835780638da5cb5b1461027e57806395c6d604146102795780639926ee7d14610274578063a364f4da1461026f578063a98fb3551461026a578063ab21739a14610265578063b099627e14610260578063b753645e1461025b578063b98d090814610256578063d66eaabd14610251578063df5cf7231461024c578063e481af9d14610247578063ea5ca34b14610242578063f2fde38b1461023d578063f474b52014610238578063f7013ef614610233578063f9120af61461022e578063fa534dc014610229578063fabc1cbc14610224578063fc299dee1461021f578063fce36c7d1461021a5763fd4c3b7c0361000e57611f10565b611eb5565b611e8d565b611d7f565b611c81565b611c3a565b611b1e565b6110e5565b611a8d565b611a70565b611a55565b611a11565b611838565b611816565b6117f5565b6117ac565b611457565b61139d565b6112d4565b611249565b6111f8565b6111a3565b61117b565b611120565b6110a1565b61105d565b611019565b610fd5565b610fb8565b610f85565b610eff565b610e76565b610b7c565b610b3f565b610a0c565b6109d5565b6109a1565b610887565b61082d565b6107c5565b61068d565b610548565b6104a6565b61042b565b606435906001600160601b03198216820361030857565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761033b57604052565b61030c565b606081019081106001600160401b0382111761033b57604052565b90601f801991011681019081106001600160401b0382111761033b57604052565b6040519061038c6101008361035b565b565b6040519061038c60408361035b565b9061038c604051928361035b565b6001600160401b03811161033b57601f01601f191660200190565b9291926103d2826103ab565b916103e0604051938461035b565b829481845281830111610308578281602093845f960137010152565b9080601f8301121561030857816020610417933591016103c6565b90565b6001600160a01b0381160361030857565b34610308576101003660031901126103085760243560443560043561044e6102f1565b9260a435926084356001600160401b038511610308576104a2956104796104909636906004016103fc565b9260c4359460e4359661048b8861041a565b611fb5565b60405190151581529081906020820190565b0390f35b3461030857602036600319011261030857600480356104c48161041a565b60fb5460405163755b36bd60e11b81529260209184919082906001600160a01b03165afa918215610543576100209261050f915f91610514575b506001600160a01b031633146120de565b613ff6565b610536915060203d60201161053c575b61052e818361035b565b8101906120be565b5f6104fe565b503d610524565b6120d3565b346103085760203660031901126103085760043560fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa80156105435761059f915f91610653575b50612152565b60fc54818116036105e8578060fc557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806105e33394829190602083019252565b0390a2005b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610675915060203d60201161067b575b61066d818361035b565b81019061213d565b5f610599565b503d610663565b60ff81160361030857565b346103085760203660031901126103085760206004356106ac81610682565b60cc54600160ff60405193161b1615158152f35b60409060e319011261030857604051906106d982610320565b60e4358252610104356020830152565b91908260409103126103085760405161070181610320565b6020808294803584520135910152565b9080601f83011215610308576040519161072c60408461035b565b82906040810192831161030857905b8282106107485750505090565b813581526020918201910161073b565b9060806063198301126103085760405161077181610320565b602061078c8294610783816064610711565b845260a4610711565b910152565b919060808382031261030857602061078c604051926107af84610320565b604084966107bd8382610711565b865201610711565b34610308576101203660031901126103085760043560403660231901126103085761081d60409182516107f781610320565b6024358152604435602082015261080d36610758565b90610817366106c0565b926121ed565b8251911515825215156020820152f35b346103085760203660031901126103085760ff60043561084c81610682565b610854614565565b166001811b1960cc541660cc557f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a5f80a2005b34610308576020366003190112610308576004356108b26108ac60088060fc54161490565b15611f69565b335f5260ca6020528060405f20541061092b57335f90815260ca6020526040812090918291829182916108e68282546122fa565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a2818115610922575b3390f11561054357005b506108fc610918565b335f90815260ca6020526040902061095c91905b54632e2a182f60e11b5f5233600452602491909152604452606490565b5ffd5b60206040818301928281528451809452019201905f5b8181106109825750505090565b82516001600160a01b0316845260209384019390920191600101610975565b34610308576020366003190112610308576104a26109c96004356109c48161041a565b612493565b6040519182918261095f565b34610308576020366003190112610308576100206004356109f58161041a565b6109fd614565565b61465b565b8015150361030857565b3461030857602036600319011261030857600435610a2981610a02565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610543575f91610b20575b506001600160a01b03163303610a8f57610020906146b9565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b610b39915060203d60201161053c5761052e818361035b565b5f610a76565b602036600319011261030857610020600435610b5a8161041a565b610b6b60108060fc54161415611f69565b34906146f7565b5f91031261030857565b34610308575f3660031901126103085760cb546040516001600160a01b039091168152602090f35b6024359063ffffffff8216820361030857565b359063ffffffff8216820361030857565b6001600160401b03811161033b5760051b60200190565b9080601f83011215610308578135610bf681610bc8565b92610c04604051948561035b565b81845260208085019260051b82010192831161030857602001905b828210610c2c5750505090565b60208091610c3984610bb7565b815201910190610c1f565b81601f82011215610308578035610c5a81610bc8565b92610c68604051948561035b565b81845260208085019260061b8401019281841161030857602001915b838310610c92575050505090565b6020604091610ca184866106e9565b815201920191610c84565b9080601f83011215610308578135610cc381610bc8565b92610cd1604051948561035b565b81845260208085019260051b820101918383116103085760208201905b838210610cfd57505050505090565b81356001600160401b03811161030857602091610d1f87848094880101610bdf565b815201910190610cee565b9190916101808184031261030857610d4061037c565b9281356001600160401b0381116103085781610d5d918401610bdf565b845260208201356001600160401b0381116103085781610d7e918401610c44565b602085015260408201356001600160401b0381116103085781610da2918401610c44565b6040850152610db48160608401610791565b6060850152610dc68160e084016106e9565b60808501526101208201356001600160401b0381116103085781610deb918401610bdf565b60a08501526101408201356001600160401b0381116103085781610e10918401610bdf565b60c08501526101608201356001600160401b03811161030857610e339201610cac565b60e0830152565b90602080835192838152019201905f5b818110610e575750505090565b82516001600160601b0316845260209384019390920191600101610e4a565b3461030857606036600319011261030857600435610e92610ba4565b90604435906001600160401b03821161030857610ef592610eba610ec0933690600401610d2a565b91612c68565b604051928392604084526020610ee182516040808801526080870190610e3a565b910151848203603f19016060860152610e3a565b9060208301520390f35b34610308575f3660031901126103085760fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa801561054357610f51915f916106535750612152565b5f1960fc556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b34610308576020366003190112610308576020600160ff600435610fa881610682565b161b8060fc541614604051908152f35b34610308575f36600319011261030857602060fc54604051908152f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308576020366003190112610308576004356111028161041a565b60018060a01b03165f5260ca602052602060405f2054604051908152f35b34610308575f36600319011261030857611138614565565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610308575f3660031901126103085760fb546040516001600160a01b039091168152602090f35b34610308575f366003190112610308576033546040516001600160a01b039091168152602090f35b9181601f84011215610308578235916001600160401b038311610308576020838186019501011161030857565b34610308576040366003190112610308576004356001600160401b0381116103085761123a61122d60209236906004016111cb565b91906024359236916103c6565b82815191012014604051908152f35b34610308576040366003190112610308576004356112668161041a565b602435906001600160401b0382116103085760606003198336030112610308576040519061129382610340565b82600401356001600160401b03811161030857610020936112bc604492600436918401016103fc565b84526024810135602085015201356040830152613551565b34610308575f6020366003190112610308576004356112f28161041a565b611326337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146134c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610308576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af1801561054357611391575080f35b61002091505f9061035b565b34610308575f6020366003190112610308576004356001600160401b0381116103085736602382011215610308576113df9036906024816004013591016103c6565b6113e7614565565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103085760405163a98fb35560e01b815260206004820152915f918391829084908290611445906024830190613631565b03925af1801561054357611391575080f35b34610308576060366003190112610308576004356024356114778161041a565b6044356001600160401b03811161030857611496903690600401610d2a565b60cb546001600160a01b03163381900361179657506114bc6108ac60028060fc54161490565b5a6040805160208101868152606086901b6001600160601b031916928201929092526114f581605481015b03601f19810183528261035b565b5190209161150b835f5260c960205260405f2090565b92835463ffffffff6115208263ffffffff1690565b16156117825760201c60ff1661177057835464ff0000000019166401000000001784556001600160a01b0385165f90815260ca602052604090205493600181015480951061172d575461157b92919063ffffffff1690612c68565b50936115a86001600160601b036115a26115958851612397565b516001600160601b031690565b16613655565b60208601906115d16115c56115c06115958551612397565b613694565b6001600160601b031690565b116116e0575f808080888861163b61163461162f8b8b7f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e2604051806116258a82919091602081019260018060a01b03169052565b0390a25a906122fa565b6123b5565b3a90613681565b9080821084146116d85750905b6001600160a01b0381165f90815260ca6020526040902061166a8382546122fa565b90556001600160a01b03165f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a260cb546116bf906116b3906001600160a01b031681565b6001600160a01b031690565b8282156116cf575bf11561054357005b506108fc6116c7565b905090611648565b61095c9061170c6115c06115956117056117006115c56115958d51612397565b613655565b9351612397565b63530f5c4560e11b5f526004919091526001600160601b0316602452604490565b61095c868661174c8260018060a01b03165f5260ca60205260405f2090565b54632e2a182f60e11b5f526001600160a01b03909216600452602452604452606490565b634e78d7f960e11b5f5260045260245ffd5b6311cb69a760e11b5f52600482905260245ffd5b632cbe419560e01b5f523360045260245260445ffd5b34610308576020366003190112610308576004355f5260c9602052606060405f206001815491015460ff6040519263ffffffff8116845260201c16151560208301526040820152f35b3461030857602036600319011261030857600435611811614565565b60cc55005b34610308575f36600319011261030857602060ff609754166040519015158152f35b6060366003190112610308576004356024356001600160401b038111610308576118669036906004016111cb565b91906044359261187d6108ac60018060fc54161490565b60408051602081018581523360601b6001600160601b031916928201929092526118aa81605481016114e7565b5190209063ffffffff6118d26118c8845f5260c960205260405f2090565b5463ffffffff1690565b166119fd57346119b5575b335f90815260ca602052604090208590541061199c577f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5593946105e39161198f6119256136b5565b4363ffffffff168082529561194e905f60208401528560408401525f5260c960205260405f2090565b90604060019163ffffffff81511663ffffffff198554161784556020810151151564ff0000000085549160201b169064ff0000000019161784550151910155565b60405194859433866136d3565b335f90815260ca6020526040902061095c90869061093f565b335f90815260ca602052604090206119ce348254612419565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a26118dd565b630c40bc4360e21b5f52600482905260245ffd5b34610308575f366003190112610308576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610308575f366003190112610308576104a26109c9613719565b34610308575f36600319011261030857602060cc54604051908152f35b3461030857602036600319011261030857600435611aaa8161041a565b611ab2614565565b6001600160a01b03811615611aca576100209061497d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103085760a036600319011261030857600435611b3b8161041a565b611bb2602435611b4a8161041a565b604435611b568161041a565b60643590611b638261041a565b608435925f5495611b98611b82611b7e8960ff9060081c1690565b1590565b80988199611c2c575b8115611c0c575b50613946565b86611ba9600160ff195f5416175f55565b611bf5576139a9565b611bb857005b611bc661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c0761010061ff00195f5416175f55565b6139a9565b303b15915081611c1e575b505f611b92565b60ff1660011490505f611c17565b600160ff8216109150611b8b565b3461030857602036600319011261030857600435611c578161041a565b611c5f614565565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055005b346103085760e036600319011261030857604435600435602435611ca36102f1565b916084359260a4356001600160401b03811161030857602094611ccd611d2b9236906004016103fc565b9060c43593611ce36108ac60048060fc54161490565b60405198899788976306045a9160e01b89526004890152602488015260448701526001600160601b0319166064860152608485015261010060a4850152610104840190613631565b9060c48301525f60e48301520381305afa8015610543576104a2915f91611d60575b5060405190151581529081906020820190565b611d79915060203d60201161067b5761066d818361035b565b5f611d4d565b346103085760203660031901126103085760fb5460405163755b36bd60e11b81526004803592602091839182906001600160a01b03165afa801561054357611dd8915f9161051457506001600160a01b031633146120de565b60fc54198119811603611e2257611dee8160fc55565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9080602081016105e3565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b34610308575f366003190112610308576065546040516001600160a01b039091168152602090f35b34610308576020366003190112610308576004356001600160401b03811161030857366023820112156103085780600401356001600160401b038111610308573660248260051b840101116103085760246100209201613abe565b346103085760203660031901126103085760ff600435611f2f81610682565b611f37614565565b166001811b60cc541760cc557fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe5f80a2005b15611f7057565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b9061041797969594939291611fd16108ac60048060fc54161490565b90969092906001600160a01b0381166120875750835b63ffffffff6120016118c8835f5260c960205260405f2090565b161561207b57611b7e61201f612029925f5260c960205260405f2090565b5460201c60ff1690565b6120705760408051602081019485529081019790975260608701919091526001600160601b03191660808601526104179461206781609481016114e7565b51902091613f10565b505050505050505f90565b50505050505050505f90565b6040516120b6816114e760208201948986909160349282526001600160601b03199060601b1660208201520190565b519020611fe7565b9081602091031261030857516104178161041a565b6040513d5f823e3d90fd5b156120e557565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b90816020910312610308575161041781610a02565b1561215957565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b9060028110156121d45760051b0190565b6121af565b634e487b7160e01b5f52601260045260245ffd5b6122c96122a66122cf956122a061229985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261227081610120840103601f19810183528261035b565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614122565b90614168565b926122a06122bb6122b56141f0565b946142e7565b916122c4614403565b614122565b91614437565b9091565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116122f557565b6122d3565b919082039182116122f557565b90816020910312610308575190565b9081602091031261030857516001600160c01b03811681036103085790565b90816020910312610308575161041781610682565b6040519061235960208361035b565b5f808352366020840137565b9061236f82610bc8565b61237c604051918261035b565b828152809261238d601f1991610bc8565b0190602036910137565b8051156121d45760200190565b9081518110156121d4570160200190565b906201117082018092116122f557565b90602082018092116122f557565b90600182018092116122f557565b90600282018092116122f557565b90600382018092116122f557565b90600482018092116122f557565b90600582018092116122f557565b919082018092116122f557565b6001600160601b0381160361030857565b908160409103126103085760206040519161245183610320565b805161245c8161041a565b8352015161246981612426565b602082015290565b80518210156121d45760209160051b010190565b5f1981146122f55760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690602081602481855afa90811561054357612513916020915f91612803575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa908115610543575f916127d4575b506001600160c01b0316908115908115612771575b5061276857612549906145bd565b5f91907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690835b8151851015612625576125ce60206125ab6125a561259789876123a4565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa8015610543576001926125ed925f926125f5575b50612419565b940193612579565b61261791925060203d811161261e575b61260f818361035b565b810190612307565b905f6125e7565b503d612605565b612630919450612365565b925f905f5b81518110156127625761264e6125a561259783856123a4565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa918215610543575f92612742575b50905f915b81831061269357505050600101612635565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861270b985f91612714575b50516001600160a01b031690565b92612471565b6001600160a01b039091169052565b612485565b95019190612681565b612735915060403d811161273b575b61272d818361035b565b810190612437565b5f6126e3565b503d612723565b61275b91925060203d811161261e5761260f818361035b565b905f61267c565b50505050565b5061041761234a565b604051639aa1653d60e01b81529150602090829060049082905afa80156105435760ff915f916127a5575b5016155f61253b565b6127c7915060203d6020116127cd575b6127bf818361035b565b810190612335565b5f61279c565b503d6127b5565b6127f6915060203d6020116127fc575b6127ee818361035b565b810190612316565b5f612526565b503d6127e4565b61281a9150823d841161261e5761260f818361035b565b5f6124f3565b6040519061282d82610320565b60606020838281520152565b6040519061284860408361035b565b600182525f6020830152565b1561285b57565b60405162461bcd60e51b815260206004820152604160248201525f516020614d135f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156128c457565b60a460405162461bcd60e51b815260206004820152604460248201525f516020614d135f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b1561292f57565b60405162461bcd60e51b815260206004820152603c60248201525f516020614d135f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b1561298e57565b608460405162461bcd60e51b815260206004820152604060248201525f516020614d135f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b156129ec57565b60405162461bcd60e51b815260206004820152606660248201525f516020614d135f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610308575167ffffffffffffffff19811681036103085790565b15612aa157565b60405162461bcd60e51b815260206004820152606160248201525f516020614d135f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b90816020910312610308575161041781612426565b906001600160601b03809116911603906001600160601b0382116122f557565b15612b6557565b60405162461bcd60e51b815260206004820152604360248201525f516020614d135f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15612bd057565b60405162461bcd60e51b815260206004820152603960248201525f516020614d135f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110612c525750505090565b8251845260209384019390920191600101612c45565b9190612c72612820565b50612c7b612839565b5160408301515114806134ae575b80613498575b8061347d575b612c9e90612854565b612cb0602083015151835151146128bd565b612cc763ffffffff431663ffffffff831610612928565b612ccf61038e565b5f81525f602082015290612ce1612820565b94612cf3612ced612839565b51612365565b6020870152612d03612ced612839565b8652612d0d612820565b90612d1c602086015151612365565b8252612d2c602086015151612365565b6020830152612d39612839565b604051639aa1653d60e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561054357612d91925f9261345c575b5061475a565b965f945b60208701518051871015612f0c57612db087612dc392612471565b5180515f526020015160205260405f2090565b612dd1876020870151612471565b5285612ed7575b612de6866020860151612471565b51602086612e02612df88a8c51612471565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa91821561054357600192612eb1925f91612eb9575b50838060c01b0316612e82898851612471565b526122a0612e948960208c0151612471565b51612eab8d612ea48c8b51612471565b51166147e1565b90614812565b950194612d95565b612ed1915060203d81116127fc576127ee818361035b565b5f612e6f565b612f07612ee8876020870151612471565b51612f006020870151612efa8a6122e7565b90612471565b5110612987565b612dd8565b50909750612f1f919296959394506148f8565b90612f2c60975460ff1690565b8015613451576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610543575f91613432575b5095909492955b5f965b612f91612839565b518810156133df578661332b575b612fc1612fb3612db08a60408a0151612471565b67ffffffffffffffff191690565b90612fd96125a56125978b612fd4612839565b6123a4565b602087612fed612df88d60a08d0151612471565b604051631a2f32ab60e21b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9283156105435761308993613074925f916132fd575b5067ffffffffffffffff19918216911614612a9a565b613082896040890151612471565b5190614168565b9061309c6125a56125978a612fd4612839565b6020866130b0612df88c60c08c0151612471565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa8015610543576115958a60208e61314661314d95613158975f916132e0575b506131388585850151612471565b906001600160601b03169052565b0151612471565b6131388a8d51612471565b5f965f5b6020880151518110156132d1578a8a613199613179848451612471565b5161318c6125a561259785612fd4612839565b60ff161c60019081161490565b6131a8575b505060010161315c565b888a9261322d6131ed612df8879f6131e78760e06131de849c60206131d66125a5612597839f612fd4612839565b9a0151612471565b519a0151612471565b51612471565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830195909552919093166064840152829081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610543576132908e6001948e86955f9261329b575b506126f16131389293519361328b6115958487612471565b612b3e565b019890508a8a61319e565b61313892506132c36126f19160203d81116132ca575b6132bb818361035b565b810190612b29565b9250613273565b503d6132b1565b50600190980197965090612f89565b6132f79150843d81116132ca576132bb818361035b565b5f61312a565b61331e915060203d8111613324575b613316818361035b565b810190612a79565b5f61305e565b503d61330c565b61336560206133426125a56125978c612fd4612839565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610543576133bc915f916133c1575b506133b68463ffffffff891692612419565b116129e5565b612f9f565b6133d9915060203d811161261e5761260f818361035b565b5f6133a4565b60209497506114e7965061341491506134199261342c9661340d929a959a60806060830151920151926121ed565b9190612b5e565b612bc9565b0151604051928391602083019586612c28565b51902090565b61344b915060203d60201161261e5761260f818361035b565b5f612f7f565b5f9590949295612f86565b61347691925060203d6020116127cd576127bf818361035b565b905f612d8b565b50612c9e613489612839565b5160e084015151149050612c95565b506134a1612839565b5160c08301515114612c8f565b506134b7612839565b5160a08301515114612c89565b156134cb57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b613585337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146134c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b15610308575f928392604051948580948193639926ee7d60e01b835260018060a01b031660048301526040602483015260406135fa82516060604486015260a4850190613631565b91602081015160648501520151608483015203925af180156105435761361d5750565b8061362b5f61038c9361035b565b80610b72565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906064820291808304606414901517156122f557565b906006820291808304600614901517156122f557565b818102929181159184041417156122f557565b6001600160601b036043911602906001600160601b0382169182036122f557565b604051906136c282610340565b5f6040838281528260208201520152565b95949360609363ffffffff60a0948394600180881b03168a5216602089015260806040890152816080890152838801375f828288010152601f8019910116850101930152565b604051639aa1653d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa80156105435760ff915f91613927575b5016801561391d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f9081905b8083106138d957506137b49150612365565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105435760ff915f916138bb575b50168110156138b457604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa918215610543575f92613894575b50905f915b81831061382e575050506001016137b9565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861388b985f916127145750516001600160a01b031690565b9501919061381c565b6138ad91925060203d811161261e5761260f818361035b565b905f613817565b5092505050565b6138d3915060203d81116127cd576127bf818361035b565b5f6137df565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa801561054357600192613914925f926125f55750612419565b920191906137a2565b505061041761234a565b613940915060203d6020116127cd576127bf818361035b565b5f61376a565b1561394d57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b90939291906001600160a01b03811615613a89576001600160a01b03851615613a50576001600160a01b03821615613a1657613a0c613a11926139ef61038c97846149c5565b60018060a01b03166001600160601b0360a01b60cb54161760cb55565b61497d565b614a38565b604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606490fd5b6065546001600160a01b03163303613cd2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915f5b818110613b405750823b1561030857613b2f925f928360405180968195829463fce36c7d60e01b845260048401613de6565b03925af180156105435761361d5750565b5f6020613b9b613b5e6116b383613b5887898b613d52565b01613d74565b6040613b6b86888a613d52565b6040516323b872dd60e01b8152336004820152306024820152910135604482015293849283919082906064820190565b03925af1801561054357613cb6575b50613bbe6116b36020613b58848688613d52565b604051636eb1769f60e11b81523060048201526001600160a01b03861660248201529190602090839060449082905afa801561054357613c616020915f948591613c99575b50613c2e613c196116b385613b58888b8d613d52565b916040613c27878a8c613d52565b0135612419565b60405163095ea7b360e01b81526001600160a01b038a166004820152602481019190915294859283919082906044820190565b03925af191821561054357600192613c7b575b5001613afd565b613c929060203d811161067b5761066d818361035b565b505f613c74565b613cb09150833d811161261e5761260f818361035b565b5f613c03565b613ccd9060203d811161067b5761066d818361035b565b613baa565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b91908110156121d45760051b81013590609e1981360301821215610308570190565b356104178161041a565b916020908281520191905f5b818110613d975750505090565b9091926040806001928635613dab8161041a565b848060a01b031681526001600160601b036020880135613dca81612426565b166020820152019401929101613d8a565b359061038c8261041a565b9180602084016020855252604083019060408160051b85010193835f91609e1982360301905b848410613e1d575050505050505090565b90919293949596603f19828203018752873583811215610308578401908135601e198336030181121561030857820191602083359301906001600160401b038411610308578360061b3603821361030857613ee6836080613edb81613e916020989760019a60a08b9a5260a0870191613d7e565b95613eaf613ea0898301613ddb565b6001600160a01b0316868a0152565b60408101356040860152613ed5613ec860608301610bb7565b63ffffffff166060870152565b01610bb7565b63ffffffff16910152565b99019701959401929190613e0c565b613f0660208060fc54161415611f69565b61038c34336146f7565b93909291601f855116613f775791906020925b85518411613f6e5760018316613f54575f5282850151602052613f4d60405f209260011c936123c5565b9291613f23565b838601515f52602052613f4d60405f209260011c936123c5565b92509350501490565b60405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a490fd5b6001600160a01b038116156140615760fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a160018060a01b03166001600160601b0360a01b60fb54161760fb55565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b604051906140eb82610320565b5f6020838281520152565b60405190610180614107818461035b565b368337565b6040519061411b60208361035b565b6020368337565b919060409060606141316140de565b9485926020855192614143858561035b565b8436853780518452015160208301528482015260076107cf195a01fa1561416657565bfe5b6020929160806040926141796140de565b9586938186519361418a868661035b565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561416657156141bb57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b6040516141fc81610320565b604090815161420b838261035b565b8236823781526020825191614220848461035b565b8336843701528051614232828261035b565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190614288838361035b565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526142dd8351938461035b565b8252602082015290565b5f516020614cd35f395f51905f52906142fe6140de565b505f919006602060c0835b6143fe575f935f516020614cd35f395f51905f5260038186818180090908604051614334858261035b565b84368237848185604051614348828261035b565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614cd35f395f51905f5260a082015260056107cf195a01fa8015614166576143b290614c86565b51916143fe575f516020614cd35f395f51905f52828009146143e957505f516020614cd35f395f51905f5260015f94089293614309565b929350506143f561038e565b92835282015290565b6121d9565b61440b6140de565b5060405161441881610320565b600181526002602082015290565b90600c8110156121d45760051b0190565b93929091614445604061039d565b9485526020850152614457604061039d565b91825260208201526144676140f6565b925f5b600281106144945750505060206101809261448361410c565b93849160086201d4c0fa9151151590565b806144a060019261366b565b6144aa82856121c3565b51516144b68289614426565b5260206144c383866121c3565b5101516144d86144d2836123d3565b89614426565b526144e382866121c3565b5151516144f26144d2836123e1565b5261450861450083876121c3565b515160200190565b516145156144d2836123ef565b52602061452283876121c3565b510151516145326144d2836123fd565b5261455e6145586145516020614548868a6121c3565b51015160200190565b519261240b565b88614426565b520161446a565b6033546001600160a01b0316330361457957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff6145c9826147e1565b166145d3816103ab565b906145e1604051928361035b565b8082526145f0601f19916103ab565b013660208301375f5f5b8251821080614650575b15614649576001811b8416614622575b61461d90612485565b6145fa565b90600161461d9160ff60f81b8460f81b165f1a61463f82876123a4565b5301919050614614565b5050905090565b506101008110614604565b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b8115614747576001600160a01b03165f81815260ca602052604090208054919282019182106122f55755805f5260ca6020525f516020614cf35f395f51905f52602060405f2054604051908152a2565b50632097692160e11b5f5260045260245ffd5b90600161476860ff93614b9f565b928392161b11156147765790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6147ed575090565b5f1981018181116122f55761ffff9116911661ffff81146122f55760010190806147e5565b9061481b6140de565b5061ffff8116906102008210156148c057600182146148bb5761483c61038e565b5f81525f602082015292906001905f925b61ffff831685101561486157505050505090565b600161ffff831660ff86161c81161461489b575b60016148916148868360ff94614168565b9460011b61fffe1690565b940116929161484d565b9460016148916148866148b08960ff95614168565b989350505050614875565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b6149006140de565b50805190811580614971575b1561492d57505060405161492160408261035b565b5f81525f602082015290565b60205f516020614cd35f395f51905f52910151065f516020614cd35f395f51905f52035f516020614cd35f395f51905f5281116122f557604051916142dd83610320565b5060208101511561490c565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b9060ff5f5460081c16156149df576109fd61038c9261497d565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb546001600160a01b03161580614b0b575b15614a905781614a5d61038c9360fc55565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a2613ff6565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b0381161515614a4b565b15614b2457565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614c0f57815115614c0a57614bcd614bc36125a561259785612397565b60ff600191161b90565b6001905b8351821015614c0557600190614bf0614bc36125a561259786896123a4565b90614bfc818311614b1d565b17910190614bd1565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b15614c8d57565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212203f93810e136abc668d4b6e863312064f727ebbe3f1a248a9593f47836096adac64736f6c634300081b00330000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","output":"0x60806040526004361015610022575b3615610018575f80fd5b610020613ef5565b005b5f3560e01c806306045a91146102ec57806310d67a2f146102e7578063136439dd146102e2578063137122b5146102dd578063171f1d5b146102d857806318daeeaf146102d35780632e1a7d4d146102ce57806333cfb7b7146102c95780633bc28c8c146102c4578063416c7e5e146102bf5780634223d551146102ba5780634a5bf632146102b55780634ae07c37146102b0578063595c6a67146102ab5780635ac86ab7146102a65780635c975abb146102a15780635df459461461029c57806368304835146102975780636b3aa72e146102925780636d14a9871461028d57806370a0823114610238578063715018a614610288578063886f1195146102835780638da5cb5b1461027e57806395c6d604146102795780639926ee7d14610274578063a364f4da1461026f578063a98fb3551461026a578063ab21739a14610265578063b099627e14610260578063b753645e1461025b578063b98d090814610256578063d66eaabd14610251578063df5cf7231461024c578063e481af9d14610247578063ea5ca34b14610242578063f2fde38b1461023d578063f474b52014610238578063f7013ef614610233578063f9120af61461022e578063fa534dc014610229578063fabc1cbc14610224578063fc299dee1461021f578063fce36c7d1461021a5763fd4c3b7c0361000e57611f10565b611eb5565b611e8d565b611d7f565b611c81565b611c3a565b611b1e565b6110e5565b611a8d565b611a70565b611a55565b611a11565b611838565b611816565b6117f5565b6117ac565b611457565b61139d565b6112d4565b611249565b6111f8565b6111a3565b61117b565b611120565b6110a1565b61105d565b611019565b610fd5565b610fb8565b610f85565b610eff565b610e76565b610b7c565b610b3f565b610a0c565b6109d5565b6109a1565b610887565b61082d565b6107c5565b61068d565b610548565b6104a6565b61042b565b606435906001600160601b03198216820361030857565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761033b57604052565b61030c565b606081019081106001600160401b0382111761033b57604052565b90601f801991011681019081106001600160401b0382111761033b57604052565b6040519061038c6101008361035b565b565b6040519061038c60408361035b565b9061038c604051928361035b565b6001600160401b03811161033b57601f01601f191660200190565b9291926103d2826103ab565b916103e0604051938461035b565b829481845281830111610308578281602093845f960137010152565b9080601f8301121561030857816020610417933591016103c6565b90565b6001600160a01b0381160361030857565b34610308576101003660031901126103085760243560443560043561044e6102f1565b9260a435926084356001600160401b038511610308576104a2956104796104909636906004016103fc565b9260c4359460e4359661048b8861041a565b611fb5565b60405190151581529081906020820190565b0390f35b3461030857602036600319011261030857600480356104c48161041a565b60fb5460405163755b36bd60e11b81529260209184919082906001600160a01b03165afa918215610543576100209261050f915f91610514575b506001600160a01b031633146120de565b613ff6565b610536915060203d60201161053c575b61052e818361035b565b8101906120be565b5f6104fe565b503d610524565b6120d3565b346103085760203660031901126103085760043560fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa80156105435761059f915f91610653575b50612152565b60fc54818116036105e8578060fc557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806105e33394829190602083019252565b0390a2005b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610675915060203d60201161067b575b61066d818361035b565b81019061213d565b5f610599565b503d610663565b60ff81160361030857565b346103085760203660031901126103085760206004356106ac81610682565b60cc54600160ff60405193161b1615158152f35b60409060e319011261030857604051906106d982610320565b60e4358252610104356020830152565b91908260409103126103085760405161070181610320565b6020808294803584520135910152565b9080601f83011215610308576040519161072c60408461035b565b82906040810192831161030857905b8282106107485750505090565b813581526020918201910161073b565b9060806063198301126103085760405161077181610320565b602061078c8294610783816064610711565b845260a4610711565b910152565b919060808382031261030857602061078c604051926107af84610320565b604084966107bd8382610711565b865201610711565b34610308576101203660031901126103085760043560403660231901126103085761081d60409182516107f781610320565b6024358152604435602082015261080d36610758565b90610817366106c0565b926121ed565b8251911515825215156020820152f35b346103085760203660031901126103085760ff60043561084c81610682565b610854614565565b166001811b1960cc541660cc557f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a5f80a2005b34610308576020366003190112610308576004356108b26108ac60088060fc54161490565b15611f69565b335f5260ca6020528060405f20541061092b57335f90815260ca6020526040812090918291829182916108e68282546122fa565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a2818115610922575b3390f11561054357005b506108fc610918565b335f90815260ca6020526040902061095c91905b54632e2a182f60e11b5f5233600452602491909152604452606490565b5ffd5b60206040818301928281528451809452019201905f5b8181106109825750505090565b82516001600160a01b0316845260209384019390920191600101610975565b34610308576020366003190112610308576104a26109c96004356109c48161041a565b612493565b6040519182918261095f565b34610308576020366003190112610308576100206004356109f58161041a565b6109fd614565565b61465b565b8015150361030857565b3461030857602036600319011261030857600435610a2981610a02565b604051638da5cb5b60e01b81526020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa908115610543575f91610b20575b506001600160a01b03163303610a8f57610020906146b9565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b610b39915060203d60201161053c5761052e818361035b565b5f610a76565b602036600319011261030857610020600435610b5a8161041a565b610b6b60108060fc54161415611f69565b34906146f7565b5f91031261030857565b34610308575f3660031901126103085760cb546040516001600160a01b039091168152602090f35b6024359063ffffffff8216820361030857565b359063ffffffff8216820361030857565b6001600160401b03811161033b5760051b60200190565b9080601f83011215610308578135610bf681610bc8565b92610c04604051948561035b565b81845260208085019260051b82010192831161030857602001905b828210610c2c5750505090565b60208091610c3984610bb7565b815201910190610c1f565b81601f82011215610308578035610c5a81610bc8565b92610c68604051948561035b565b81845260208085019260061b8401019281841161030857602001915b838310610c92575050505090565b6020604091610ca184866106e9565b815201920191610c84565b9080601f83011215610308578135610cc381610bc8565b92610cd1604051948561035b565b81845260208085019260051b820101918383116103085760208201905b838210610cfd57505050505090565b81356001600160401b03811161030857602091610d1f87848094880101610bdf565b815201910190610cee565b9190916101808184031261030857610d4061037c565b9281356001600160401b0381116103085781610d5d918401610bdf565b845260208201356001600160401b0381116103085781610d7e918401610c44565b602085015260408201356001600160401b0381116103085781610da2918401610c44565b6040850152610db48160608401610791565b6060850152610dc68160e084016106e9565b60808501526101208201356001600160401b0381116103085781610deb918401610bdf565b60a08501526101408201356001600160401b0381116103085781610e10918401610bdf565b60c08501526101608201356001600160401b03811161030857610e339201610cac565b60e0830152565b90602080835192838152019201905f5b818110610e575750505090565b82516001600160601b0316845260209384019390920191600101610e4a565b3461030857606036600319011261030857600435610e92610ba4565b90604435906001600160401b03821161030857610ef592610eba610ec0933690600401610d2a565b91612c68565b604051928392604084526020610ee182516040808801526080870190610e3a565b910151848203603f19016060860152610e3a565b9060208301520390f35b34610308575f3660031901126103085760fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa801561054357610f51915f916106535750612152565b5f1960fc556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b34610308576020366003190112610308576020600160ff600435610fa881610682565b161b8060fc541614604051908152f35b34610308575f36600319011261030857602060fc54604051908152f35b34610308575f366003190112610308576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b34610308575f366003190112610308576040517f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b34610308576020366003190112610308576004356111028161041a565b60018060a01b03165f5260ca602052602060405f2054604051908152f35b34610308575f36600319011261030857611138614565565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610308575f3660031901126103085760fb546040516001600160a01b039091168152602090f35b34610308575f366003190112610308576033546040516001600160a01b039091168152602090f35b9181601f84011215610308578235916001600160401b038311610308576020838186019501011161030857565b34610308576040366003190112610308576004356001600160401b0381116103085761123a61122d60209236906004016111cb565b91906024359236916103c6565b82815191012014604051908152f35b34610308576040366003190112610308576004356112668161041a565b602435906001600160401b0382116103085760606003198336030112610308576040519061129382610340565b82600401356001600160401b03811161030857610020936112bc604492600436918401016103fc565b84526024810135602085015201356040830152613551565b34610308575f6020366003190112610308576004356112f28161041a565b611326337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031690813b15610308576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af1801561054357611391575080f35b61002091505f9061035b565b34610308575f6020366003190112610308576004356001600160401b0381116103085736602382011215610308576113df9036906024816004013591016103c6565b6113e7614565565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316803b156103085760405163a98fb35560e01b815260206004820152915f918391829084908290611445906024830190613631565b03925af1801561054357611391575080f35b34610308576060366003190112610308576004356024356114778161041a565b6044356001600160401b03811161030857611496903690600401610d2a565b60cb546001600160a01b03163381900361179657506114bc6108ac60028060fc54161490565b5a6040805160208101868152606086901b6001600160601b031916928201929092526114f581605481015b03601f19810183528261035b565b5190209161150b835f5260c960205260405f2090565b92835463ffffffff6115208263ffffffff1690565b16156117825760201c60ff1661177057835464ff0000000019166401000000001784556001600160a01b0385165f90815260ca602052604090205493600181015480951061172d575461157b92919063ffffffff1690612c68565b50936115a86001600160601b036115a26115958851612397565b516001600160601b031690565b16613655565b60208601906115d16115c56115c06115958551612397565b613694565b6001600160601b031690565b116116e0575f808080888861163b61163461162f8b8b7f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e2604051806116258a82919091602081019260018060a01b03169052565b0390a25a906122fa565b6123b5565b3a90613681565b9080821084146116d85750905b6001600160a01b0381165f90815260ca6020526040902061166a8382546122fa565b90556001600160a01b03165f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a260cb546116bf906116b3906001600160a01b031681565b6001600160a01b031690565b8282156116cf575bf11561054357005b506108fc6116c7565b905090611648565b61095c9061170c6115c06115956117056117006115c56115958d51612397565b613655565b9351612397565b63530f5c4560e11b5f526004919091526001600160601b0316602452604490565b61095c868661174c8260018060a01b03165f5260ca60205260405f2090565b54632e2a182f60e11b5f526001600160a01b03909216600452602452604452606490565b634e78d7f960e11b5f5260045260245ffd5b6311cb69a760e11b5f52600482905260245ffd5b632cbe419560e01b5f523360045260245260445ffd5b34610308576020366003190112610308576004355f5260c9602052606060405f206001815491015460ff6040519263ffffffff8116845260201c16151560208301526040820152f35b3461030857602036600319011261030857600435611811614565565b60cc55005b34610308575f36600319011261030857602060ff609754166040519015158152f35b6060366003190112610308576004356024356001600160401b038111610308576118669036906004016111cb565b91906044359261187d6108ac60018060fc54161490565b60408051602081018581523360601b6001600160601b031916928201929092526118aa81605481016114e7565b5190209063ffffffff6118d26118c8845f5260c960205260405f2090565b5463ffffffff1690565b166119fd57346119b5575b335f90815260ca602052604090208590541061199c577f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5593946105e39161198f6119256136b5565b4363ffffffff168082529561194e905f60208401528560408401525f5260c960205260405f2090565b90604060019163ffffffff81511663ffffffff198554161784556020810151151564ff0000000085549160201b169064ff0000000019161784550151910155565b60405194859433866136d3565b335f90815260ca6020526040902061095c90869061093f565b335f90815260ca602052604090206119ce348254612419565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a26118dd565b630c40bc4360e21b5f52600482905260245ffd5b34610308575f366003190112610308576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b34610308575f366003190112610308576104a26109c9613719565b34610308575f36600319011261030857602060cc54604051908152f35b3461030857602036600319011261030857600435611aaa8161041a565b611ab2614565565b6001600160a01b03811615611aca576100209061497d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103085760a036600319011261030857600435611b3b8161041a565b611bb2602435611b4a8161041a565b604435611b568161041a565b60643590611b638261041a565b608435925f5495611b98611b82611b7e8960ff9060081c1690565b1590565b80988199611c2c575b8115611c0c575b50613946565b86611ba9600160ff195f5416175f55565b611bf5576139a9565b611bb857005b611bc661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c0761010061ff00195f5416175f55565b6139a9565b303b15915081611c1e575b505f611b92565b60ff1660011490505f611c17565b600160ff8216109150611b8b565b3461030857602036600319011261030857600435611c578161041a565b611c5f614565565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055005b346103085760e036600319011261030857604435600435602435611ca36102f1565b916084359260a4356001600160401b03811161030857602094611ccd611d2b9236906004016103fc565b9060c43593611ce36108ac60048060fc54161490565b60405198899788976306045a9160e01b89526004890152602488015260448701526001600160601b0319166064860152608485015261010060a4850152610104840190613631565b9060c48301525f60e48301520381305afa8015610543576104a2915f91611d60575b5060405190151581529081906020820190565b611d79915060203d60201161067b5761066d818361035b565b5f611d4d565b346103085760203660031901126103085760fb5460405163755b36bd60e11b81526004803592602091839182906001600160a01b03165afa801561054357611dd8915f9161051457506001600160a01b031633146120de565b60fc54198119811603611e2257611dee8160fc55565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9080602081016105e3565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b34610308575f366003190112610308576065546040516001600160a01b039091168152602090f35b34610308576020366003190112610308576004356001600160401b03811161030857366023820112156103085780600401356001600160401b038111610308573660248260051b840101116103085760246100209201613abe565b346103085760203660031901126103085760ff600435611f2f81610682565b611f37614565565b166001811b60cc541760cc557fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe5f80a2005b15611f7057565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b9061041797969594939291611fd16108ac60048060fc54161490565b90969092906001600160a01b0381166120875750835b63ffffffff6120016118c8835f5260c960205260405f2090565b161561207b57611b7e61201f612029925f5260c960205260405f2090565b5460201c60ff1690565b6120705760408051602081019485529081019790975260608701919091526001600160601b03191660808601526104179461206781609481016114e7565b51902091613f10565b505050505050505f90565b50505050505050505f90565b6040516120b6816114e760208201948986909160349282526001600160601b03199060601b1660208201520190565b519020611fe7565b9081602091031261030857516104178161041a565b6040513d5f823e3d90fd5b156120e557565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b90816020910312610308575161041781610a02565b1561215957565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b9060028110156121d45760051b0190565b6121af565b634e487b7160e01b5f52601260045260245ffd5b6122c96122a66122cf956122a061229985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261227081610120840103601f19810183528261035b565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614122565b90614168565b926122a06122bb6122b56141f0565b946142e7565b916122c4614403565b614122565b91614437565b9091565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116122f557565b6122d3565b919082039182116122f557565b90816020910312610308575190565b9081602091031261030857516001600160c01b03811681036103085790565b90816020910312610308575161041781610682565b6040519061235960208361035b565b5f808352366020840137565b9061236f82610bc8565b61237c604051918261035b565b828152809261238d601f1991610bc8565b0190602036910137565b8051156121d45760200190565b9081518110156121d4570160200190565b906201117082018092116122f557565b90602082018092116122f557565b90600182018092116122f557565b90600282018092116122f557565b90600382018092116122f557565b90600482018092116122f557565b90600582018092116122f557565b919082018092116122f557565b6001600160601b0381160361030857565b908160409103126103085760206040519161245183610320565b805161245c8161041a565b8352015161246981612426565b602082015290565b80518210156121d45760209160051b010190565b5f1981146122f55760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3690911690602081602481855afa90811561054357612513916020915f91612803575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa908115610543575f916127d4575b506001600160c01b0316908115908115612771575b5061276857612549906145bd565b5f91907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690835b8151851015612625576125ce60206125ab6125a561259789876123a4565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa8015610543576001926125ed925f926125f5575b50612419565b940193612579565b61261791925060203d811161261e575b61260f818361035b565b810190612307565b905f6125e7565b503d612605565b612630919450612365565b925f905f5b81518110156127625761264e6125a561259783856123a4565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa918215610543575f92612742575b50905f915b81831061269357505050600101612635565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861270b985f91612714575b50516001600160a01b031690565b92612471565b6001600160a01b039091169052565b612485565b95019190612681565b612735915060403d811161273b575b61272d818361035b565b810190612437565b5f6126e3565b503d612723565b61275b91925060203d811161261e5761260f818361035b565b905f61267c565b50505050565b5061041761234a565b604051639aa1653d60e01b81529150602090829060049082905afa80156105435760ff915f916127a5575b5016155f61253b565b6127c7915060203d6020116127cd575b6127bf818361035b565b810190612335565b5f61279c565b503d6127b5565b6127f6915060203d6020116127fc575b6127ee818361035b565b810190612316565b5f612526565b503d6127e4565b61281a9150823d841161261e5761260f818361035b565b5f6124f3565b6040519061282d82610320565b60606020838281520152565b6040519061284860408361035b565b600182525f6020830152565b1561285b57565b60405162461bcd60e51b815260206004820152604160248201525f516020614d135f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156128c457565b60a460405162461bcd60e51b815260206004820152604460248201525f516020614d135f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b1561292f57565b60405162461bcd60e51b815260206004820152603c60248201525f516020614d135f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b1561298e57565b608460405162461bcd60e51b815260206004820152604060248201525f516020614d135f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b156129ec57565b60405162461bcd60e51b815260206004820152606660248201525f516020614d135f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610308575167ffffffffffffffff19811681036103085790565b15612aa157565b60405162461bcd60e51b815260206004820152606160248201525f516020614d135f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b90816020910312610308575161041781612426565b906001600160601b03809116911603906001600160601b0382116122f557565b15612b6557565b60405162461bcd60e51b815260206004820152604360248201525f516020614d135f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15612bd057565b60405162461bcd60e51b815260206004820152603960248201525f516020614d135f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110612c525750505090565b8251845260209384019390920191600101612c45565b9190612c72612820565b50612c7b612839565b5160408301515114806134ae575b80613498575b8061347d575b612c9e90612854565b612cb0602083015151835151146128bd565b612cc763ffffffff431663ffffffff831610612928565b612ccf61038e565b5f81525f602082015290612ce1612820565b94612cf3612ced612839565b51612365565b6020870152612d03612ced612839565b8652612d0d612820565b90612d1c602086015151612365565b8252612d2c602086015151612365565b6020830152612d39612839565b604051639aa1653d60e01b8152906020826004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa90811561054357612d91925f9261345c575b5061475a565b965f945b60208701518051871015612f0c57612db087612dc392612471565b5180515f526020015160205260405f2090565b612dd1876020870151612471565b5285612ed7575b612de6866020860151612471565b51602086612e02612df88a8c51612471565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36165afa91821561054357600192612eb1925f91612eb9575b50838060c01b0316612e82898851612471565b526122a0612e948960208c0151612471565b51612eab8d612ea48c8b51612471565b51166147e1565b90614812565b950194612d95565b612ed1915060203d81116127fc576127ee818361035b565b5f612e6f565b612f07612ee8876020870151612471565b51612f006020870151612efa8a6122e7565b90612471565b5110612987565b612dd8565b50909750612f1f919296959394506148f8565b90612f2c60975460ff1690565b8015613451576040516318891fd760e31b81526020816004817f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa908115610543575f91613432575b5095909492955b5f965b612f91612839565b518810156133df578661332b575b612fc1612fb3612db08a60408a0151612471565b67ffffffffffffffff191690565b90612fd96125a56125978b612fd4612839565b6123a4565b602087612fed612df88d60a08d0151612471565b604051631a2f32ab60e21b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa9283156105435761308993613074925f916132fd575b5067ffffffffffffffff19918216911614612a9a565b613082896040890151612471565b5190614168565b9061309c6125a56125978a612fd4612839565b6020866130b0612df88c60c08c0151612471565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e165afa8015610543576115958a60208e61314661314d95613158975f916132e0575b506131388585850151612471565b906001600160601b03169052565b0151612471565b6131388a8d51612471565b5f965f5b6020880151518110156132d1578a8a613199613179848451612471565b5161318c6125a561259785612fd4612839565b60ff161c60019081161490565b6131a8575b505060010161315c565b888a9261322d6131ed612df8879f6131e78760e06131de849c60206131d66125a5612597839f612fd4612839565b9a0151612471565b519a0151612471565b51612471565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830195909552919093166064840152829081906084820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa918215610543576132908e6001948e86955f9261329b575b506126f16131389293519361328b6115958487612471565b612b3e565b019890508a8a61319e565b61313892506132c36126f19160203d81116132ca575b6132bb818361035b565b810190612b29565b9250613273565b503d6132b1565b50600190980197965090612f89565b6132f79150843d81116132ca576132bb818361035b565b5f61312a565b61331e915060203d8111613324575b613316818361035b565b810190612a79565b5f61305e565b503d61330c565b61336560206133426125a56125978c612fd4612839565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa8015610543576133bc915f916133c1575b506133b68463ffffffff891692612419565b116129e5565b612f9f565b6133d9915060203d811161261e5761260f818361035b565b5f6133a4565b60209497506114e7965061341491506134199261342c9661340d929a959a60806060830151920151926121ed565b9190612b5e565b612bc9565b0151604051928391602083019586612c28565b51902090565b61344b915060203d60201161261e5761260f818361035b565b5f612f7f565b5f9590949295612f86565b61347691925060203d6020116127cd576127bf818361035b565b905f612d8b565b50612c9e613489612839565b5160e084015151149050612c95565b506134a1612839565b5160c08301515114612c8f565b506134b7612839565b5160a08301515114612c89565b156134cb57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b613585337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031691823b15610308575f928392604051948580948193639926ee7d60e01b835260018060a01b031660048301526040602483015260406135fa82516060604486015260a4850190613631565b91602081015160648501520151608483015203925af180156105435761361d5750565b8061362b5f61038c9361035b565b80610b72565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906064820291808304606414901517156122f557565b906006820291808304600614901517156122f557565b818102929181159184041417156122f557565b6001600160601b036043911602906001600160601b0382169182036122f557565b604051906136c282610340565b5f6040838281528260208201520152565b95949360609363ffffffff60a0948394600180881b03168a5216602089015260806040890152816080890152838801375f828288010152601f8019910116850101930152565b604051639aa1653d60e01b81527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031690602081600481855afa80156105435760ff915f91613927575b5016801561391d577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316905f9081905b8083106138d957506137b49150612365565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105435760ff915f916138bb575b50168110156138b457604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa918215610543575f92613894575b50905f915b81831061382e575050506001016137b9565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861388b985f916127145750516001600160a01b031690565b9501919061381c565b6138ad91925060203d811161261e5761260f818361035b565b905f613817565b5092505050565b6138d3915060203d81116127cd576127bf818361035b565b5f6137df565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa801561054357600192613914925f926125f55750612419565b920191906137a2565b505061041761234a565b613940915060203d6020116127cd576127bf818361035b565b5f61376a565b1561394d57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b90939291906001600160a01b03811615613a89576001600160a01b03851615613a50576001600160a01b03821615613a1657613a0c613a11926139ef61038c97846149c5565b60018060a01b03166001600160601b0360a01b60cb54161760cb55565b61497d565b614a38565b604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606490fd5b6065546001600160a01b03163303613cd2577f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b0316915f5b818110613b405750823b1561030857613b2f925f928360405180968195829463fce36c7d60e01b845260048401613de6565b03925af180156105435761361d5750565b5f6020613b9b613b5e6116b383613b5887898b613d52565b01613d74565b6040613b6b86888a613d52565b6040516323b872dd60e01b8152336004820152306024820152910135604482015293849283919082906064820190565b03925af1801561054357613cb6575b50613bbe6116b36020613b58848688613d52565b604051636eb1769f60e11b81523060048201526001600160a01b03861660248201529190602090839060449082905afa801561054357613c616020915f948591613c99575b50613c2e613c196116b385613b58888b8d613d52565b916040613c27878a8c613d52565b0135612419565b60405163095ea7b360e01b81526001600160a01b038a166004820152602481019190915294859283919082906044820190565b03925af191821561054357600192613c7b575b5001613afd565b613c929060203d811161067b5761066d818361035b565b505f613c74565b613cb09150833d811161261e5761260f818361035b565b5f613c03565b613ccd9060203d811161067b5761066d818361035b565b613baa565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b91908110156121d45760051b81013590609e1981360301821215610308570190565b356104178161041a565b916020908281520191905f5b818110613d975750505090565b9091926040806001928635613dab8161041a565b848060a01b031681526001600160601b036020880135613dca81612426565b166020820152019401929101613d8a565b359061038c8261041a565b9180602084016020855252604083019060408160051b85010193835f91609e1982360301905b848410613e1d575050505050505090565b90919293949596603f19828203018752873583811215610308578401908135601e198336030181121561030857820191602083359301906001600160401b038411610308578360061b3603821361030857613ee6836080613edb81613e916020989760019a60a08b9a5260a0870191613d7e565b95613eaf613ea0898301613ddb565b6001600160a01b0316868a0152565b60408101356040860152613ed5613ec860608301610bb7565b63ffffffff166060870152565b01610bb7565b63ffffffff16910152565b99019701959401929190613e0c565b613f0660208060fc54161415611f69565b61038c34336146f7565b93909291601f855116613f775791906020925b85518411613f6e5760018316613f54575f5282850151602052613f4d60405f209260011c936123c5565b9291613f23565b838601515f52602052613f4d60405f209260011c936123c5565b92509350501490565b60405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a490fd5b6001600160a01b038116156140615760fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a160018060a01b03166001600160601b0360a01b60fb54161760fb55565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b604051906140eb82610320565b5f6020838281520152565b60405190610180614107818461035b565b368337565b6040519061411b60208361035b565b6020368337565b919060409060606141316140de565b9485926020855192614143858561035b565b8436853780518452015160208301528482015260076107cf195a01fa1561416657565bfe5b6020929160806040926141796140de565b9586938186519361418a868661035b565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561416657156141bb57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b6040516141fc81610320565b604090815161420b838261035b565b8236823781526020825191614220848461035b565b8336843701528051614232828261035b565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190614288838361035b565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526142dd8351938461035b565b8252602082015290565b5f516020614cd35f395f51905f52906142fe6140de565b505f919006602060c0835b6143fe575f935f516020614cd35f395f51905f5260038186818180090908604051614334858261035b565b84368237848185604051614348828261035b565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614cd35f395f51905f5260a082015260056107cf195a01fa8015614166576143b290614c86565b51916143fe575f516020614cd35f395f51905f52828009146143e957505f516020614cd35f395f51905f5260015f94089293614309565b929350506143f561038e565b92835282015290565b6121d9565b61440b6140de565b5060405161441881610320565b600181526002602082015290565b90600c8110156121d45760051b0190565b93929091614445604061039d565b9485526020850152614457604061039d565b91825260208201526144676140f6565b925f5b600281106144945750505060206101809261448361410c565b93849160086201d4c0fa9151151590565b806144a060019261366b565b6144aa82856121c3565b51516144b68289614426565b5260206144c383866121c3565b5101516144d86144d2836123d3565b89614426565b526144e382866121c3565b5151516144f26144d2836123e1565b5261450861450083876121c3565b515160200190565b516145156144d2836123ef565b52602061452283876121c3565b510151516145326144d2836123fd565b5261455e6145586145516020614548868a6121c3565b51015160200190565b519261240b565b88614426565b520161446a565b6033546001600160a01b0316330361457957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff6145c9826147e1565b166145d3816103ab565b906145e1604051928361035b565b8082526145f0601f19916103ab565b013660208301375f5f5b8251821080614650575b15614649576001811b8416614622575b61461d90612485565b6145fa565b90600161461d9160ff60f81b8460f81b165f1a61463f82876123a4565b5301919050614614565b5050905090565b506101008110614604565b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b8115614747576001600160a01b03165f81815260ca602052604090208054919282019182106122f55755805f5260ca6020525f516020614cf35f395f51905f52602060405f2054604051908152a2565b50632097692160e11b5f5260045260245ffd5b90600161476860ff93614b9f565b928392161b11156147765790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6147ed575090565b5f1981018181116122f55761ffff9116911661ffff81146122f55760010190806147e5565b9061481b6140de565b5061ffff8116906102008210156148c057600182146148bb5761483c61038e565b5f81525f602082015292906001905f925b61ffff831685101561486157505050505090565b600161ffff831660ff86161c81161461489b575b60016148916148868360ff94614168565b9460011b61fffe1690565b940116929161484d565b9460016148916148866148b08960ff95614168565b989350505050614875565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b6149006140de565b50805190811580614971575b1561492d57505060405161492160408261035b565b5f81525f602082015290565b60205f516020614cd35f395f51905f52910151065f516020614cd35f395f51905f52035f516020614cd35f395f51905f5281116122f557604051916142dd83610320565b5060208101511561490c565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b9060ff5f5460081c16156149df576109fd61038c9261497d565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb546001600160a01b03161580614b0b575b15614a905781614a5d61038c9360fc55565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a2613ff6565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b0381161515614a4b565b15614b2457565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614c0f57815115614c0a57614bcd614bc36125a561259785612397565b60ff600191161b90565b6001905b8351821015614c0557600190614bf0614bc36125a561259786896123a4565b90614bfc818311614b1d565b17910190614bd1565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b15614c8d57565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212203f93810e136abc668d4b6e863312064f727ebbe3f1a248a9593f47836096adac64736f6c634300081b0033","gas_used":4015906,"gas_limit":5335211,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Call":2}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x68304835","output":"0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","gas_used":8024,"gas_limit":5225840,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x68304835","output":"0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e","gas_used":860,"gas_limit":5137167,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[4],"idx":3,"trace":{"depth":1,"success":true,"caller":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x5df45946","output":"0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49","gas_used":1480,"gas_limit":5217495,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":3,"children":[],"idx":4,"trace":{"depth":2,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x5df45946","output":"0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49","gas_used":816,"gas_limit":5135351,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[6],"idx":5,"trace":{"depth":1,"success":true,"caller":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xdf5cf723","output":"0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","gas_used":7910,"gas_limit":5213125,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":5,"children":[],"idx":6,"trace":{"depth":2,"success":true,"caller":"0x998abeb3e57409262ae5b751f60747921b33613e","address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xdf5cf723","output":"0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9","gas_used":746,"gas_limit":5124651,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040526004361015610022575b3615610018575f80fd5b610020613ef5565b005b5f3560e01c806306045a91146102ec57806310d67a2f146102e7578063136439dd146102e2578063137122b5146102dd578063171f1d5b146102d857806318daeeaf146102d35780632e1a7d4d146102ce57806333cfb7b7146102c95780633bc28c8c146102c4578063416c7e5e146102bf5780634223d551146102ba5780634a5bf632146102b55780634ae07c37146102b0578063595c6a67146102ab5780635ac86ab7146102a65780635c975abb146102a15780635df459461461029c57806368304835146102975780636b3aa72e146102925780636d14a9871461028d57806370a0823114610238578063715018a614610288578063886f1195146102835780638da5cb5b1461027e57806395c6d604146102795780639926ee7d14610274578063a364f4da1461026f578063a98fb3551461026a578063ab21739a14610265578063b099627e14610260578063b753645e1461025b578063b98d090814610256578063d66eaabd14610251578063df5cf7231461024c578063e481af9d14610247578063ea5ca34b14610242578063f2fde38b1461023d578063f474b52014610238578063f7013ef614610233578063f9120af61461022e578063fa534dc014610229578063fabc1cbc14610224578063fc299dee1461021f578063fce36c7d1461021a5763fd4c3b7c0361000e57611f10565b611eb5565b611e8d565b611d7f565b611c81565b611c3a565b611b1e565b6110e5565b611a8d565b611a70565b611a55565b611a11565b611838565b611816565b6117f5565b6117ac565b611457565b61139d565b6112d4565b611249565b6111f8565b6111a3565b61117b565b611120565b6110a1565b61105d565b611019565b610fd5565b610fb8565b610f85565b610eff565b610e76565b610b7c565b610b3f565b610a0c565b6109d5565b6109a1565b610887565b61082d565b6107c5565b61068d565b610548565b6104a6565b61042b565b606435906001600160601b03198216820361030857565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761033b57604052565b61030c565b606081019081106001600160401b0382111761033b57604052565b90601f801991011681019081106001600160401b0382111761033b57604052565b6040519061038c6101008361035b565b565b6040519061038c60408361035b565b9061038c604051928361035b565b6001600160401b03811161033b57601f01601f191660200190565b9291926103d2826103ab565b916103e0604051938461035b565b829481845281830111610308578281602093845f960137010152565b9080601f8301121561030857816020610417933591016103c6565b90565b6001600160a01b0381160361030857565b34610308576101003660031901126103085760243560443560043561044e6102f1565b9260a435926084356001600160401b038511610308576104a2956104796104909636906004016103fc565b9260c4359460e4359661048b8861041a565b611fb5565b60405190151581529081906020820190565b0390f35b3461030857602036600319011261030857600480356104c48161041a565b60fb5460405163755b36bd60e11b81529260209184919082906001600160a01b03165afa918215610543576100209261050f915f91610514575b506001600160a01b031633146120de565b613ff6565b610536915060203d60201161053c575b61052e818361035b565b8101906120be565b5f6104fe565b503d610524565b6120d3565b346103085760203660031901126103085760043560fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa80156105435761059f915f91610653575b50612152565b60fc54818116036105e8578060fc557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806105e33394829190602083019252565b0390a2005b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610675915060203d60201161067b575b61066d818361035b565b81019061213d565b5f610599565b503d610663565b60ff81160361030857565b346103085760203660031901126103085760206004356106ac81610682565b60cc54600160ff60405193161b1615158152f35b60409060e319011261030857604051906106d982610320565b60e4358252610104356020830152565b91908260409103126103085760405161070181610320565b6020808294803584520135910152565b9080601f83011215610308576040519161072c60408461035b565b82906040810192831161030857905b8282106107485750505090565b813581526020918201910161073b565b9060806063198301126103085760405161077181610320565b602061078c8294610783816064610711565b845260a4610711565b910152565b919060808382031261030857602061078c604051926107af84610320565b604084966107bd8382610711565b865201610711565b34610308576101203660031901126103085760043560403660231901126103085761081d60409182516107f781610320565b6024358152604435602082015261080d36610758565b90610817366106c0565b926121ed565b8251911515825215156020820152f35b346103085760203660031901126103085760ff60043561084c81610682565b610854614565565b166001811b1960cc541660cc557f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a5f80a2005b34610308576020366003190112610308576004356108b26108ac60088060fc54161490565b15611f69565b335f5260ca6020528060405f20541061092b57335f90815260ca6020526040812090918291829182916108e68282546122fa565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a2818115610922575b3390f11561054357005b506108fc610918565b335f90815260ca6020526040902061095c91905b54632e2a182f60e11b5f5233600452602491909152604452606490565b5ffd5b60206040818301928281528451809452019201905f5b8181106109825750505090565b82516001600160a01b0316845260209384019390920191600101610975565b34610308576020366003190112610308576104a26109c96004356109c48161041a565b612493565b6040519182918261095f565b34610308576020366003190112610308576100206004356109f58161041a565b6109fd614565565b61465b565b8015150361030857565b3461030857602036600319011261030857600435610a2981610a02565b604051638da5cb5b60e01b81526020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa908115610543575f91610b20575b506001600160a01b03163303610a8f57610020906146b9565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b610b39915060203d60201161053c5761052e818361035b565b5f610a76565b602036600319011261030857610020600435610b5a8161041a565b610b6b60108060fc54161415611f69565b34906146f7565b5f91031261030857565b34610308575f3660031901126103085760cb546040516001600160a01b039091168152602090f35b6024359063ffffffff8216820361030857565b359063ffffffff8216820361030857565b6001600160401b03811161033b5760051b60200190565b9080601f83011215610308578135610bf681610bc8565b92610c04604051948561035b565b81845260208085019260051b82010192831161030857602001905b828210610c2c5750505090565b60208091610c3984610bb7565b815201910190610c1f565b81601f82011215610308578035610c5a81610bc8565b92610c68604051948561035b565b81845260208085019260061b8401019281841161030857602001915b838310610c92575050505090565b6020604091610ca184866106e9565b815201920191610c84565b9080601f83011215610308578135610cc381610bc8565b92610cd1604051948561035b565b81845260208085019260051b820101918383116103085760208201905b838210610cfd57505050505090565b81356001600160401b03811161030857602091610d1f87848094880101610bdf565b815201910190610cee565b9190916101808184031261030857610d4061037c565b9281356001600160401b0381116103085781610d5d918401610bdf565b845260208201356001600160401b0381116103085781610d7e918401610c44565b602085015260408201356001600160401b0381116103085781610da2918401610c44565b6040850152610db48160608401610791565b6060850152610dc68160e084016106e9565b60808501526101208201356001600160401b0381116103085781610deb918401610bdf565b60a08501526101408201356001600160401b0381116103085781610e10918401610bdf565b60c08501526101608201356001600160401b03811161030857610e339201610cac565b60e0830152565b90602080835192838152019201905f5b818110610e575750505090565b82516001600160601b0316845260209384019390920191600101610e4a565b3461030857606036600319011261030857600435610e92610ba4565b90604435906001600160401b03821161030857610ef592610eba610ec0933690600401610d2a565b91612c68565b604051928392604084526020610ee182516040808801526080870190610e3a565b910151848203603f19016060860152610e3a565b9060208301520390f35b34610308575f3660031901126103085760fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa801561054357610f51915f916106535750612152565b5f1960fc556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b34610308576020366003190112610308576020600160ff600435610fa881610682565b161b8060fc541614604051908152f35b34610308575f36600319011261030857602060fc54604051908152f35b34610308575f366003190112610308576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b34610308575f366003190112610308576040517f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b34610308576020366003190112610308576004356111028161041a565b60018060a01b03165f5260ca602052602060405f2054604051908152f35b34610308575f36600319011261030857611138614565565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610308575f3660031901126103085760fb546040516001600160a01b039091168152602090f35b34610308575f366003190112610308576033546040516001600160a01b039091168152602090f35b9181601f84011215610308578235916001600160401b038311610308576020838186019501011161030857565b34610308576040366003190112610308576004356001600160401b0381116103085761123a61122d60209236906004016111cb565b91906024359236916103c6565b82815191012014604051908152f35b34610308576040366003190112610308576004356112668161041a565b602435906001600160401b0382116103085760606003198336030112610308576040519061129382610340565b82600401356001600160401b03811161030857610020936112bc604492600436918401016103fc565b84526024810135602085015201356040830152613551565b34610308575f6020366003190112610308576004356112f28161041a565b611326337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031690813b15610308576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af1801561054357611391575080f35b61002091505f9061035b565b34610308575f6020366003190112610308576004356001600160401b0381116103085736602382011215610308576113df9036906024816004013591016103c6565b6113e7614565565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316803b156103085760405163a98fb35560e01b815260206004820152915f918391829084908290611445906024830190613631565b03925af1801561054357611391575080f35b34610308576060366003190112610308576004356024356114778161041a565b6044356001600160401b03811161030857611496903690600401610d2a565b60cb546001600160a01b03163381900361179657506114bc6108ac60028060fc54161490565b5a6040805160208101868152606086901b6001600160601b031916928201929092526114f581605481015b03601f19810183528261035b565b5190209161150b835f5260c960205260405f2090565b92835463ffffffff6115208263ffffffff1690565b16156117825760201c60ff1661177057835464ff0000000019166401000000001784556001600160a01b0385165f90815260ca602052604090205493600181015480951061172d575461157b92919063ffffffff1690612c68565b50936115a86001600160601b036115a26115958851612397565b516001600160601b031690565b16613655565b60208601906115d16115c56115c06115958551612397565b613694565b6001600160601b031690565b116116e0575f808080888861163b61163461162f8b8b7f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e2604051806116258a82919091602081019260018060a01b03169052565b0390a25a906122fa565b6123b5565b3a90613681565b9080821084146116d85750905b6001600160a01b0381165f90815260ca6020526040902061166a8382546122fa565b90556001600160a01b03165f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a260cb546116bf906116b3906001600160a01b031681565b6001600160a01b031690565b8282156116cf575bf11561054357005b506108fc6116c7565b905090611648565b61095c9061170c6115c06115956117056117006115c56115958d51612397565b613655565b9351612397565b63530f5c4560e11b5f526004919091526001600160601b0316602452604490565b61095c868661174c8260018060a01b03165f5260ca60205260405f2090565b54632e2a182f60e11b5f526001600160a01b03909216600452602452604452606490565b634e78d7f960e11b5f5260045260245ffd5b6311cb69a760e11b5f52600482905260245ffd5b632cbe419560e01b5f523360045260245260445ffd5b34610308576020366003190112610308576004355f5260c9602052606060405f206001815491015460ff6040519263ffffffff8116845260201c16151560208301526040820152f35b3461030857602036600319011261030857600435611811614565565b60cc55005b34610308575f36600319011261030857602060ff609754166040519015158152f35b6060366003190112610308576004356024356001600160401b038111610308576118669036906004016111cb565b91906044359261187d6108ac60018060fc54161490565b60408051602081018581523360601b6001600160601b031916928201929092526118aa81605481016114e7565b5190209063ffffffff6118d26118c8845f5260c960205260405f2090565b5463ffffffff1690565b166119fd57346119b5575b335f90815260ca602052604090208590541061199c577f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5593946105e39161198f6119256136b5565b4363ffffffff168082529561194e905f60208401528560408401525f5260c960205260405f2090565b90604060019163ffffffff81511663ffffffff198554161784556020810151151564ff0000000085549160201b169064ff0000000019161784550151910155565b60405194859433866136d3565b335f90815260ca6020526040902061095c90869061093f565b335f90815260ca602052604090206119ce348254612419565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a26118dd565b630c40bc4360e21b5f52600482905260245ffd5b34610308575f366003190112610308576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b34610308575f366003190112610308576104a26109c9613719565b34610308575f36600319011261030857602060cc54604051908152f35b3461030857602036600319011261030857600435611aaa8161041a565b611ab2614565565b6001600160a01b03811615611aca576100209061497d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103085760a036600319011261030857600435611b3b8161041a565b611bb2602435611b4a8161041a565b604435611b568161041a565b60643590611b638261041a565b608435925f5495611b98611b82611b7e8960ff9060081c1690565b1590565b80988199611c2c575b8115611c0c575b50613946565b86611ba9600160ff195f5416175f55565b611bf5576139a9565b611bb857005b611bc661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c0761010061ff00195f5416175f55565b6139a9565b303b15915081611c1e575b505f611b92565b60ff1660011490505f611c17565b600160ff8216109150611b8b565b3461030857602036600319011261030857600435611c578161041a565b611c5f614565565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055005b346103085760e036600319011261030857604435600435602435611ca36102f1565b916084359260a4356001600160401b03811161030857602094611ccd611d2b9236906004016103fc565b9060c43593611ce36108ac60048060fc54161490565b60405198899788976306045a9160e01b89526004890152602488015260448701526001600160601b0319166064860152608485015261010060a4850152610104840190613631565b9060c48301525f60e48301520381305afa8015610543576104a2915f91611d60575b5060405190151581529081906020820190565b611d79915060203d60201161067b5761066d818361035b565b5f611d4d565b346103085760203660031901126103085760fb5460405163755b36bd60e11b81526004803592602091839182906001600160a01b03165afa801561054357611dd8915f9161051457506001600160a01b031633146120de565b60fc54198119811603611e2257611dee8160fc55565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9080602081016105e3565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b34610308575f366003190112610308576065546040516001600160a01b039091168152602090f35b34610308576020366003190112610308576004356001600160401b03811161030857366023820112156103085780600401356001600160401b038111610308573660248260051b840101116103085760246100209201613abe565b346103085760203660031901126103085760ff600435611f2f81610682565b611f37614565565b166001811b60cc541760cc557fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe5f80a2005b15611f7057565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b9061041797969594939291611fd16108ac60048060fc54161490565b90969092906001600160a01b0381166120875750835b63ffffffff6120016118c8835f5260c960205260405f2090565b161561207b57611b7e61201f612029925f5260c960205260405f2090565b5460201c60ff1690565b6120705760408051602081019485529081019790975260608701919091526001600160601b03191660808601526104179461206781609481016114e7565b51902091613f10565b505050505050505f90565b50505050505050505f90565b6040516120b6816114e760208201948986909160349282526001600160601b03199060601b1660208201520190565b519020611fe7565b9081602091031261030857516104178161041a565b6040513d5f823e3d90fd5b156120e557565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b90816020910312610308575161041781610a02565b1561215957565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b9060028110156121d45760051b0190565b6121af565b634e487b7160e01b5f52601260045260245ffd5b6122c96122a66122cf956122a061229985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261227081610120840103601f19810183528261035b565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614122565b90614168565b926122a06122bb6122b56141f0565b946142e7565b916122c4614403565b614122565b91614437565b9091565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116122f557565b6122d3565b919082039182116122f557565b90816020910312610308575190565b9081602091031261030857516001600160c01b03811681036103085790565b90816020910312610308575161041781610682565b6040519061235960208361035b565b5f808352366020840137565b9061236f82610bc8565b61237c604051918261035b565b828152809261238d601f1991610bc8565b0190602036910137565b8051156121d45760200190565b9081518110156121d4570160200190565b906201117082018092116122f557565b90602082018092116122f557565b90600182018092116122f557565b90600282018092116122f557565b90600382018092116122f557565b90600482018092116122f557565b90600582018092116122f557565b919082018092116122f557565b6001600160601b0381160361030857565b908160409103126103085760206040519161245183610320565b805161245c8161041a565b8352015161246981612426565b602082015290565b80518210156121d45760209160051b010190565b5f1981146122f55760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3690911690602081602481855afa90811561054357612513916020915f91612803575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa908115610543575f916127d4575b506001600160c01b0316908115908115612771575b5061276857612549906145bd565b5f91907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690835b8151851015612625576125ce60206125ab6125a561259789876123a4565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa8015610543576001926125ed925f926125f5575b50612419565b940193612579565b61261791925060203d811161261e575b61260f818361035b565b810190612307565b905f6125e7565b503d612605565b612630919450612365565b925f905f5b81518110156127625761264e6125a561259783856123a4565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa918215610543575f92612742575b50905f915b81831061269357505050600101612635565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861270b985f91612714575b50516001600160a01b031690565b92612471565b6001600160a01b039091169052565b612485565b95019190612681565b612735915060403d811161273b575b61272d818361035b565b810190612437565b5f6126e3565b503d612723565b61275b91925060203d811161261e5761260f818361035b565b905f61267c565b50505050565b5061041761234a565b604051639aa1653d60e01b81529150602090829060049082905afa80156105435760ff915f916127a5575b5016155f61253b565b6127c7915060203d6020116127cd575b6127bf818361035b565b810190612335565b5f61279c565b503d6127b5565b6127f6915060203d6020116127fc575b6127ee818361035b565b810190612316565b5f612526565b503d6127e4565b61281a9150823d841161261e5761260f818361035b565b5f6124f3565b6040519061282d82610320565b60606020838281520152565b6040519061284860408361035b565b600182525f6020830152565b1561285b57565b60405162461bcd60e51b815260206004820152604160248201525f516020614d135f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156128c457565b60a460405162461bcd60e51b815260206004820152604460248201525f516020614d135f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b1561292f57565b60405162461bcd60e51b815260206004820152603c60248201525f516020614d135f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b1561298e57565b608460405162461bcd60e51b815260206004820152604060248201525f516020614d135f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b156129ec57565b60405162461bcd60e51b815260206004820152606660248201525f516020614d135f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610308575167ffffffffffffffff19811681036103085790565b15612aa157565b60405162461bcd60e51b815260206004820152606160248201525f516020614d135f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b90816020910312610308575161041781612426565b906001600160601b03809116911603906001600160601b0382116122f557565b15612b6557565b60405162461bcd60e51b815260206004820152604360248201525f516020614d135f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15612bd057565b60405162461bcd60e51b815260206004820152603960248201525f516020614d135f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110612c525750505090565b8251845260209384019390920191600101612c45565b9190612c72612820565b50612c7b612839565b5160408301515114806134ae575b80613498575b8061347d575b612c9e90612854565b612cb0602083015151835151146128bd565b612cc763ffffffff431663ffffffff831610612928565b612ccf61038e565b5f81525f602082015290612ce1612820565b94612cf3612ced612839565b51612365565b6020870152612d03612ced612839565b8652612d0d612820565b90612d1c602086015151612365565b8252612d2c602086015151612365565b6020830152612d39612839565b604051639aa1653d60e01b8152906020826004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa90811561054357612d91925f9261345c575b5061475a565b965f945b60208701518051871015612f0c57612db087612dc392612471565b5180515f526020015160205260405f2090565b612dd1876020870151612471565b5285612ed7575b612de6866020860151612471565b51602086612e02612df88a8c51612471565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36165afa91821561054357600192612eb1925f91612eb9575b50838060c01b0316612e82898851612471565b526122a0612e948960208c0151612471565b51612eab8d612ea48c8b51612471565b51166147e1565b90614812565b950194612d95565b612ed1915060203d81116127fc576127ee818361035b565b5f612e6f565b612f07612ee8876020870151612471565b51612f006020870151612efa8a6122e7565b90612471565b5110612987565b612dd8565b50909750612f1f919296959394506148f8565b90612f2c60975460ff1690565b8015613451576040516318891fd760e31b81526020816004817f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa908115610543575f91613432575b5095909492955b5f965b612f91612839565b518810156133df578661332b575b612fc1612fb3612db08a60408a0151612471565b67ffffffffffffffff191690565b90612fd96125a56125978b612fd4612839565b6123a4565b602087612fed612df88d60a08d0151612471565b604051631a2f32ab60e21b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa9283156105435761308993613074925f916132fd575b5067ffffffffffffffff19918216911614612a9a565b613082896040890151612471565b5190614168565b9061309c6125a56125978a612fd4612839565b6020866130b0612df88c60c08c0151612471565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e165afa8015610543576115958a60208e61314661314d95613158975f916132e0575b506131388585850151612471565b906001600160601b03169052565b0151612471565b6131388a8d51612471565b5f965f5b6020880151518110156132d1578a8a613199613179848451612471565b5161318c6125a561259785612fd4612839565b60ff161c60019081161490565b6131a8575b505060010161315c565b888a9261322d6131ed612df8879f6131e78760e06131de849c60206131d66125a5612597839f612fd4612839565b9a0151612471565b519a0151612471565b51612471565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830195909552919093166064840152829081906084820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa918215610543576132908e6001948e86955f9261329b575b506126f16131389293519361328b6115958487612471565b612b3e565b019890508a8a61319e565b61313892506132c36126f19160203d81116132ca575b6132bb818361035b565b810190612b29565b9250613273565b503d6132b1565b50600190980197965090612f89565b6132f79150843d81116132ca576132bb818361035b565b5f61312a565b61331e915060203d8111613324575b613316818361035b565b810190612a79565b5f61305e565b503d61330c565b61336560206133426125a56125978c612fd4612839565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa8015610543576133bc915f916133c1575b506133b68463ffffffff891692612419565b116129e5565b612f9f565b6133d9915060203d811161261e5761260f818361035b565b5f6133a4565b60209497506114e7965061341491506134199261342c9661340d929a959a60806060830151920151926121ed565b9190612b5e565b612bc9565b0151604051928391602083019586612c28565b51902090565b61344b915060203d60201161261e5761260f818361035b565b5f612f7f565b5f9590949295612f86565b61347691925060203d6020116127cd576127bf818361035b565b905f612d8b565b50612c9e613489612839565b5160e084015151149050612c95565b506134a1612839565b5160c08301515114612c8f565b506134b7612839565b5160a08301515114612c89565b156134cb57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b613585337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031691823b15610308575f928392604051948580948193639926ee7d60e01b835260018060a01b031660048301526040602483015260406135fa82516060604486015260a4850190613631565b91602081015160648501520151608483015203925af180156105435761361d5750565b8061362b5f61038c9361035b565b80610b72565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906064820291808304606414901517156122f557565b906006820291808304600614901517156122f557565b818102929181159184041417156122f557565b6001600160601b036043911602906001600160601b0382169182036122f557565b604051906136c282610340565b5f6040838281528260208201520152565b95949360609363ffffffff60a0948394600180881b03168a5216602089015260806040890152816080890152838801375f828288010152601f8019910116850101930152565b604051639aa1653d60e01b81527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031690602081600481855afa80156105435760ff915f91613927575b5016801561391d577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316905f9081905b8083106138d957506137b49150612365565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105435760ff915f916138bb575b50168110156138b457604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa918215610543575f92613894575b50905f915b81831061382e575050506001016137b9565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861388b985f916127145750516001600160a01b031690565b9501919061381c565b6138ad91925060203d811161261e5761260f818361035b565b905f613817565b5092505050565b6138d3915060203d81116127cd576127bf818361035b565b5f6137df565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa801561054357600192613914925f926125f55750612419565b920191906137a2565b505061041761234a565b613940915060203d6020116127cd576127bf818361035b565b5f61376a565b1561394d57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b90939291906001600160a01b03811615613a89576001600160a01b03851615613a50576001600160a01b03821615613a1657613a0c613a11926139ef61038c97846149c5565b60018060a01b03166001600160601b0360a01b60cb54161760cb55565b61497d565b614a38565b604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606490fd5b6065546001600160a01b03163303613cd2577f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b0316915f5b818110613b405750823b1561030857613b2f925f928360405180968195829463fce36c7d60e01b845260048401613de6565b03925af180156105435761361d5750565b5f6020613b9b613b5e6116b383613b5887898b613d52565b01613d74565b6040613b6b86888a613d52565b6040516323b872dd60e01b8152336004820152306024820152910135604482015293849283919082906064820190565b03925af1801561054357613cb6575b50613bbe6116b36020613b58848688613d52565b604051636eb1769f60e11b81523060048201526001600160a01b03861660248201529190602090839060449082905afa801561054357613c616020915f948591613c99575b50613c2e613c196116b385613b58888b8d613d52565b916040613c27878a8c613d52565b0135612419565b60405163095ea7b360e01b81526001600160a01b038a166004820152602481019190915294859283919082906044820190565b03925af191821561054357600192613c7b575b5001613afd565b613c929060203d811161067b5761066d818361035b565b505f613c74565b613cb09150833d811161261e5761260f818361035b565b5f613c03565b613ccd9060203d811161067b5761066d818361035b565b613baa565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b91908110156121d45760051b81013590609e1981360301821215610308570190565b356104178161041a565b916020908281520191905f5b818110613d975750505090565b9091926040806001928635613dab8161041a565b848060a01b031681526001600160601b036020880135613dca81612426565b166020820152019401929101613d8a565b359061038c8261041a565b9180602084016020855252604083019060408160051b85010193835f91609e1982360301905b848410613e1d575050505050505090565b90919293949596603f19828203018752873583811215610308578401908135601e198336030181121561030857820191602083359301906001600160401b038411610308578360061b3603821361030857613ee6836080613edb81613e916020989760019a60a08b9a5260a0870191613d7e565b95613eaf613ea0898301613ddb565b6001600160a01b0316868a0152565b60408101356040860152613ed5613ec860608301610bb7565b63ffffffff166060870152565b01610bb7565b63ffffffff16910152565b99019701959401929190613e0c565b613f0660208060fc54161415611f69565b61038c34336146f7565b93909291601f855116613f775791906020925b85518411613f6e5760018316613f54575f5282850151602052613f4d60405f209260011c936123c5565b9291613f23565b838601515f52602052613f4d60405f209260011c936123c5565b92509350501490565b60405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a490fd5b6001600160a01b038116156140615760fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a160018060a01b03166001600160601b0360a01b60fb54161760fb55565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b604051906140eb82610320565b5f6020838281520152565b60405190610180614107818461035b565b368337565b6040519061411b60208361035b565b6020368337565b919060409060606141316140de565b9485926020855192614143858561035b565b8436853780518452015160208301528482015260076107cf195a01fa1561416657565bfe5b6020929160806040926141796140de565b9586938186519361418a868661035b565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561416657156141bb57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b6040516141fc81610320565b604090815161420b838261035b565b8236823781526020825191614220848461035b565b8336843701528051614232828261035b565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190614288838361035b565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526142dd8351938461035b565b8252602082015290565b5f516020614cd35f395f51905f52906142fe6140de565b505f919006602060c0835b6143fe575f935f516020614cd35f395f51905f5260038186818180090908604051614334858261035b565b84368237848185604051614348828261035b565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614cd35f395f51905f5260a082015260056107cf195a01fa8015614166576143b290614c86565b51916143fe575f516020614cd35f395f51905f52828009146143e957505f516020614cd35f395f51905f5260015f94089293614309565b929350506143f561038e565b92835282015290565b6121d9565b61440b6140de565b5060405161441881610320565b600181526002602082015290565b90600c8110156121d45760051b0190565b93929091614445604061039d565b9485526020850152614457604061039d565b91825260208201526144676140f6565b925f5b600281106144945750505060206101809261448361410c565b93849160086201d4c0fa9151151590565b806144a060019261366b565b6144aa82856121c3565b51516144b68289614426565b5260206144c383866121c3565b5101516144d86144d2836123d3565b89614426565b526144e382866121c3565b5151516144f26144d2836123e1565b5261450861450083876121c3565b515160200190565b516145156144d2836123ef565b52602061452283876121c3565b510151516145326144d2836123fd565b5261455e6145586145516020614548868a6121c3565b51015160200190565b519261240b565b88614426565b520161446a565b6033546001600160a01b0316330361457957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff6145c9826147e1565b166145d3816103ab565b906145e1604051928361035b565b8082526145f0601f19916103ab565b013660208301375f5f5b8251821080614650575b15614649576001811b8416614622575b61461d90612485565b6145fa565b90600161461d9160ff60f81b8460f81b165f1a61463f82876123a4565b5301919050614614565b5050905090565b506101008110614604565b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b8115614747576001600160a01b03165f81815260ca602052604090208054919282019182106122f55755805f5260ca6020525f516020614cf35f395f51905f52602060405f2054604051908152a2565b50632097692160e11b5f5260045260245ffd5b90600161476860ff93614b9f565b928392161b11156147765790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6147ed575090565b5f1981018181116122f55761ffff9116911661ffff81146122f55760010190806147e5565b9061481b6140de565b5061ffff8116906102008210156148c057600182146148bb5761483c61038e565b5f81525f602082015292906001905f925b61ffff831685101561486157505050505090565b600161ffff831660ff86161c81161461489b575b60016148916148868360ff94614168565b9460011b61fffe1690565b940116929161484d565b9460016148916148866148b08960ff95614168565b989350505050614875565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b6149006140de565b50805190811580614971575b1561492d57505060405161492160408261035b565b5f81525f602082015290565b60205f516020614cd35f395f51905f52910151065f516020614cd35f395f51905f52035f516020614cd35f395f51905f5281116122f557604051916142dd83610320565b5060208101511561490c565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b9060ff5f5460081c16156149df576109fd61038c9261497d565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb546001600160a01b03161580614b0b575b15614a905781614a5d61038c9360fc55565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a2613ff6565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b0381161515614a4b565b15614b2457565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614c0f57815115614c0a57614bcd614bc36125a561259785612397565b60ff600191161b90565b6001905b8351821015614c0557600190614bf0614bc36125a561259786896123a4565b90614bfc818311614b1d565b17910190614bd1565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b15614c8d57565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212203f93810e136abc668d4b6e863312064f727ebbe3f1a248a9593f47836096adac64736f6c634300081b0033","nonce":49,"gas_used":4397684},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x431a74","logs":[{"address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x493be53d2715c9bc34e576275040d27307c3810ccfad004a26d86d2f966a1ef4","block_number":20},{"info":{"transaction_hash":"0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","gas_used":4731771,"gas_limit":6283496,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","nonce":17,"gas_used":5172419},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x4eecc3","logs":[{"address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","block_number":15},{"info":{"transaction_hash":"0x01db9852ede867033ae1ced7849d0c0df6ce28d3a6e5c90461a2d94aded74c38","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60806040526103ca803803806100148161024f565b92833981019060408183031261024b578051916001600160a01b0383169182840361024b576020810151906001600160401b03821161024b57019181601f8401121561024b57825161006d61006882610288565b61024f565b9381855260208501936020838301011161024b57815f926020809301865e85010152833b156101f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906101e9575b610109575b60405160cb90816102ff8239f35b610113606061024f565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561019557610184935f92839251915af43d1561018d573d9061017561006883610288565b9182523d5f602084013e6102a3565b505f80806100fb565b6060906102a3565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f6100f6565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027457604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161027457601f01601f191660200190565b909190156102af575090565b8151156102bf5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033000000000000000000000000fd471836031dc5108809d173a067e8486b9047a3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4f28c3e3700000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000006530dd13afb697b81e2d602a279ebaec8ca2e31000000000000000000000000663f3ad617193148711d28f5334ee4ed070166024cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c9700a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b00000000000000000000000000000000000000000000000000000000","output":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","gas_used":228748,"gas_limit":318909,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000fd471836031dc5108809d173a067e8486b9047a3"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","address":"0xfd471836031dc5108809d173a067e8486b9047a3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf28c3e3700000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000006530dd13afb697b81e2d602a279ebaec8ca2e31000000000000000000000000663f3ad617193148711d28f5334ee4ed070166024cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c9700a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b","output":"0x","gas_used":160903,"gas_limit":287270,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Return","out":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","nonce":60,"gas_used":300538},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x495fa","logs":[{"address":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000fd471836031dc5108809d173a067e8486b9047a3"],"data":"0x"},{"address":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},{"address":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000002000001000000000400100000000000000020000000020000000004000100000800000000000000000000000000000000400000000000000000000000000020000000000000000080000000000000000000000000000000000000000000000400002000000000000000000000000000000000000020000000200000000000044000040000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x845b711ebbe290e1e3d9b14551ca6e40f934f8bdffaf6c1124d3b607f02b028b","block_number":31},{"info":{"transaction_hash":"0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4367,"gas_limit":14202,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":29,"gas_used":25799},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xae183","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","block_number":24},{"info":{"transaction_hash":"0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":7,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670","block_number":7},{"info":{"transaction_hash":"0xe662ce934007714e099c6aed272dfefa12862493823053fb1e521f51c912ce19","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101c080604052346102f457608081615454803803809161002082856102f8565b8339810103126102f4578051906001600160a01b03821682036102f45760208101516001600160a01b03811681036102f4576040820151916001600160a01b03831683036102f45760600151926001600160a01b03841684036102f45760405161008b6040826102f8565b6016815260208101907f4156535265676973747279436f6f7264696e61746f72000000000000000000008252604051916100c66040846102f8565b6006835260208301916576302e302e3160d01b8352519020915190208160e05280610100524660a0526040519060208201925f5160206154345f395f51905f528452604083015260608201524660808201523060a082015260a0815261012d60c0826102f8565b5190206080523060c0525f5160206154345f395f51905f52610120526101405261018052610160526101a0525f5460ff8160081c1661029f5760ff80821610610265575b6040516151049081610330823960805181614789015260a05181614840015260c05181614753015260e051816147d8015261010051816147fe015261012051816147b5015261014051818181610d1b015281816137f601526140a5015261016051818181610c3f015281816113e001528181612d60015281816136820152818161398801528181613ee601526145eb0152610180518181816114ac01528181612d2e01528181612fe0015281816136e701528181613f71015281816142bc015261452401526101a051818181610e8801528181611a2e01528181612d920152818161374901528181613fda015261458a0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610171565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761031b57604052565b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062cf2ab51461038357806303fd34921461037e57806304ec635114610379578063054310e6146103745780630a3b0a4f1461036f5780630cf4b7671461036a5780630d3f21341461036557806310d67a2f14610360578063125e05841461035b57806313542a4e14610356578063136439dd146103515780631478851f1461034c5780631eb812da14610347578063249a0c421461034257806328f61b311461033d57806329092d0e14610338578063296bb0641461033357806329d1e0c31461032e5780632cdd1e86146103295780633998fdd3146103245780633af32abf1461031f5780633c2a7f4c1461031a5780635140a5481461031557806353abfad4146103105780635865c60c1461030b578063595c6a67146103065780635ac86ab7146103015780635b0b829f146102fc5780635c975abb146102f75780635df45946146102f25780636347c900146102ed57806368304835146102e85780636c708904146102e35780636e3b17db146102de578063715018a6146102d957806384ca5213146102d4578063871ef049146102cf578063886f1195146102ca5780638da5cb5b146102c55780639aa1653d146102c05780639b5d177b146102bb5780639e9923c2146102b65780639feab859146102b1578063a50857bf146102ac578063a96f783e146102a7578063c391425e146102a2578063ca0de8821461029d578063ca4f2d9714610298578063d72d8dd614610293578063d75b4c881461028e578063dd8283f314610289578063e65797ad14610284578063f2fde38b1461027f578063fabc1cbc1461027a5763fd39105a14610275575f80fd5b6122f2565b6121e0565b61214f565b6120bb565b61201c565b611dfe565b611d3e565b611cf1565b611cb7565b611c13565b611bb7565b611a97565b611a5d565b611a19565b611950565b61188d565b611865565b61183a565b61180a565b611794565b6116a4565b611566565b6114db565b611497565b61143d565b6113cb565b6113ae565b6112fa565b6112bc565b611234565b6111c8565b611114565b610df6565b610d8a565b610d4a565b610d06565b610cd9565b610cac565b610c09565b610ba0565b610b78565b610b46565b610acc565b610a9d565b610966565b61092b565b6108f0565b61084a565b61081c565b61076b565b610620565b6105be565b6104c5565b61048d565b6103bc565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460051b0101116103b857565b5f80fd5b346103b85760203660031901126103b8576004356001600160401b0381116103b8576103ec903690600401610388565b906104046103fe600480600154161490565b15612338565b5f5b82811061040f57005b806104876104206001938686612384565b3561042a816105e6565b838060a01b0381165f52609960205260405f2061046060ff8660405193610450856106a0565b80548552015416602083016123a1565b61048161047c6104708351612e1f565b6001600160c01b031690565b612eb4565b91612f96565b01610406565b346103b85760203660031901126103b8576004355f526098602052602060405f2054604051908152f35b63ffffffff8116036103b857565b346103b85760603660031901126103b8576024356105056104ff6004356104eb846104b7565b604435905f52609860205260405f20611423565b506123d3565b63ffffffff8082511692169182106105895760408161054d61057594610535602061055b96015163ffffffff1690565b9063ffffffff821615918215610579575b5050612404565b01516001600160c01b031690565b6040516001600160c01b0390911681529081906020820190565b0390f35b63ffffffff161190505f80610546565b60405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b6044820152606490fd5b5f9103126103b857565b346103b8575f3660031901126103b857609d546040516001600160a01b039091168152602090f35b6001600160a01b038116036103b857565b60043590610604826105e6565b565b60243590610604826105e6565b60443590610604826105e6565b346103b85760203660031901126103b85760043561063d816105e6565b61064561306c565b6001600160a01b03165f81815260c860205260408120805460ff191660011790557f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9080a2005b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176106bb57604052565b61068c565b606081019081106001600160401b038211176106bb57604052565b90601f801991011681019081106001600160401b038211176106bb57604052565b604051906106046040836106db565b604051906106046060836106db565b6001600160401b0381116106bb57601f01601f191660200190565b9291926107418261071a565b9161074f60405193846106db565b8294818452818301116103b8578281602093845f960137010152565b346103b85760203660031901126103b8576004356001600160401b0381116103b857366023820112156103b8576107ac903690602481600401359101610735565b335f52609960205260ff600160405f2001541660038110156108175760016107d49114612436565b335f5260996020527fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa61081260405f2054926040519182918261248e565b0390a2005b61119d565b346103b85760203660031901126103b85760043561083861306c565b60a055005b60643590610604826105e6565b346103b85760203660031901126103b85760048035610868816105e6565b5f5460405163755b36bd60e11b815292602091849190829060101c6001600160a01b03165afa9182156108eb576108ba926108b5915f916108bc575b506001600160a01b031633146124bf565b6130c4565b005b6108de915060203d6020116108e4575b6108d681836106db565b81019061249f565b5f6108a4565b503d6108cc565b6124b4565b346103b85760203660031901126103b85760043561090d816105e6565b60018060a01b03165f52609f602052602060405f2054604051908152f35b346103b85760203660031901126103b857600435610948816105e6565b60018060a01b03165f526099602052602060405f2054604051908152f35b346103b85760203660031901126103b8576004355f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb576109bf915f91610a6e575b50612536565b60015481811603610a0357806001557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806108123394829190602083019252565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610a90915060203d602011610a96575b610a8881836106db565b81019061251e565b5f6109b9565b503d610a7e565b346103b85760203660031901126103b8576004355f52609a602052602060ff60405f2054166040519015158152f35b346103b85760403660031901126103b8576060610b046104ff602435600435610af3612593565b505f52609860205260405f20611423565b6040519063ffffffff815116825263ffffffff6020820151166020830152604060018060c01b03910151166040820152f35b6004359060ff821682036103b857565b346103b85760203660031901126103b85760ff610b61610b36565b165f52609b602052602060405f2054604051908152f35b346103b8575f3660031901126103b857609e546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b857600435610bbd816105e6565b610bc561306c565b6001600160a01b03165f81815260c860205260408120805460ff191690557f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9080a2005b346103b85760203660031901126103b8576040516308f6629d60e31b815260048035908201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156108eb57610575915f91610c8d575b506040516001600160a01b0390911681529081906020820190565b610ca6915060203d6020116108e4576108d681836106db565b5f610c72565b346103b85760203660031901126103b8576108ba600435610ccc816105e6565b610cd461306c565b6131bb565b346103b85760203660031901126103b8576108ba600435610cf9816105e6565b610d0161306c565b613219565b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b85760203660031901126103b857600435610d67816105e6565b60018060a01b03165f5260c8602052602060ff60405f2054166040519015158152f35b346103b85760203660031901126103b8576040610db1600435610dac816105e6565b6125c9565b610dc78251809260208091805184520151910152565bf35b9181601f840112156103b8578235916001600160401b0383116103b857602083818601950101116103b857565b346103b85760403660031901126103b8576004356001600160401b0381116103b857610e26903690600401610388565b906024356001600160401b0381116103b857610e4783913690600401610dc9565b610e5b6103fe949294600480600154161490565b610e7a610e6a60965460ff1690565b610e75368488610735565b6133e2565b50610e8681841461262f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316935f5b828110610ebc57005b610ee1610edb610ecd83868661266d565b356001600160f81b03191690565b60f81c90565b610eec828787612679565b6040516379a0849160e11b815260ff841660048201526020816024818d5afa9081156108eb57610f2c9163ffffffff915f91611047575b501682146126d2565b5f90815b8688838510610f9c575050505050509060019143610f598260ff165f52609b60205260405f2090565b557f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db460ff60405192169180610f9343829190602083019252565b0390a201610eb3565b86611038611031600195948b61103f95611022610fc3610fbe8d8f8e90612384565b612394565b9861100d611008610fec610fe78d60018060a01b03165f52609960205260405f2090565b6123ad565b99610ffa6104708c51612e1f565b60ff600192161c1660011490565b612709565b8a8060a01b03168a8060a01b038a1611612740565b61102b8261278a565b926127b8565b3691610735565b9083612f96565b920191610f30565b611068915060203d811161106e575b61106081836106db565b8101906126bd565b8c610f23565b503d611056565b6001600160401b0381116106bb5760051b60200190565b60206003198201126103b857600435906001600160401b0382116103b857806023830112156103b85781600401356110c381611075565b926110d160405194856106db565b8184526024602085019260051b8201019283116103b857602401905b8282106110fa5750505090565b602080918335611109816105e6565b8152019101906110ed565b346103b8576111223661108c565b61112a61306c565b5f5b81518110156108ba576001906001600160a01b0361114a82856127dd565b51165f5260c860205260405f2060ff19815416905561116981846127dd565b5160a083901b839003167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc5f80a20161112c565b634e487b7160e01b5f52602160045260245ffd5b6003111561081757565b9060038210156108175752565b346103b85760203660031901126103b8576004356111e5816105e6565b6111ed6125b1565b5060018060a01b03165f52609960205260405f2061121560ff600160405193610450856106a0565b60405180916105756020604084019280518552015160208401906111bb565b346103b8575f3660031901126103b8575f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb57611288915f91610a6e5750612536565b5f196001556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b346103b85760203660031901126103b8576020600160ff6112db610b36565b161b806001541614604051908152f35b359061ffff821682036103b857565b346103b85760803660031901126103b857611313610b36565b60603660231901126103b85760405161132b816106c0565b602435611337816104b7565b815260443561ffff811681036103b857602082015260643561ffff811681036103b857604082015261136761306c565b60ff6096541660ff83161015611380576108ba91613469565b60405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b6044820152606490fd5b346103b8575f3660031901126103b8576020600154604051908152f35b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054821015611438575f5260205f2001905f90565b61140f565b346103b85760203660031901126103b857600435609c548110156103b857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c01546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b8576114e93661108c565b6114f161306c565b5f5b81518110156108ba576001906001600160a01b0361151182856127dd565b51165f5260c860205260405f208260ff1982541617905561153281846127dd565b5160a083901b839003167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f5f80a2016114f3565b346103b85760403660031901126103b857600435611583816105e6565b6024356001600160401b0381116103b8576115a2903690600401610dc9565b609e549192916001600160a01b03163303611672576001600160a01b0382165f908152609f602090815260408083204290556099909152902080546001611612816116096116036104706115f860965460ff1690565b610e75368b8e610735565b94612e1f565b94015460ff1690565b61161b816111b1565b14918261165f575b82611646575b505061163157005b6108ba92611640913691610735565b906135c9565b81166001600160c01b0390811691161490505f80611629565b6001600160c01b03821615159250611623565b60405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b6044820152606490fd5b346103b8575f3660031901126103b8576116bc61306c565b606480546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b91908260409103126103b857604051611717816106a0565b8092803560ff811681036103b857825260209081013591611737836105e6565b0152565b9092919261174881611075565b9361175660405195866106db565b602085838152019160061b8301928184116103b857915b83831061177a5750505050565b602060409161178984866116ff565b81520192019161176d565b346103b85760a03660031901126103b8576004356117b1816105e6565b60243590604435906001600160401b0382116103b857366023830112156103b857610575926117ed6117fa93369060248160040135910161173b565b60643591608435936127f1565b6040519081529081906020820190565b346103b85760203660031901126103b8576020611828600435612e1f565b6040516001600160c01b039091168152f35b346103b8575f3660031901126103b8575f5460405160109190911c6001600160a01b03168152602090f35b346103b8575f3660031901126103b8576064546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b857602060ff60965416604051908152f35b6101009060431901126103b857604490565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460061b0101116103b857565b9190916060818403126103b85760405190611909826106c0565b819381356001600160401b0381116103b85782019181601f840112156103b85761193d604093928360208695359101610735565b8452602081013560208501520135910152565b346103b8576101a03660031901126103b8576004356001600160401b0381116103b857611981903690600401610dc9565b906024356001600160401b0381116103b8576119a1903690600401610dc9565b6119aa366118ad565b90610144356001600160401b0381116103b8576119cb9036906004016118bf565b929091610164356001600160401b0381116103b8576119ee9036906004016118ef565b9461018435976001600160401b0389116103b857611a136108ba9936906004016118ef565b976128ac565b346103b8575f3660031901126103b8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103b8575f3660031901126103b85760206040517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68152f35b346103b8576101603660031901126103b8576004356001600160401b0381116103b857611ac8903690600401610dc9565b906024356001600160401b0381116103b857611ae8903690600401610dc9565b9092611af3366118ad565b92610144356001600160401b0381116103b857611b5c95611b4d611b1e611b559336906004016118ef565b96611b2f6103fe6001808054161490565b335f5260c8602052611b4760ff60405f205416612a07565b33613966565b943691610735565b9233613dd8565b5180511561143857602063ffffffff910151165f8052609760205263ffffffff60405f20541610611b8957005b60405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b6044820152606490fd5b346103b8575f3660031901126103b857602060a054604051908152f35b60206040818301928281528451809452019201905f5b818110611bf75750505090565b825163ffffffff16845260209384019390920191600101611bea565b346103b85760403660031901126103b857600435611c30816104b7565b602435906001600160401b0382116103b857366023830112156103b857816004013591611c5c83611075565b92611c6a60405194856106db565b8084526024602085019160051b830101913683116103b857602401905b828210611ca757610575611c9b8686612ab4565b60405191829182611bd4565b8135815260209182019101611c87565b346103b8575f3660031901126103b85760206040517f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8152f35b346103b85760203660031901126103b8576004356001600160401b0381116103b857611d38611d276108ba923690600401610dc9565b611031600280600154161415612338565b336135c9565b346103b8575f3660031901126103b8576020609c54604051908152f35b6001600160601b038116036103b857565b81601f820112156103b857803590611d8382611075565b92611d9160405194856106db565b82845260208085019360061b830101918183116103b857602001925b828410611dbb575050505090565b6040848303126103b85760206040918251611dd5816106a0565b8635611de0816105e6565b815282870135611def81611d5b565b83820152815201930192611dad565b346103b857366003190160a081126103b8576060136103b857604051611e23816106c0565b600435611e2f816104b7565b815260243561ffff811681036103b857602082015260443561ffff811681036103b857604082015260643590611e6482611d5b565b608435916001600160401b0383116103b857611e876108ba933690600401611d6c565b91611e9061306c565b6144df565b81601f820112156103b857803590611eac82611075565b92611eba60405194856106db565b828452602060608186019402830101918183116103b857602001925b828410611ee4575050505090565b6060848303126103b8576020606091604051611eff816106c0565b8635611f0a816104b7565b8152611f178388016112eb565b83820152611f27604088016112eb565b6040820152815201930192611ed6565b9080601f830112156103b8578135611f4e81611075565b92611f5c60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210611f845750505090565b602080918335611f9381611d5b565b815201910190611f77565b9080601f830112156103b8578135611fb581611075565b92611fc360405194856106db565b81845260208085019260051b820101918383116103b85760208201905b838210611fef57505050505090565b81356001600160401b0381116103b85760209161201187848094880101611d6c565b815201910190611fe0565b346103b8576101003660031901126103b8576120366105f7565b61203e610606565b90612047610613565b61204f61083d565b60843560a4356001600160401b0381116103b857612071903690600401611e95565b9160c4356001600160401b0381116103b857612091903690600401611f37565b9360e435966001600160401b0388116103b8576120b56108ba983690600401611f9e565b96612b8b565b346103b85760203660031901126103b85760ff6120d6610b36565b6120de612593565b50165f52609760205261057560405f2061ffff604051916120fe836106c0565b5463ffffffff81168352818160201c16602084015260301c16604082015260405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b346103b85760203660031901126103b85760043561216c816105e6565b61217461306c565b6001600160a01b0381161561218c576108ba906138a4565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b85760203660031901126103b8576004355f5460405163755b36bd60e11b8152906020908290600490829060101c6001600160a01b03165afa80156108eb5761223d915f916108bc57506001600160a01b031633146124bf565b6001541981198116036122875761225381600155565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c908060208101610812565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b346103b85760203660031901126103b85760043561230f816105e6565b60018060a01b03165f526099602052602060ff600160405f20015416610dc760405180926111bb565b1561233f57565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b91908110156114385760051b0190565b3561239e816105e6565b90565b60038210156108175752565b906106046040516123bd816106a0565b602060ff600183968054855201541691016123a1565b906040516123e0816106c0565b604081935463ffffffff8116835263ffffffff8160201c166020840152811c910152565b1561240b57565b606460405162461bcd60e51b815260206004820152600460248201526331371e1960e11b6044820152fd5b1561243d57565b60405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b6044820152606490fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061239e92818152019061246a565b908160209103126103b8575161239e816105e6565b6040513d5f823e3d90fd5b156124c657565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b908160209103126103b8575180151581036103b85790565b1561253d57565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b604051906125a0826106c0565b5f6040838281528260208201520152565b604051906125be826106a0565b5f6020838281520152565b61262a61239e916125d86125b1565b50604080517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6602082019081526001600160a01b03909316818301529081526126226060826106db565b519020613277565b6132c4565b1561263657565b60405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b6044820152606490fd5b90156114385790565b90821015611438570190565b91908110156114385760051b81013590601e19813603018212156103b85701908135916001600160401b0383116103b8576020018260051b360381136103b8579190565b908160209103126103b8575161239e816104b7565b156126d957565b60405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b6044820152606490fd5b1561271057565b60405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b6044820152606490fd5b1561274757565b60405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b906001820180921161279857565b612776565b9190820180921161279857565b906001116103b85790600190565b909392938483116103b85784116103b8578101920390565b8051156114385760200190565b80518210156114385760209160051b010190565b919493909260405192602084019460e08501917f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a875260018060a01b03166040860152606085015260c060808501528651809152602061010085019701905f5b81811061287e5750505061239e949561262292849260a084015260c083015203601f1981018352826106db565b8251805160ff168a526020908101516001600160a01b0316818b015260409099019890920191600101612851565b611b55819893839a956110316128f5612908999b9a9b6128d26103fe6001808054161490565b335f5260c86020526128ea60ff60405f205416612a07565b611b47888d14612a45565b96612901368c8e61173b565b8833613a9c565b9361293561293061291f610edb610ecd8589612664565b60ff165f52609760205260405f2090565b612a77565b9261294d61294387516127d0565b5163ffffffff1690565b63ffffffff61296c612963875163ffffffff1690565b63ffffffff1690565b91161161297c575b505050505050565b60206129f0611031946129f6936129eb611640986129fc9b6129a4610edb610ecd8b8f612664565b6129d06129bb896129c86129bb60408701516127d0565b516001600160601b031690565b9401516127d0565b906129e36129de8888612664565b612aa9565b923391614230565b612664565b01612394565b936127aa565b5f8080808080612974565b15612a0e57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606490fd5b15612a4c57565b606460405162461bcd60e51b815260206004820152600460248201526338a632b760e11b6044820152fd5b90604051612a84816106c0565b604061ffff82945463ffffffff81168452818160201c16602085015260301c16910152565b61239e9036906116ff565b9190805190612ac282611075565b91612ad060405193846106db565b808352612adf601f1991611075565b013660208401375f5b8151811015612b215780612b08612b01600193856127dd565b5187614386565b63ffffffff612b1783876127dd565b9116905201612ae8565b5090925050565b15612b2f57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b9694929091612bd59694925f5498612bbb60ff8b60081c16151515809b81612c4f575b8115612c2f575b50612b28565b89612bcc600160ff195f5416175f55565b612c1857612cf3565b612bdb57565b612be961ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612c2a61010061ff00195f5416175f55565b612cf3565b303b15915081612c41575b505f612bb5565b60ff1660011490505f612c3a565b600160ff8216109150612bae565b15612c6457565b60405162461bcd60e51b8152602060048201526002602482015261494560f01b6044820152606490fd5b609c54600160401b8110156106bb5760018101609c55609c5481101561143857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0180546001600160a01b0319166001600160a01b03909216919091179055565b612d2994610d019394612d24610cd4939b9a999b612d1f8d8b5190518091149081612e06575b50612c5d565b6138a4565b614669565b612d5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c8e565b612d8d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c8e565b612dbf7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612c8e565b5f5b8151811015612dff5780612df9612dda600193856127dd565b51612de86129bb848a6127dd565b612df284886127dd565b51916144df565b01612dc1565b5050509050565b90508c51145f612d19565b5f1981019190821161279857565b805f52609860205260405f20549081155f14612e3b5750505f90565b5f52609860205260405f20905f19810190811161279857612e5b91611423565b505460401c90565b90612e6d8261071a565b612e7a60405191826106db565b8281528092612e8b601f199161071a565b0190602036910137565b5f1981146127985760010190565b908151811015611438570160200190565b5f81805b612f2e5750612eca9061ffff16612e63565b5f5f5b8251821080612f23575b15612f1c576001811b8416612ef5575b612ef090612e95565b612ecd565b906001612ef09160ff60f81b8460f81b165f1a612f128287612ea3565b5301919050612ee7565b5050905090565b506101008110612ed7565b5f1981018181116127985761ffff9116911661ffff8114612798576001019080612eb8565b908160209103126103b857516001600160c01b03811681036103b85790565b61239e939260609260018060a01b031682526020820152816040820152019061246a565b919060016020820151612fa8816111b1565b612fb1816111b1565b0361306757516040516333567f7f60e11b81529160209183918291612fdb91908760048501612f72565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156108eb575f91613038575b506001600160c01b0316908161302c575050565b61164061060492612eb4565b61305a915060203d602011613060575b61305281836106db565b810190612f53565b5f613018565b503d613048565b505050565b6064546001600160a01b0316330361308057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381161561313e575f54604080516001600160a01b0360109390931c8316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a15f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b609d54604080516001600160a01b038084168252841660208201529192917f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c9190a16001600160a01b03166001600160a01b03199190911617609d55565b609e54604080516001600160a01b038084168252841660208201529192917f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc99190a16001600160a01b03166001600160a01b03199190911617609e55565b61327f614750565b9060405190602082019261190160f01b845260228301526042820152604281526132aa6062826106db565b51902090565b634e487b7160e01b5f52601260045260245ffd5b5f5160206150af5f395f51905f52906132db6125b1565b505f919006602060c0835b6133db575f935f5160206150af5f395f51905f526003818681818009090860405161331185826106db565b8436823784818560405161332582826106db565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206150af5f395f51905f5260a082015260056107cf195a01fa80156133e05761338f90614dab565b51916133db575f5160206150af5f395f51905f52828009146133c657505f5160206150af5f395f51905f5260015f940892936132e6565b929350506133d26106fc565b92835282015290565b6132b0565bfe5b9060016133f060ff936148e8565b928392161b11156133fe5790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b61352760ff7f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac921692835f52609760205260405f206134bf63ffffffff835116829063ffffffff1663ffffffff19825416179055565b6020820151815465ffff0000000067ffff000000000000604086015160301b169260201b169067ffffffff0000000019161717905560405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b0390a2565b1561353357565b606460405162461bcd60e51b8152602060048201526004602482015263071456d760e41b6044820152fd5b1561356557565b606460405162461bcd60e51b815260206004820152600460248201526310a9bab160e11b6044820152fd5b6001600160a01b03909116815260406020820181905261239e9291019061246a565b60409061239e93928152816020820152019061246a565b6001600160a01b0381165f9081526099602052604090209060018254920161360660016135f7835460ff1690565b613600816111b1565b14612436565b61366661362161047061361b60965460ff1690565b876133e2565b61362a85612e1f565b6001600160c01b039091169061364182151561352c565b6136578282166001600160c01b0316831461355e565b9019166001600160c01b031690565b6136708185614a4b565b6001600160c01b0316156137e9575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b857835f916136d5938360405180968195829463f4e24fe560e01b845260048401613590565b03925af180156108eb576137d5575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b8575f604051809263bd29b8cd60e01b82528183816137378989600484016135b2565b03925af180156108eb576137c1575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103b85761379c925f928360405180968195829463bd29b8cd60e01b8452600484016135b2565b03925af180156108eb576137ad5750565b806137bb5f610604936106db565b806105b4565b806137bb5f6137cf936106db565b5f613746565b806137bb5f6137e3936106db565b5f6136e4565b805460ff191660021790557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b8576040516351b27a6d60e11b81526001600160a01b0383166004820152905f908290602490829084905af180156108eb57613890575b50816001600160a01b0382167f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e45f80a35f61367f565b806137bb5f61389e936106db565b5f61385a565b606480546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908160209103126103b8575190565b61012090604060c0610604959796949761016084019860018060a01b03168452613932602085018260208091803584520135910152565b80830180356060860152602001356080850152826080820160a08601370160e0830137019060208091805184520151910152565b6040516309aa152760e11b81526001600160a01b0382811660048301529091907f000000000000000000000000000000000000000000000000000000000000000016602083602481845afa9283156108eb575f93613a47575b5082156139cd575050905090565b602092506139fd935f6139df846125c9565b6040516317ef39cb60e31b81529687958694859391600485016138fb565b03925af19081156108eb575f91613a18575b50805f80612f1c565b613a3a915060203d602011613a40575b613a3281836106db565b8101906138ec565b5f613a0f565b503d613a28565b613a6191935060203d602011613a4057613a3281836106db565b915f6139bf565b15613a6f57565b60405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b6044820152606490fd5b91929092602082019283515f52609a60205260ff60405f205416613b155761060494613b0d926040850191613ad48351421115613a68565b613af7613aea88515f52609a60205260405f2090565b805460ff19166001179055565b609d546001600160a01b031696519251936127f1565b905191614c95565b60405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b6044820152606490fd5b60405190613b50826106c0565b60606040838281528260208201520152565b15613b6957565b606460405162461bcd60e51b815260206004820152600460248201526308509a5d60e21b6044820152fd5b15613b9b57565b60405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b6044820152606490fd5b6001602091835181550191015160038110156108175760ff80198354169116179055565b9060018060a01b031681526040602082015260806040613c17845160608386015260a085019061246a565b9360208101516060850152015191015290565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03909116815260406020820181905261239e93910191613c2a565b9080601f830112156103b8578151613c8381611075565b92613c9160405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613cb95750505090565b602080918351613cc881611d5b565b815201910190613cac565b9190916040818403126103b85780516001600160401b0381116103b85783613cfc918301613c6c565b9260208201516001600160401b0381116103b85761239e9201613c6c565b61239e949260609260018060a01b0316825260208201528160408201520191613c2a565b6020818303126103b8578051906001600160401b0382116103b857019080601f830112156103b8578151613d7181611075565b92613d7f60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613da75750505090565b602080918351613db6816104b7565b815201910190613d9a565b60409061239e949281528160208201520191613c2a565b91929394817fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa613ea9613e09613b43565b98613e9d613e2c6104708b610e758c613e2460965460ff1690565b923691610735565b613e3586612e1f565b6001600160c01b0390911690613e4c82151561352c565b60018060c01b0316613e66613e618284161590565b613b62565b6001600160a01b038a165f908152609f60205260409020613e9690613e8f905460a0549061279d565b4211613b94565b1785614a4b565b6040519182918261248e565b0390a26001613ed481613ecc8660018060a01b03165f52609960205260405f2090565b015460ff1690565b613edd816111b1565b03614072575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b8575f6040518092631fd93ca960e11b8252818381613f378b8b8b60048501613c4a565b03925af180156108eb5784935f92849261405e575b50613f6c876040519788948594632550477760e01b865260048601613d1a565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19283156108eb575f938491859161403a575b5060408701526020860152613fd5604051948593849362bff04d60e01b855260048501613dc1565b0381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156108eb575f91614018575b50815290565b61403491503d805f833e61402c81836106db565b810190613d3e565b5f614012565b905061405891503d8086833e61405081836106db565b810190613cd3565b5f613fad565b806137bb8561406c936106db565b5f613f4c565b6140a361407d6106fc565b838152600160208201526001600160a01b0385165f908152609960205260409020613bc8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b857604051639926ee7d60e01b8152915f9183918290849082906140fa908a60048401613bec565b03925af180156108eb5761413f575b50806001600160a01b0383167fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe5f80a35f613ee3565b806137bb5f61414d936106db565b5f614109565b1561415a57565b60405162461bcd60e51b815260206004820152600360248201526206368360ec1b6044820152606490fd5b1561418c57565b60405162461bcd60e51b815260206004820152600360248201526263683160e81b6044820152606490fd5b908160209103126103b8575161239e81611d5b565b156141d357565b60405162461bcd60e51b815260206004820152600360248201526231b41960e91b6044820152606490fd5b1561420557565b60405162461bcd60e51b815260206004820152600360248201526263683360e81b6044820152606490fd5b6020919261428d6142806142b89896976142796142558783015160018060a01b031690565b6001600160a01b039081165f81815260996020526040902054969091161415614153565b5160ff1690565b60ff808516911614614185565b604051635401ed2760e01b8152600481019190915260ff909116602482015294859081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9283156108eb57610604945f9461433c575b50826143349261432f61431b936001600160601b0361432761431b82998b614d6a565b6001600160601b031690565b9116116141cc565b614d8d565b9116106141fe565b61431b919450926143349261432f6143736001600160601b039660203d60201161437f575b61436b81836106db565b8101906141b7565b969350509250926142f8565b503d614361565b815f52609860205260405f2054905f5b8281106143ca5760405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b6044820152606490fd5b808303838111612798576129636143e091612e11565b6144096143fe826143f9885f52609860205260405f2090565b611423565b505463ffffffff1690565b63ffffffff808516911611156144225750600101614396565b935050505090565b1561443157565b606460405162461bcd60e51b81526020600482015260046024820152630e29ac2f60e31b6044820152fd5b60ff60019116019060ff821161279857565b6080906001600160601b036020939460ff60608401961683521683820152606060408201528451809452019201905f5b8181106144ab5750505090565b825180516001600160a01b031685526020908101516001600160601b0316818601526040909401939092019160010161449e565b91906145226144f060965460ff1690565b9361450060c060ff87161061442a565b61451c61450c8661445c565b60ff1660ff196096541617609655565b84613469565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b156103b857614578925f928360405180968195829463ff694a7760e01b84528a6004850161446e565b03925af180156108eb57614655575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff83166004820152905f908290602490829084905af180156108eb57614641575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff90921660048301525f9082908183816024810161379c565b806137bb5f61464f936106db565b5f6145e8565b806137bb5f614663936106db565b5f614587565b5f5460101c6001600160a01b0316158061473e575b156146c3578161469061060493600155565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a26130c4565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b038116151561467e565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061483d575b156147ab577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526132aa60c0826106db565b507f00000000000000000000000000000000000000000000000000000000000000004614614782565b1561486d57565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614966578151156149615761492461491a610edb61490c856127d0565b516001600160f81b03191690565b60ff600191161b90565b6001905b835182101561495c5760019061494761491a610edb61490c8689612ea3565b90614953818311614866565b17910190614928565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b8054600160401b8110156106bb576149fa91600182018155611423565b614a3857815160208084015160409485015163ffffffff909316911b67ffffffff00000000161767ffffffffffffffff199190931b16919091179055565b634e487b7160e01b5f525f60045260245ffd5b90614a5e825f52609860205260405f2090565b5480614aab5750614a7a610604925f52609860205260405f2090565b614aa6614a8561070b565b4363ffffffff168152925b5f60208501526001600160c01b03166040840152565b6149dd565b91614ad663ffffffff93614ad0614aca845f52609860205260405f2090565b91612e11565b90611423565b5090614ae6825463ffffffff1690565b43851694168403614b1157506106049250906001600160401b0382549181199060401b169116179055565b815467ffffffff000000001916602085901b67ffffffff000000001617909155610604929190614aa690614b4d905f52609860205260405f2090565b91614a90614b5961070b565b63ffffffff9095168552565b15614b6c57565b60405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a490fd5b908160209103126103b857516001600160e01b0319811681036103b85790565b15614c0e57565b60405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a490fd5b90813b15614d275791602091614cc193604051809581948293630b135d3f60e11b8452600484016135b2565b03916001600160a01b03165afa80156108eb57610604915f91614cf8575b506001600160e01b031916630b135d3f60e11b14614c07565b614d1a915060203d602011614d20575b614d1281836106db565b810190614be7565b5f614cdf565b503d614d08565b61060492614d3491614df7565b6001600160a01b03908116911614614b65565b906001600160601b03809116911602906001600160601b03821691820361279857565b614d886001600160601b039161ffff60206127109501511690614d47565b160490565b614d886001600160601b039161ffff60406127109501511690614d47565b15614db257565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b61239e91614e0491614e0c565b919091614e84565b815160418103614e38575090614e3491602082015190606060408401519301515f1a90615005565b9091565b604003614e715760406020830151920151918260ff1c91601b830180931161279857614e34936001600160ff1b03169260ff1690615005565b50505f90600290565b6005111561081757565b614e8d81614e7a565b80614e955750565b614e9e81614e7a565b60018103614eeb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b614ef481614e7a565b60028103614f415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b614f4a81614e7a565b60038103614fa25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b80614fae600492614e7a565b14614fb557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116150a35760ff16601b81141580615098575b61508d576020935f93604051938493608085019385528785015260408401526060830152838052039060015afa156108eb575f516001600160a01b0381161561508557905f90565b505f90600190565b505050505f90600490565b50601c81141561503d565b505050505f9060039056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122008e52422e3bba4dbde50639da22bb14dc5549ff1da95556698281d1600612a1464736f6c634300081b00338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4900000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778","output":"0x60806040526004361015610011575f80fd5b5f3560e01c8062cf2ab51461038357806303fd34921461037e57806304ec635114610379578063054310e6146103745780630a3b0a4f1461036f5780630cf4b7671461036a5780630d3f21341461036557806310d67a2f14610360578063125e05841461035b57806313542a4e14610356578063136439dd146103515780631478851f1461034c5780631eb812da14610347578063249a0c421461034257806328f61b311461033d57806329092d0e14610338578063296bb0641461033357806329d1e0c31461032e5780632cdd1e86146103295780633998fdd3146103245780633af32abf1461031f5780633c2a7f4c1461031a5780635140a5481461031557806353abfad4146103105780635865c60c1461030b578063595c6a67146103065780635ac86ab7146103015780635b0b829f146102fc5780635c975abb146102f75780635df45946146102f25780636347c900146102ed57806368304835146102e85780636c708904146102e35780636e3b17db146102de578063715018a6146102d957806384ca5213146102d4578063871ef049146102cf578063886f1195146102ca5780638da5cb5b146102c55780639aa1653d146102c05780639b5d177b146102bb5780639e9923c2146102b65780639feab859146102b1578063a50857bf146102ac578063a96f783e146102a7578063c391425e146102a2578063ca0de8821461029d578063ca4f2d9714610298578063d72d8dd614610293578063d75b4c881461028e578063dd8283f314610289578063e65797ad14610284578063f2fde38b1461027f578063fabc1cbc1461027a5763fd39105a14610275575f80fd5b6122f2565b6121e0565b61214f565b6120bb565b61201c565b611dfe565b611d3e565b611cf1565b611cb7565b611c13565b611bb7565b611a97565b611a5d565b611a19565b611950565b61188d565b611865565b61183a565b61180a565b611794565b6116a4565b611566565b6114db565b611497565b61143d565b6113cb565b6113ae565b6112fa565b6112bc565b611234565b6111c8565b611114565b610df6565b610d8a565b610d4a565b610d06565b610cd9565b610cac565b610c09565b610ba0565b610b78565b610b46565b610acc565b610a9d565b610966565b61092b565b6108f0565b61084a565b61081c565b61076b565b610620565b6105be565b6104c5565b61048d565b6103bc565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460051b0101116103b857565b5f80fd5b346103b85760203660031901126103b8576004356001600160401b0381116103b8576103ec903690600401610388565b906104046103fe600480600154161490565b15612338565b5f5b82811061040f57005b806104876104206001938686612384565b3561042a816105e6565b838060a01b0381165f52609960205260405f2061046060ff8660405193610450856106a0565b80548552015416602083016123a1565b61048161047c6104708351612e1f565b6001600160c01b031690565b612eb4565b91612f96565b01610406565b346103b85760203660031901126103b8576004355f526098602052602060405f2054604051908152f35b63ffffffff8116036103b857565b346103b85760603660031901126103b8576024356105056104ff6004356104eb846104b7565b604435905f52609860205260405f20611423565b506123d3565b63ffffffff8082511692169182106105895760408161054d61057594610535602061055b96015163ffffffff1690565b9063ffffffff821615918215610579575b5050612404565b01516001600160c01b031690565b6040516001600160c01b0390911681529081906020820190565b0390f35b63ffffffff161190505f80610546565b60405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b6044820152606490fd5b5f9103126103b857565b346103b8575f3660031901126103b857609d546040516001600160a01b039091168152602090f35b6001600160a01b038116036103b857565b60043590610604826105e6565b565b60243590610604826105e6565b60443590610604826105e6565b346103b85760203660031901126103b85760043561063d816105e6565b61064561306c565b6001600160a01b03165f81815260c860205260408120805460ff191660011790557f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9080a2005b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176106bb57604052565b61068c565b606081019081106001600160401b038211176106bb57604052565b90601f801991011681019081106001600160401b038211176106bb57604052565b604051906106046040836106db565b604051906106046060836106db565b6001600160401b0381116106bb57601f01601f191660200190565b9291926107418261071a565b9161074f60405193846106db565b8294818452818301116103b8578281602093845f960137010152565b346103b85760203660031901126103b8576004356001600160401b0381116103b857366023820112156103b8576107ac903690602481600401359101610735565b335f52609960205260ff600160405f2001541660038110156108175760016107d49114612436565b335f5260996020527fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa61081260405f2054926040519182918261248e565b0390a2005b61119d565b346103b85760203660031901126103b85760043561083861306c565b60a055005b60643590610604826105e6565b346103b85760203660031901126103b85760048035610868816105e6565b5f5460405163755b36bd60e11b815292602091849190829060101c6001600160a01b03165afa9182156108eb576108ba926108b5915f916108bc575b506001600160a01b031633146124bf565b6130c4565b005b6108de915060203d6020116108e4575b6108d681836106db565b81019061249f565b5f6108a4565b503d6108cc565b6124b4565b346103b85760203660031901126103b85760043561090d816105e6565b60018060a01b03165f52609f602052602060405f2054604051908152f35b346103b85760203660031901126103b857600435610948816105e6565b60018060a01b03165f526099602052602060405f2054604051908152f35b346103b85760203660031901126103b8576004355f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb576109bf915f91610a6e575b50612536565b60015481811603610a0357806001557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806108123394829190602083019252565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610a90915060203d602011610a96575b610a8881836106db565b81019061251e565b5f6109b9565b503d610a7e565b346103b85760203660031901126103b8576004355f52609a602052602060ff60405f2054166040519015158152f35b346103b85760403660031901126103b8576060610b046104ff602435600435610af3612593565b505f52609860205260405f20611423565b6040519063ffffffff815116825263ffffffff6020820151166020830152604060018060c01b03910151166040820152f35b6004359060ff821682036103b857565b346103b85760203660031901126103b85760ff610b61610b36565b165f52609b602052602060405f2054604051908152f35b346103b8575f3660031901126103b857609e546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b857600435610bbd816105e6565b610bc561306c565b6001600160a01b03165f81815260c860205260408120805460ff191690557f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9080a2005b346103b85760203660031901126103b8576040516308f6629d60e31b815260048035908201526020816024816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa80156108eb57610575915f91610c8d575b506040516001600160a01b0390911681529081906020820190565b610ca6915060203d6020116108e4576108d681836106db565b5f610c72565b346103b85760203660031901126103b8576108ba600435610ccc816105e6565b610cd461306c565b6131bb565b346103b85760203660031901126103b8576108ba600435610cf9816105e6565b610d0161306c565b613219565b346103b8575f3660031901126103b8576040517f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b03168152602090f35b346103b85760203660031901126103b857600435610d67816105e6565b60018060a01b03165f5260c8602052602060ff60405f2054166040519015158152f35b346103b85760203660031901126103b8576040610db1600435610dac816105e6565b6125c9565b610dc78251809260208091805184520151910152565bf35b9181601f840112156103b8578235916001600160401b0383116103b857602083818601950101116103b857565b346103b85760403660031901126103b8576004356001600160401b0381116103b857610e26903690600401610388565b906024356001600160401b0381116103b857610e4783913690600401610dc9565b610e5b6103fe949294600480600154161490565b610e7a610e6a60965460ff1690565b610e75368488610735565b6133e2565b50610e8681841461262f565b7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316935f5b828110610ebc57005b610ee1610edb610ecd83868661266d565b356001600160f81b03191690565b60f81c90565b610eec828787612679565b6040516379a0849160e11b815260ff841660048201526020816024818d5afa9081156108eb57610f2c9163ffffffff915f91611047575b501682146126d2565b5f90815b8688838510610f9c575050505050509060019143610f598260ff165f52609b60205260405f2090565b557f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db460ff60405192169180610f9343829190602083019252565b0390a201610eb3565b86611038611031600195948b61103f95611022610fc3610fbe8d8f8e90612384565b612394565b9861100d611008610fec610fe78d60018060a01b03165f52609960205260405f2090565b6123ad565b99610ffa6104708c51612e1f565b60ff600192161c1660011490565b612709565b8a8060a01b03168a8060a01b038a1611612740565b61102b8261278a565b926127b8565b3691610735565b9083612f96565b920191610f30565b611068915060203d811161106e575b61106081836106db565b8101906126bd565b8c610f23565b503d611056565b6001600160401b0381116106bb5760051b60200190565b60206003198201126103b857600435906001600160401b0382116103b857806023830112156103b85781600401356110c381611075565b926110d160405194856106db565b8184526024602085019260051b8201019283116103b857602401905b8282106110fa5750505090565b602080918335611109816105e6565b8152019101906110ed565b346103b8576111223661108c565b61112a61306c565b5f5b81518110156108ba576001906001600160a01b0361114a82856127dd565b51165f5260c860205260405f2060ff19815416905561116981846127dd565b5160a083901b839003167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc5f80a20161112c565b634e487b7160e01b5f52602160045260245ffd5b6003111561081757565b9060038210156108175752565b346103b85760203660031901126103b8576004356111e5816105e6565b6111ed6125b1565b5060018060a01b03165f52609960205260405f2061121560ff600160405193610450856106a0565b60405180916105756020604084019280518552015160208401906111bb565b346103b8575f3660031901126103b8575f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb57611288915f91610a6e5750612536565b5f196001556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b346103b85760203660031901126103b8576020600160ff6112db610b36565b161b806001541614604051908152f35b359061ffff821682036103b857565b346103b85760803660031901126103b857611313610b36565b60603660231901126103b85760405161132b816106c0565b602435611337816104b7565b815260443561ffff811681036103b857602082015260643561ffff811681036103b857604082015261136761306c565b60ff6096541660ff83161015611380576108ba91613469565b60405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b6044820152606490fd5b346103b8575f3660031901126103b8576020600154604051908152f35b346103b8575f3660031901126103b8576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054821015611438575f5260205f2001905f90565b61140f565b346103b85760203660031901126103b857600435609c548110156103b857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c01546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b8576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b346103b8576114e93661108c565b6114f161306c565b5f5b81518110156108ba576001906001600160a01b0361151182856127dd565b51165f5260c860205260405f208260ff1982541617905561153281846127dd565b5160a083901b839003167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f5f80a2016114f3565b346103b85760403660031901126103b857600435611583816105e6565b6024356001600160401b0381116103b8576115a2903690600401610dc9565b609e549192916001600160a01b03163303611672576001600160a01b0382165f908152609f602090815260408083204290556099909152902080546001611612816116096116036104706115f860965460ff1690565b610e75368b8e610735565b94612e1f565b94015460ff1690565b61161b816111b1565b14918261165f575b82611646575b505061163157005b6108ba92611640913691610735565b906135c9565b81166001600160c01b0390811691161490505f80611629565b6001600160c01b03821615159250611623565b60405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b6044820152606490fd5b346103b8575f3660031901126103b8576116bc61306c565b606480546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b91908260409103126103b857604051611717816106a0565b8092803560ff811681036103b857825260209081013591611737836105e6565b0152565b9092919261174881611075565b9361175660405195866106db565b602085838152019160061b8301928184116103b857915b83831061177a5750505050565b602060409161178984866116ff565b81520192019161176d565b346103b85760a03660031901126103b8576004356117b1816105e6565b60243590604435906001600160401b0382116103b857366023830112156103b857610575926117ed6117fa93369060248160040135910161173b565b60643591608435936127f1565b6040519081529081906020820190565b346103b85760203660031901126103b8576020611828600435612e1f565b6040516001600160c01b039091168152f35b346103b8575f3660031901126103b8575f5460405160109190911c6001600160a01b03168152602090f35b346103b8575f3660031901126103b8576064546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b857602060ff60965416604051908152f35b6101009060431901126103b857604490565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460061b0101116103b857565b9190916060818403126103b85760405190611909826106c0565b819381356001600160401b0381116103b85782019181601f840112156103b85761193d604093928360208695359101610735565b8452602081013560208501520135910152565b346103b8576101a03660031901126103b8576004356001600160401b0381116103b857611981903690600401610dc9565b906024356001600160401b0381116103b8576119a1903690600401610dc9565b6119aa366118ad565b90610144356001600160401b0381116103b8576119cb9036906004016118bf565b929091610164356001600160401b0381116103b8576119ee9036906004016118ef565b9461018435976001600160401b0389116103b857611a136108ba9936906004016118ef565b976128ac565b346103b8575f3660031901126103b8576040517f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03168152602090f35b346103b8575f3660031901126103b85760206040517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68152f35b346103b8576101603660031901126103b8576004356001600160401b0381116103b857611ac8903690600401610dc9565b906024356001600160401b0381116103b857611ae8903690600401610dc9565b9092611af3366118ad565b92610144356001600160401b0381116103b857611b5c95611b4d611b1e611b559336906004016118ef565b96611b2f6103fe6001808054161490565b335f5260c8602052611b4760ff60405f205416612a07565b33613966565b943691610735565b9233613dd8565b5180511561143857602063ffffffff910151165f8052609760205263ffffffff60405f20541610611b8957005b60405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b6044820152606490fd5b346103b8575f3660031901126103b857602060a054604051908152f35b60206040818301928281528451809452019201905f5b818110611bf75750505090565b825163ffffffff16845260209384019390920191600101611bea565b346103b85760403660031901126103b857600435611c30816104b7565b602435906001600160401b0382116103b857366023830112156103b857816004013591611c5c83611075565b92611c6a60405194856106db565b8084526024602085019160051b830101913683116103b857602401905b828210611ca757610575611c9b8686612ab4565b60405191829182611bd4565b8135815260209182019101611c87565b346103b8575f3660031901126103b85760206040517f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8152f35b346103b85760203660031901126103b8576004356001600160401b0381116103b857611d38611d276108ba923690600401610dc9565b611031600280600154161415612338565b336135c9565b346103b8575f3660031901126103b8576020609c54604051908152f35b6001600160601b038116036103b857565b81601f820112156103b857803590611d8382611075565b92611d9160405194856106db565b82845260208085019360061b830101918183116103b857602001925b828410611dbb575050505090565b6040848303126103b85760206040918251611dd5816106a0565b8635611de0816105e6565b815282870135611def81611d5b565b83820152815201930192611dad565b346103b857366003190160a081126103b8576060136103b857604051611e23816106c0565b600435611e2f816104b7565b815260243561ffff811681036103b857602082015260443561ffff811681036103b857604082015260643590611e6482611d5b565b608435916001600160401b0383116103b857611e876108ba933690600401611d6c565b91611e9061306c565b6144df565b81601f820112156103b857803590611eac82611075565b92611eba60405194856106db565b828452602060608186019402830101918183116103b857602001925b828410611ee4575050505090565b6060848303126103b8576020606091604051611eff816106c0565b8635611f0a816104b7565b8152611f178388016112eb565b83820152611f27604088016112eb565b6040820152815201930192611ed6565b9080601f830112156103b8578135611f4e81611075565b92611f5c60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210611f845750505090565b602080918335611f9381611d5b565b815201910190611f77565b9080601f830112156103b8578135611fb581611075565b92611fc360405194856106db565b81845260208085019260051b820101918383116103b85760208201905b838210611fef57505050505090565b81356001600160401b0381116103b85760209161201187848094880101611d6c565b815201910190611fe0565b346103b8576101003660031901126103b8576120366105f7565b61203e610606565b90612047610613565b61204f61083d565b60843560a4356001600160401b0381116103b857612071903690600401611e95565b9160c4356001600160401b0381116103b857612091903690600401611f37565b9360e435966001600160401b0388116103b8576120b56108ba983690600401611f9e565b96612b8b565b346103b85760203660031901126103b85760ff6120d6610b36565b6120de612593565b50165f52609760205261057560405f2061ffff604051916120fe836106c0565b5463ffffffff81168352818160201c16602084015260301c16604082015260405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b346103b85760203660031901126103b85760043561216c816105e6565b61217461306c565b6001600160a01b0381161561218c576108ba906138a4565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b85760203660031901126103b8576004355f5460405163755b36bd60e11b8152906020908290600490829060101c6001600160a01b03165afa80156108eb5761223d915f916108bc57506001600160a01b031633146124bf565b6001541981198116036122875761225381600155565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c908060208101610812565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b346103b85760203660031901126103b85760043561230f816105e6565b60018060a01b03165f526099602052602060ff600160405f20015416610dc760405180926111bb565b1561233f57565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b91908110156114385760051b0190565b3561239e816105e6565b90565b60038210156108175752565b906106046040516123bd816106a0565b602060ff600183968054855201541691016123a1565b906040516123e0816106c0565b604081935463ffffffff8116835263ffffffff8160201c166020840152811c910152565b1561240b57565b606460405162461bcd60e51b815260206004820152600460248201526331371e1960e11b6044820152fd5b1561243d57565b60405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b6044820152606490fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061239e92818152019061246a565b908160209103126103b8575161239e816105e6565b6040513d5f823e3d90fd5b156124c657565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b908160209103126103b8575180151581036103b85790565b1561253d57565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b604051906125a0826106c0565b5f6040838281528260208201520152565b604051906125be826106a0565b5f6020838281520152565b61262a61239e916125d86125b1565b50604080517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6602082019081526001600160a01b03909316818301529081526126226060826106db565b519020613277565b6132c4565b1561263657565b60405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b6044820152606490fd5b90156114385790565b90821015611438570190565b91908110156114385760051b81013590601e19813603018212156103b85701908135916001600160401b0383116103b8576020018260051b360381136103b8579190565b908160209103126103b8575161239e816104b7565b156126d957565b60405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b6044820152606490fd5b1561271057565b60405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b6044820152606490fd5b1561274757565b60405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b906001820180921161279857565b612776565b9190820180921161279857565b906001116103b85790600190565b909392938483116103b85784116103b8578101920390565b8051156114385760200190565b80518210156114385760209160051b010190565b919493909260405192602084019460e08501917f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a875260018060a01b03166040860152606085015260c060808501528651809152602061010085019701905f5b81811061287e5750505061239e949561262292849260a084015260c083015203601f1981018352826106db565b8251805160ff168a526020908101516001600160a01b0316818b015260409099019890920191600101612851565b611b55819893839a956110316128f5612908999b9a9b6128d26103fe6001808054161490565b335f5260c86020526128ea60ff60405f205416612a07565b611b47888d14612a45565b96612901368c8e61173b565b8833613a9c565b9361293561293061291f610edb610ecd8589612664565b60ff165f52609760205260405f2090565b612a77565b9261294d61294387516127d0565b5163ffffffff1690565b63ffffffff61296c612963875163ffffffff1690565b63ffffffff1690565b91161161297c575b505050505050565b60206129f0611031946129f6936129eb611640986129fc9b6129a4610edb610ecd8b8f612664565b6129d06129bb896129c86129bb60408701516127d0565b516001600160601b031690565b9401516127d0565b906129e36129de8888612664565b612aa9565b923391614230565b612664565b01612394565b936127aa565b5f8080808080612974565b15612a0e57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606490fd5b15612a4c57565b606460405162461bcd60e51b815260206004820152600460248201526338a632b760e11b6044820152fd5b90604051612a84816106c0565b604061ffff82945463ffffffff81168452818160201c16602085015260301c16910152565b61239e9036906116ff565b9190805190612ac282611075565b91612ad060405193846106db565b808352612adf601f1991611075565b013660208401375f5b8151811015612b215780612b08612b01600193856127dd565b5187614386565b63ffffffff612b1783876127dd565b9116905201612ae8565b5090925050565b15612b2f57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b9694929091612bd59694925f5498612bbb60ff8b60081c16151515809b81612c4f575b8115612c2f575b50612b28565b89612bcc600160ff195f5416175f55565b612c1857612cf3565b612bdb57565b612be961ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612c2a61010061ff00195f5416175f55565b612cf3565b303b15915081612c41575b505f612bb5565b60ff1660011490505f612c3a565b600160ff8216109150612bae565b15612c6457565b60405162461bcd60e51b8152602060048201526002602482015261494560f01b6044820152606490fd5b609c54600160401b8110156106bb5760018101609c55609c5481101561143857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0180546001600160a01b0319166001600160a01b03909216919091179055565b612d2994610d019394612d24610cd4939b9a999b612d1f8d8b5190518091149081612e06575b50612c5d565b6138a4565b614669565b612d5b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316612c8e565b612d8d7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316612c8e565b612dbf7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316612c8e565b5f5b8151811015612dff5780612df9612dda600193856127dd565b51612de86129bb848a6127dd565b612df284886127dd565b51916144df565b01612dc1565b5050509050565b90508c51145f612d19565b5f1981019190821161279857565b805f52609860205260405f20549081155f14612e3b5750505f90565b5f52609860205260405f20905f19810190811161279857612e5b91611423565b505460401c90565b90612e6d8261071a565b612e7a60405191826106db565b8281528092612e8b601f199161071a565b0190602036910137565b5f1981146127985760010190565b908151811015611438570160200190565b5f81805b612f2e5750612eca9061ffff16612e63565b5f5f5b8251821080612f23575b15612f1c576001811b8416612ef5575b612ef090612e95565b612ecd565b906001612ef09160ff60f81b8460f81b165f1a612f128287612ea3565b5301919050612ee7565b5050905090565b506101008110612ed7565b5f1981018181116127985761ffff9116911661ffff8114612798576001019080612eb8565b908160209103126103b857516001600160c01b03811681036103b85790565b61239e939260609260018060a01b031682526020820152816040820152019061246a565b919060016020820151612fa8816111b1565b612fb1816111b1565b0361306757516040516333567f7f60e11b81529160209183918291612fdb91908760048501612f72565b03815f7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19081156108eb575f91613038575b506001600160c01b0316908161302c575050565b61164061060492612eb4565b61305a915060203d602011613060575b61305281836106db565b810190612f53565b5f613018565b503d613048565b505050565b6064546001600160a01b0316330361308057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381161561313e575f54604080516001600160a01b0360109390931c8316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a15f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b609d54604080516001600160a01b038084168252841660208201529192917f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c9190a16001600160a01b03166001600160a01b03199190911617609d55565b609e54604080516001600160a01b038084168252841660208201529192917f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc99190a16001600160a01b03166001600160a01b03199190911617609e55565b61327f614750565b9060405190602082019261190160f01b845260228301526042820152604281526132aa6062826106db565b51902090565b634e487b7160e01b5f52601260045260245ffd5b5f5160206150af5f395f51905f52906132db6125b1565b505f919006602060c0835b6133db575f935f5160206150af5f395f51905f526003818681818009090860405161331185826106db565b8436823784818560405161332582826106db565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206150af5f395f51905f5260a082015260056107cf195a01fa80156133e05761338f90614dab565b51916133db575f5160206150af5f395f51905f52828009146133c657505f5160206150af5f395f51905f5260015f940892936132e6565b929350506133d26106fc565b92835282015290565b6132b0565bfe5b9060016133f060ff936148e8565b928392161b11156133fe5790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b61352760ff7f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac921692835f52609760205260405f206134bf63ffffffff835116829063ffffffff1663ffffffff19825416179055565b6020820151815465ffff0000000067ffff000000000000604086015160301b169260201b169067ffffffff0000000019161717905560405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b0390a2565b1561353357565b606460405162461bcd60e51b8152602060048201526004602482015263071456d760e41b6044820152fd5b1561356557565b606460405162461bcd60e51b815260206004820152600460248201526310a9bab160e11b6044820152fd5b6001600160a01b03909116815260406020820181905261239e9291019061246a565b60409061239e93928152816020820152019061246a565b6001600160a01b0381165f9081526099602052604090209060018254920161360660016135f7835460ff1690565b613600816111b1565b14612436565b61366661362161047061361b60965460ff1690565b876133e2565b61362a85612e1f565b6001600160c01b039091169061364182151561352c565b6136578282166001600160c01b0316831461355e565b9019166001600160c01b031690565b6136708185614a4b565b6001600160c01b0316156137e9575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b857835f916136d5938360405180968195829463f4e24fe560e01b845260048401613590565b03925af180156108eb576137d5575b507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316803b156103b8575f604051809263bd29b8cd60e01b82528183816137378989600484016135b2565b03925af180156108eb576137c1575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031691823b156103b85761379c925f928360405180968195829463bd29b8cd60e01b8452600484016135b2565b03925af180156108eb576137ad5750565b806137bb5f610604936106db565b806105b4565b806137bb5f6137cf936106db565b5f613746565b806137bb5f6137e3936106db565b5f6136e4565b805460ff191660021790557f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b8576040516351b27a6d60e11b81526001600160a01b0383166004820152905f908290602490829084905af180156108eb57613890575b50816001600160a01b0382167f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e45f80a35f61367f565b806137bb5f61389e936106db565b5f61385a565b606480546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908160209103126103b8575190565b61012090604060c0610604959796949761016084019860018060a01b03168452613932602085018260208091803584520135910152565b80830180356060860152602001356080850152826080820160a08601370160e0830137019060208091805184520151910152565b6040516309aa152760e11b81526001600160a01b0382811660048301529091907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4916602083602481845afa9283156108eb575f93613a47575b5082156139cd575050905090565b602092506139fd935f6139df846125c9565b6040516317ef39cb60e31b81529687958694859391600485016138fb565b03925af19081156108eb575f91613a18575b50805f80612f1c565b613a3a915060203d602011613a40575b613a3281836106db565b8101906138ec565b5f613a0f565b503d613a28565b613a6191935060203d602011613a4057613a3281836106db565b915f6139bf565b15613a6f57565b60405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b6044820152606490fd5b91929092602082019283515f52609a60205260ff60405f205416613b155761060494613b0d926040850191613ad48351421115613a68565b613af7613aea88515f52609a60205260405f2090565b805460ff19166001179055565b609d546001600160a01b031696519251936127f1565b905191614c95565b60405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b6044820152606490fd5b60405190613b50826106c0565b60606040838281528260208201520152565b15613b6957565b606460405162461bcd60e51b815260206004820152600460248201526308509a5d60e21b6044820152fd5b15613b9b57565b60405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b6044820152606490fd5b6001602091835181550191015160038110156108175760ff80198354169116179055565b9060018060a01b031681526040602082015260806040613c17845160608386015260a085019061246a565b9360208101516060850152015191015290565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03909116815260406020820181905261239e93910191613c2a565b9080601f830112156103b8578151613c8381611075565b92613c9160405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613cb95750505090565b602080918351613cc881611d5b565b815201910190613cac565b9190916040818403126103b85780516001600160401b0381116103b85783613cfc918301613c6c565b9260208201516001600160401b0381116103b85761239e9201613c6c565b61239e949260609260018060a01b0316825260208201528160408201520191613c2a565b6020818303126103b8578051906001600160401b0382116103b857019080601f830112156103b8578151613d7181611075565b92613d7f60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613da75750505090565b602080918351613db6816104b7565b815201910190613d9a565b60409061239e949281528160208201520191613c2a565b91929394817fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa613ea9613e09613b43565b98613e9d613e2c6104708b610e758c613e2460965460ff1690565b923691610735565b613e3586612e1f565b6001600160c01b0390911690613e4c82151561352c565b60018060c01b0316613e66613e618284161590565b613b62565b6001600160a01b038a165f908152609f60205260409020613e9690613e8f905460a0549061279d565b4211613b94565b1785614a4b565b6040519182918261248e565b0390a26001613ed481613ecc8660018060a01b03165f52609960205260405f2090565b015460ff1690565b613edd816111b1565b03614072575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b8575f6040518092631fd93ca960e11b8252818381613f378b8b8b60048501613c4a565b03925af180156108eb5784935f92849261405e575b50613f6c876040519788948594632550477760e01b865260048601613d1a565b0381837f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19283156108eb575f938491859161403a575b5060408701526020860152613fd5604051948593849362bff04d60e01b855260048501613dc1565b0381837f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03165af19081156108eb575f91614018575b50815290565b61403491503d805f833e61402c81836106db565b810190613d3e565b5f614012565b905061405891503d8086833e61405081836106db565b810190613cd3565b5f613fad565b806137bb8561406c936106db565b5f613f4c565b6140a361407d6106fc565b838152600160208201526001600160a01b0385165f908152609960205260409020613bc8565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b857604051639926ee7d60e01b8152915f9183918290849082906140fa908a60048401613bec565b03925af180156108eb5761413f575b50806001600160a01b0383167fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe5f80a35f613ee3565b806137bb5f61414d936106db565b5f614109565b1561415a57565b60405162461bcd60e51b815260206004820152600360248201526206368360ec1b6044820152606490fd5b1561418c57565b60405162461bcd60e51b815260206004820152600360248201526263683160e81b6044820152606490fd5b908160209103126103b8575161239e81611d5b565b156141d357565b60405162461bcd60e51b815260206004820152600360248201526231b41960e91b6044820152606490fd5b1561420557565b60405162461bcd60e51b815260206004820152600360248201526263683360e81b6044820152606490fd5b6020919261428d6142806142b89896976142796142558783015160018060a01b031690565b6001600160a01b039081165f81815260996020526040902054969091161415614153565b5160ff1690565b60ff808516911614614185565b604051635401ed2760e01b8152600481019190915260ff909116602482015294859081906044820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa9283156108eb57610604945f9461433c575b50826143349261432f61431b936001600160601b0361432761431b82998b614d6a565b6001600160601b031690565b9116116141cc565b614d8d565b9116106141fe565b61431b919450926143349261432f6143736001600160601b039660203d60201161437f575b61436b81836106db565b8101906141b7565b969350509250926142f8565b503d614361565b815f52609860205260405f2054905f5b8281106143ca5760405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b6044820152606490fd5b808303838111612798576129636143e091612e11565b6144096143fe826143f9885f52609860205260405f2090565b611423565b505463ffffffff1690565b63ffffffff808516911611156144225750600101614396565b935050505090565b1561443157565b606460405162461bcd60e51b81526020600482015260046024820152630e29ac2f60e31b6044820152fd5b60ff60019116019060ff821161279857565b6080906001600160601b036020939460ff60608401961683521683820152606060408201528451809452019201905f5b8181106144ab5750505090565b825180516001600160a01b031685526020908101516001600160601b0316818601526040909401939092019160010161449e565b91906145226144f060965460ff1690565b9361450060c060ff87161061442a565b61451c61450c8661445c565b60ff1660ff196096541617609655565b84613469565b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031691823b156103b857614578925f928360405180968195829463ff694a7760e01b84528a6004850161446e565b03925af180156108eb57614655575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff83166004820152905f908290602490829084905af180156108eb57614641575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff90921660048301525f9082908183816024810161379c565b806137bb5f61464f936106db565b5f6145e8565b806137bb5f614663936106db565b5f614587565b5f5460101c6001600160a01b0316158061473e575b156146c3578161469061060493600155565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a26130c4565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b038116151561467e565b307f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5706001600160a01b0316148061483d575b156147ab577fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d1160408201527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608201524660808201523060a082015260a081526132aa60c0826106db565b507f0000000000000000000000000000000000000000000000000000000000007a694614614782565b1561486d57565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614966578151156149615761492461491a610edb61490c856127d0565b516001600160f81b03191690565b60ff600191161b90565b6001905b835182101561495c5760019061494761491a610edb61490c8689612ea3565b90614953818311614866565b17910190614928565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b8054600160401b8110156106bb576149fa91600182018155611423565b614a3857815160208084015160409485015163ffffffff909316911b67ffffffff00000000161767ffffffffffffffff199190931b16919091179055565b634e487b7160e01b5f525f60045260245ffd5b90614a5e825f52609860205260405f2090565b5480614aab5750614a7a610604925f52609860205260405f2090565b614aa6614a8561070b565b4363ffffffff168152925b5f60208501526001600160c01b03166040840152565b6149dd565b91614ad663ffffffff93614ad0614aca845f52609860205260405f2090565b91612e11565b90611423565b5090614ae6825463ffffffff1690565b43851694168403614b1157506106049250906001600160401b0382549181199060401b169116179055565b815467ffffffff000000001916602085901b67ffffffff000000001617909155610604929190614aa690614b4d905f52609860205260405f2090565b91614a90614b5961070b565b63ffffffff9095168552565b15614b6c57565b60405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a490fd5b908160209103126103b857516001600160e01b0319811681036103b85790565b15614c0e57565b60405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a490fd5b90813b15614d275791602091614cc193604051809581948293630b135d3f60e11b8452600484016135b2565b03916001600160a01b03165afa80156108eb57610604915f91614cf8575b506001600160e01b031916630b135d3f60e11b14614c07565b614d1a915060203d602011614d20575b614d1281836106db565b810190614be7565b5f614cdf565b503d614d08565b61060492614d3491614df7565b6001600160a01b03908116911614614b65565b906001600160601b03809116911602906001600160601b03821691820361279857565b614d886001600160601b039161ffff60206127109501511690614d47565b160490565b614d886001600160601b039161ffff60406127109501511690614d47565b15614db257565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b61239e91614e0491614e0c565b919091614e84565b815160418103614e38575090614e3491602082015190606060408401519301515f1a90615005565b9091565b604003614e715760406020830151920151918260ff1c91601b830180931161279857614e34936001600160ff1b03169260ff1690615005565b50505f90600290565b6005111561081757565b614e8d81614e7a565b80614e955750565b614e9e81614e7a565b60018103614eeb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b614ef481614e7a565b60028103614f415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b614f4a81614e7a565b60038103614fa25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b80614fae600492614e7a565b14614fb557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116150a35760ff16601b81141580615098575b61508d576020935f93604051938493608085019385528785015260408401526060830152838052039060015afa156108eb575f516001600160a01b0381161561508557905f90565b505f90600190565b505050505f90600490565b50601c81141561503d565b505050505f9060039056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122008e52422e3bba4dbde50639da22bb14dc5549ff1da95556698281d1600612a1464736f6c634300081b0033","gas_used":4177787,"gas_limit":5547746,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c8062cf2ab51461038357806303fd34921461037e57806304ec635114610379578063054310e6146103745780630a3b0a4f1461036f5780630cf4b7671461036a5780630d3f21341461036557806310d67a2f14610360578063125e05841461035b57806313542a4e14610356578063136439dd146103515780631478851f1461034c5780631eb812da14610347578063249a0c421461034257806328f61b311461033d57806329092d0e14610338578063296bb0641461033357806329d1e0c31461032e5780632cdd1e86146103295780633998fdd3146103245780633af32abf1461031f5780633c2a7f4c1461031a5780635140a5481461031557806353abfad4146103105780635865c60c1461030b578063595c6a67146103065780635ac86ab7146103015780635b0b829f146102fc5780635c975abb146102f75780635df45946146102f25780636347c900146102ed57806368304835146102e85780636c708904146102e35780636e3b17db146102de578063715018a6146102d957806384ca5213146102d4578063871ef049146102cf578063886f1195146102ca5780638da5cb5b146102c55780639aa1653d146102c05780639b5d177b146102bb5780639e9923c2146102b65780639feab859146102b1578063a50857bf146102ac578063a96f783e146102a7578063c391425e146102a2578063ca0de8821461029d578063ca4f2d9714610298578063d72d8dd614610293578063d75b4c881461028e578063dd8283f314610289578063e65797ad14610284578063f2fde38b1461027f578063fabc1cbc1461027a5763fd39105a14610275575f80fd5b6122f2565b6121e0565b61214f565b6120bb565b61201c565b611dfe565b611d3e565b611cf1565b611cb7565b611c13565b611bb7565b611a97565b611a5d565b611a19565b611950565b61188d565b611865565b61183a565b61180a565b611794565b6116a4565b611566565b6114db565b611497565b61143d565b6113cb565b6113ae565b6112fa565b6112bc565b611234565b6111c8565b611114565b610df6565b610d8a565b610d4a565b610d06565b610cd9565b610cac565b610c09565b610ba0565b610b78565b610b46565b610acc565b610a9d565b610966565b61092b565b6108f0565b61084a565b61081c565b61076b565b610620565b6105be565b6104c5565b61048d565b6103bc565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460051b0101116103b857565b5f80fd5b346103b85760203660031901126103b8576004356001600160401b0381116103b8576103ec903690600401610388565b906104046103fe600480600154161490565b15612338565b5f5b82811061040f57005b806104876104206001938686612384565b3561042a816105e6565b838060a01b0381165f52609960205260405f2061046060ff8660405193610450856106a0565b80548552015416602083016123a1565b61048161047c6104708351612e1f565b6001600160c01b031690565b612eb4565b91612f96565b01610406565b346103b85760203660031901126103b8576004355f526098602052602060405f2054604051908152f35b63ffffffff8116036103b857565b346103b85760603660031901126103b8576024356105056104ff6004356104eb846104b7565b604435905f52609860205260405f20611423565b506123d3565b63ffffffff8082511692169182106105895760408161054d61057594610535602061055b96015163ffffffff1690565b9063ffffffff821615918215610579575b5050612404565b01516001600160c01b031690565b6040516001600160c01b0390911681529081906020820190565b0390f35b63ffffffff161190505f80610546565b60405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b6044820152606490fd5b5f9103126103b857565b346103b8575f3660031901126103b857609d546040516001600160a01b039091168152602090f35b6001600160a01b038116036103b857565b60043590610604826105e6565b565b60243590610604826105e6565b60443590610604826105e6565b346103b85760203660031901126103b85760043561063d816105e6565b61064561306c565b6001600160a01b03165f81815260c860205260408120805460ff191660011790557f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9080a2005b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176106bb57604052565b61068c565b606081019081106001600160401b038211176106bb57604052565b90601f801991011681019081106001600160401b038211176106bb57604052565b604051906106046040836106db565b604051906106046060836106db565b6001600160401b0381116106bb57601f01601f191660200190565b9291926107418261071a565b9161074f60405193846106db565b8294818452818301116103b8578281602093845f960137010152565b346103b85760203660031901126103b8576004356001600160401b0381116103b857366023820112156103b8576107ac903690602481600401359101610735565b335f52609960205260ff600160405f2001541660038110156108175760016107d49114612436565b335f5260996020527fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa61081260405f2054926040519182918261248e565b0390a2005b61119d565b346103b85760203660031901126103b85760043561083861306c565b60a055005b60643590610604826105e6565b346103b85760203660031901126103b85760048035610868816105e6565b5f5460405163755b36bd60e11b815292602091849190829060101c6001600160a01b03165afa9182156108eb576108ba926108b5915f916108bc575b506001600160a01b031633146124bf565b6130c4565b005b6108de915060203d6020116108e4575b6108d681836106db565b81019061249f565b5f6108a4565b503d6108cc565b6124b4565b346103b85760203660031901126103b85760043561090d816105e6565b60018060a01b03165f52609f602052602060405f2054604051908152f35b346103b85760203660031901126103b857600435610948816105e6565b60018060a01b03165f526099602052602060405f2054604051908152f35b346103b85760203660031901126103b8576004355f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb576109bf915f91610a6e575b50612536565b60015481811603610a0357806001557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806108123394829190602083019252565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610a90915060203d602011610a96575b610a8881836106db565b81019061251e565b5f6109b9565b503d610a7e565b346103b85760203660031901126103b8576004355f52609a602052602060ff60405f2054166040519015158152f35b346103b85760403660031901126103b8576060610b046104ff602435600435610af3612593565b505f52609860205260405f20611423565b6040519063ffffffff815116825263ffffffff6020820151166020830152604060018060c01b03910151166040820152f35b6004359060ff821682036103b857565b346103b85760203660031901126103b85760ff610b61610b36565b165f52609b602052602060405f2054604051908152f35b346103b8575f3660031901126103b857609e546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b857600435610bbd816105e6565b610bc561306c565b6001600160a01b03165f81815260c860205260408120805460ff191690557f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9080a2005b346103b85760203660031901126103b8576040516308f6629d60e31b815260048035908201526020816024816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa80156108eb57610575915f91610c8d575b506040516001600160a01b0390911681529081906020820190565b610ca6915060203d6020116108e4576108d681836106db565b5f610c72565b346103b85760203660031901126103b8576108ba600435610ccc816105e6565b610cd461306c565b6131bb565b346103b85760203660031901126103b8576108ba600435610cf9816105e6565b610d0161306c565b613219565b346103b8575f3660031901126103b8576040517f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b03168152602090f35b346103b85760203660031901126103b857600435610d67816105e6565b60018060a01b03165f5260c8602052602060ff60405f2054166040519015158152f35b346103b85760203660031901126103b8576040610db1600435610dac816105e6565b6125c9565b610dc78251809260208091805184520151910152565bf35b9181601f840112156103b8578235916001600160401b0383116103b857602083818601950101116103b857565b346103b85760403660031901126103b8576004356001600160401b0381116103b857610e26903690600401610388565b906024356001600160401b0381116103b857610e4783913690600401610dc9565b610e5b6103fe949294600480600154161490565b610e7a610e6a60965460ff1690565b610e75368488610735565b6133e2565b50610e8681841461262f565b7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316935f5b828110610ebc57005b610ee1610edb610ecd83868661266d565b356001600160f81b03191690565b60f81c90565b610eec828787612679565b6040516379a0849160e11b815260ff841660048201526020816024818d5afa9081156108eb57610f2c9163ffffffff915f91611047575b501682146126d2565b5f90815b8688838510610f9c575050505050509060019143610f598260ff165f52609b60205260405f2090565b557f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db460ff60405192169180610f9343829190602083019252565b0390a201610eb3565b86611038611031600195948b61103f95611022610fc3610fbe8d8f8e90612384565b612394565b9861100d611008610fec610fe78d60018060a01b03165f52609960205260405f2090565b6123ad565b99610ffa6104708c51612e1f565b60ff600192161c1660011490565b612709565b8a8060a01b03168a8060a01b038a1611612740565b61102b8261278a565b926127b8565b3691610735565b9083612f96565b920191610f30565b611068915060203d811161106e575b61106081836106db565b8101906126bd565b8c610f23565b503d611056565b6001600160401b0381116106bb5760051b60200190565b60206003198201126103b857600435906001600160401b0382116103b857806023830112156103b85781600401356110c381611075565b926110d160405194856106db565b8184526024602085019260051b8201019283116103b857602401905b8282106110fa5750505090565b602080918335611109816105e6565b8152019101906110ed565b346103b8576111223661108c565b61112a61306c565b5f5b81518110156108ba576001906001600160a01b0361114a82856127dd565b51165f5260c860205260405f2060ff19815416905561116981846127dd565b5160a083901b839003167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc5f80a20161112c565b634e487b7160e01b5f52602160045260245ffd5b6003111561081757565b9060038210156108175752565b346103b85760203660031901126103b8576004356111e5816105e6565b6111ed6125b1565b5060018060a01b03165f52609960205260405f2061121560ff600160405193610450856106a0565b60405180916105756020604084019280518552015160208401906111bb565b346103b8575f3660031901126103b8575f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb57611288915f91610a6e5750612536565b5f196001556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b346103b85760203660031901126103b8576020600160ff6112db610b36565b161b806001541614604051908152f35b359061ffff821682036103b857565b346103b85760803660031901126103b857611313610b36565b60603660231901126103b85760405161132b816106c0565b602435611337816104b7565b815260443561ffff811681036103b857602082015260643561ffff811681036103b857604082015261136761306c565b60ff6096541660ff83161015611380576108ba91613469565b60405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b6044820152606490fd5b346103b8575f3660031901126103b8576020600154604051908152f35b346103b8575f3660031901126103b8576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054821015611438575f5260205f2001905f90565b61140f565b346103b85760203660031901126103b857600435609c548110156103b857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c01546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b8576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b346103b8576114e93661108c565b6114f161306c565b5f5b81518110156108ba576001906001600160a01b0361151182856127dd565b51165f5260c860205260405f208260ff1982541617905561153281846127dd565b5160a083901b839003167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f5f80a2016114f3565b346103b85760403660031901126103b857600435611583816105e6565b6024356001600160401b0381116103b8576115a2903690600401610dc9565b609e549192916001600160a01b03163303611672576001600160a01b0382165f908152609f602090815260408083204290556099909152902080546001611612816116096116036104706115f860965460ff1690565b610e75368b8e610735565b94612e1f565b94015460ff1690565b61161b816111b1565b14918261165f575b82611646575b505061163157005b6108ba92611640913691610735565b906135c9565b81166001600160c01b0390811691161490505f80611629565b6001600160c01b03821615159250611623565b60405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b6044820152606490fd5b346103b8575f3660031901126103b8576116bc61306c565b606480546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b91908260409103126103b857604051611717816106a0565b8092803560ff811681036103b857825260209081013591611737836105e6565b0152565b9092919261174881611075565b9361175660405195866106db565b602085838152019160061b8301928184116103b857915b83831061177a5750505050565b602060409161178984866116ff565b81520192019161176d565b346103b85760a03660031901126103b8576004356117b1816105e6565b60243590604435906001600160401b0382116103b857366023830112156103b857610575926117ed6117fa93369060248160040135910161173b565b60643591608435936127f1565b6040519081529081906020820190565b346103b85760203660031901126103b8576020611828600435612e1f565b6040516001600160c01b039091168152f35b346103b8575f3660031901126103b8575f5460405160109190911c6001600160a01b03168152602090f35b346103b8575f3660031901126103b8576064546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b857602060ff60965416604051908152f35b6101009060431901126103b857604490565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460061b0101116103b857565b9190916060818403126103b85760405190611909826106c0565b819381356001600160401b0381116103b85782019181601f840112156103b85761193d604093928360208695359101610735565b8452602081013560208501520135910152565b346103b8576101a03660031901126103b8576004356001600160401b0381116103b857611981903690600401610dc9565b906024356001600160401b0381116103b8576119a1903690600401610dc9565b6119aa366118ad565b90610144356001600160401b0381116103b8576119cb9036906004016118bf565b929091610164356001600160401b0381116103b8576119ee9036906004016118ef565b9461018435976001600160401b0389116103b857611a136108ba9936906004016118ef565b976128ac565b346103b8575f3660031901126103b8576040517f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03168152602090f35b346103b8575f3660031901126103b85760206040517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68152f35b346103b8576101603660031901126103b8576004356001600160401b0381116103b857611ac8903690600401610dc9565b906024356001600160401b0381116103b857611ae8903690600401610dc9565b9092611af3366118ad565b92610144356001600160401b0381116103b857611b5c95611b4d611b1e611b559336906004016118ef565b96611b2f6103fe6001808054161490565b335f5260c8602052611b4760ff60405f205416612a07565b33613966565b943691610735565b9233613dd8565b5180511561143857602063ffffffff910151165f8052609760205263ffffffff60405f20541610611b8957005b60405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b6044820152606490fd5b346103b8575f3660031901126103b857602060a054604051908152f35b60206040818301928281528451809452019201905f5b818110611bf75750505090565b825163ffffffff16845260209384019390920191600101611bea565b346103b85760403660031901126103b857600435611c30816104b7565b602435906001600160401b0382116103b857366023830112156103b857816004013591611c5c83611075565b92611c6a60405194856106db565b8084526024602085019160051b830101913683116103b857602401905b828210611ca757610575611c9b8686612ab4565b60405191829182611bd4565b8135815260209182019101611c87565b346103b8575f3660031901126103b85760206040517f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8152f35b346103b85760203660031901126103b8576004356001600160401b0381116103b857611d38611d276108ba923690600401610dc9565b611031600280600154161415612338565b336135c9565b346103b8575f3660031901126103b8576020609c54604051908152f35b6001600160601b038116036103b857565b81601f820112156103b857803590611d8382611075565b92611d9160405194856106db565b82845260208085019360061b830101918183116103b857602001925b828410611dbb575050505090565b6040848303126103b85760206040918251611dd5816106a0565b8635611de0816105e6565b815282870135611def81611d5b565b83820152815201930192611dad565b346103b857366003190160a081126103b8576060136103b857604051611e23816106c0565b600435611e2f816104b7565b815260243561ffff811681036103b857602082015260443561ffff811681036103b857604082015260643590611e6482611d5b565b608435916001600160401b0383116103b857611e876108ba933690600401611d6c565b91611e9061306c565b6144df565b81601f820112156103b857803590611eac82611075565b92611eba60405194856106db565b828452602060608186019402830101918183116103b857602001925b828410611ee4575050505090565b6060848303126103b8576020606091604051611eff816106c0565b8635611f0a816104b7565b8152611f178388016112eb565b83820152611f27604088016112eb565b6040820152815201930192611ed6565b9080601f830112156103b8578135611f4e81611075565b92611f5c60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210611f845750505090565b602080918335611f9381611d5b565b815201910190611f77565b9080601f830112156103b8578135611fb581611075565b92611fc360405194856106db565b81845260208085019260051b820101918383116103b85760208201905b838210611fef57505050505090565b81356001600160401b0381116103b85760209161201187848094880101611d6c565b815201910190611fe0565b346103b8576101003660031901126103b8576120366105f7565b61203e610606565b90612047610613565b61204f61083d565b60843560a4356001600160401b0381116103b857612071903690600401611e95565b9160c4356001600160401b0381116103b857612091903690600401611f37565b9360e435966001600160401b0388116103b8576120b56108ba983690600401611f9e565b96612b8b565b346103b85760203660031901126103b85760ff6120d6610b36565b6120de612593565b50165f52609760205261057560405f2061ffff604051916120fe836106c0565b5463ffffffff81168352818160201c16602084015260301c16604082015260405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b346103b85760203660031901126103b85760043561216c816105e6565b61217461306c565b6001600160a01b0381161561218c576108ba906138a4565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b85760203660031901126103b8576004355f5460405163755b36bd60e11b8152906020908290600490829060101c6001600160a01b03165afa80156108eb5761223d915f916108bc57506001600160a01b031633146124bf565b6001541981198116036122875761225381600155565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c908060208101610812565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b346103b85760203660031901126103b85760043561230f816105e6565b60018060a01b03165f526099602052602060ff600160405f20015416610dc760405180926111bb565b1561233f57565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b91908110156114385760051b0190565b3561239e816105e6565b90565b60038210156108175752565b906106046040516123bd816106a0565b602060ff600183968054855201541691016123a1565b906040516123e0816106c0565b604081935463ffffffff8116835263ffffffff8160201c166020840152811c910152565b1561240b57565b606460405162461bcd60e51b815260206004820152600460248201526331371e1960e11b6044820152fd5b1561243d57565b60405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b6044820152606490fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061239e92818152019061246a565b908160209103126103b8575161239e816105e6565b6040513d5f823e3d90fd5b156124c657565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b908160209103126103b8575180151581036103b85790565b1561253d57565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b604051906125a0826106c0565b5f6040838281528260208201520152565b604051906125be826106a0565b5f6020838281520152565b61262a61239e916125d86125b1565b50604080517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6602082019081526001600160a01b03909316818301529081526126226060826106db565b519020613277565b6132c4565b1561263657565b60405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b6044820152606490fd5b90156114385790565b90821015611438570190565b91908110156114385760051b81013590601e19813603018212156103b85701908135916001600160401b0383116103b8576020018260051b360381136103b8579190565b908160209103126103b8575161239e816104b7565b156126d957565b60405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b6044820152606490fd5b1561271057565b60405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b6044820152606490fd5b1561274757565b60405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b906001820180921161279857565b612776565b9190820180921161279857565b906001116103b85790600190565b909392938483116103b85784116103b8578101920390565b8051156114385760200190565b80518210156114385760209160051b010190565b919493909260405192602084019460e08501917f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a875260018060a01b03166040860152606085015260c060808501528651809152602061010085019701905f5b81811061287e5750505061239e949561262292849260a084015260c083015203601f1981018352826106db565b8251805160ff168a526020908101516001600160a01b0316818b015260409099019890920191600101612851565b611b55819893839a956110316128f5612908999b9a9b6128d26103fe6001808054161490565b335f5260c86020526128ea60ff60405f205416612a07565b611b47888d14612a45565b96612901368c8e61173b565b8833613a9c565b9361293561293061291f610edb610ecd8589612664565b60ff165f52609760205260405f2090565b612a77565b9261294d61294387516127d0565b5163ffffffff1690565b63ffffffff61296c612963875163ffffffff1690565b63ffffffff1690565b91161161297c575b505050505050565b60206129f0611031946129f6936129eb611640986129fc9b6129a4610edb610ecd8b8f612664565b6129d06129bb896129c86129bb60408701516127d0565b516001600160601b031690565b9401516127d0565b906129e36129de8888612664565b612aa9565b923391614230565b612664565b01612394565b936127aa565b5f8080808080612974565b15612a0e57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606490fd5b15612a4c57565b606460405162461bcd60e51b815260206004820152600460248201526338a632b760e11b6044820152fd5b90604051612a84816106c0565b604061ffff82945463ffffffff81168452818160201c16602085015260301c16910152565b61239e9036906116ff565b9190805190612ac282611075565b91612ad060405193846106db565b808352612adf601f1991611075565b013660208401375f5b8151811015612b215780612b08612b01600193856127dd565b5187614386565b63ffffffff612b1783876127dd565b9116905201612ae8565b5090925050565b15612b2f57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b9694929091612bd59694925f5498612bbb60ff8b60081c16151515809b81612c4f575b8115612c2f575b50612b28565b89612bcc600160ff195f5416175f55565b612c1857612cf3565b612bdb57565b612be961ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612c2a61010061ff00195f5416175f55565b612cf3565b303b15915081612c41575b505f612bb5565b60ff1660011490505f612c3a565b600160ff8216109150612bae565b15612c6457565b60405162461bcd60e51b8152602060048201526002602482015261494560f01b6044820152606490fd5b609c54600160401b8110156106bb5760018101609c55609c5481101561143857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0180546001600160a01b0319166001600160a01b03909216919091179055565b612d2994610d019394612d24610cd4939b9a999b612d1f8d8b5190518091149081612e06575b50612c5d565b6138a4565b614669565b612d5b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316612c8e565b612d8d7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316612c8e565b612dbf7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316612c8e565b5f5b8151811015612dff5780612df9612dda600193856127dd565b51612de86129bb848a6127dd565b612df284886127dd565b51916144df565b01612dc1565b5050509050565b90508c51145f612d19565b5f1981019190821161279857565b805f52609860205260405f20549081155f14612e3b5750505f90565b5f52609860205260405f20905f19810190811161279857612e5b91611423565b505460401c90565b90612e6d8261071a565b612e7a60405191826106db565b8281528092612e8b601f199161071a565b0190602036910137565b5f1981146127985760010190565b908151811015611438570160200190565b5f81805b612f2e5750612eca9061ffff16612e63565b5f5f5b8251821080612f23575b15612f1c576001811b8416612ef5575b612ef090612e95565b612ecd565b906001612ef09160ff60f81b8460f81b165f1a612f128287612ea3565b5301919050612ee7565b5050905090565b506101008110612ed7565b5f1981018181116127985761ffff9116911661ffff8114612798576001019080612eb8565b908160209103126103b857516001600160c01b03811681036103b85790565b61239e939260609260018060a01b031682526020820152816040820152019061246a565b919060016020820151612fa8816111b1565b612fb1816111b1565b0361306757516040516333567f7f60e11b81529160209183918291612fdb91908760048501612f72565b03815f7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19081156108eb575f91613038575b506001600160c01b0316908161302c575050565b61164061060492612eb4565b61305a915060203d602011613060575b61305281836106db565b810190612f53565b5f613018565b503d613048565b505050565b6064546001600160a01b0316330361308057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381161561313e575f54604080516001600160a01b0360109390931c8316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a15f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b609d54604080516001600160a01b038084168252841660208201529192917f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c9190a16001600160a01b03166001600160a01b03199190911617609d55565b609e54604080516001600160a01b038084168252841660208201529192917f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc99190a16001600160a01b03166001600160a01b03199190911617609e55565b61327f614750565b9060405190602082019261190160f01b845260228301526042820152604281526132aa6062826106db565b51902090565b634e487b7160e01b5f52601260045260245ffd5b5f5160206150af5f395f51905f52906132db6125b1565b505f919006602060c0835b6133db575f935f5160206150af5f395f51905f526003818681818009090860405161331185826106db565b8436823784818560405161332582826106db565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206150af5f395f51905f5260a082015260056107cf195a01fa80156133e05761338f90614dab565b51916133db575f5160206150af5f395f51905f52828009146133c657505f5160206150af5f395f51905f5260015f940892936132e6565b929350506133d26106fc565b92835282015290565b6132b0565bfe5b9060016133f060ff936148e8565b928392161b11156133fe5790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b61352760ff7f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac921692835f52609760205260405f206134bf63ffffffff835116829063ffffffff1663ffffffff19825416179055565b6020820151815465ffff0000000067ffff000000000000604086015160301b169260201b169067ffffffff0000000019161717905560405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b0390a2565b1561353357565b606460405162461bcd60e51b8152602060048201526004602482015263071456d760e41b6044820152fd5b1561356557565b606460405162461bcd60e51b815260206004820152600460248201526310a9bab160e11b6044820152fd5b6001600160a01b03909116815260406020820181905261239e9291019061246a565b60409061239e93928152816020820152019061246a565b6001600160a01b0381165f9081526099602052604090209060018254920161360660016135f7835460ff1690565b613600816111b1565b14612436565b61366661362161047061361b60965460ff1690565b876133e2565b61362a85612e1f565b6001600160c01b039091169061364182151561352c565b6136578282166001600160c01b0316831461355e565b9019166001600160c01b031690565b6136708185614a4b565b6001600160c01b0316156137e9575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b857835f916136d5938360405180968195829463f4e24fe560e01b845260048401613590565b03925af180156108eb576137d5575b507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316803b156103b8575f604051809263bd29b8cd60e01b82528183816137378989600484016135b2565b03925af180156108eb576137c1575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031691823b156103b85761379c925f928360405180968195829463bd29b8cd60e01b8452600484016135b2565b03925af180156108eb576137ad5750565b806137bb5f610604936106db565b806105b4565b806137bb5f6137cf936106db565b5f613746565b806137bb5f6137e3936106db565b5f6136e4565b805460ff191660021790557f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b8576040516351b27a6d60e11b81526001600160a01b0383166004820152905f908290602490829084905af180156108eb57613890575b50816001600160a01b0382167f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e45f80a35f61367f565b806137bb5f61389e936106db565b5f61385a565b606480546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908160209103126103b8575190565b61012090604060c0610604959796949761016084019860018060a01b03168452613932602085018260208091803584520135910152565b80830180356060860152602001356080850152826080820160a08601370160e0830137019060208091805184520151910152565b6040516309aa152760e11b81526001600160a01b0382811660048301529091907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4916602083602481845afa9283156108eb575f93613a47575b5082156139cd575050905090565b602092506139fd935f6139df846125c9565b6040516317ef39cb60e31b81529687958694859391600485016138fb565b03925af19081156108eb575f91613a18575b50805f80612f1c565b613a3a915060203d602011613a40575b613a3281836106db565b8101906138ec565b5f613a0f565b503d613a28565b613a6191935060203d602011613a4057613a3281836106db565b915f6139bf565b15613a6f57565b60405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b6044820152606490fd5b91929092602082019283515f52609a60205260ff60405f205416613b155761060494613b0d926040850191613ad48351421115613a68565b613af7613aea88515f52609a60205260405f2090565b805460ff19166001179055565b609d546001600160a01b031696519251936127f1565b905191614c95565b60405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b6044820152606490fd5b60405190613b50826106c0565b60606040838281528260208201520152565b15613b6957565b606460405162461bcd60e51b815260206004820152600460248201526308509a5d60e21b6044820152fd5b15613b9b57565b60405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b6044820152606490fd5b6001602091835181550191015160038110156108175760ff80198354169116179055565b9060018060a01b031681526040602082015260806040613c17845160608386015260a085019061246a565b9360208101516060850152015191015290565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03909116815260406020820181905261239e93910191613c2a565b9080601f830112156103b8578151613c8381611075565b92613c9160405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613cb95750505090565b602080918351613cc881611d5b565b815201910190613cac565b9190916040818403126103b85780516001600160401b0381116103b85783613cfc918301613c6c565b9260208201516001600160401b0381116103b85761239e9201613c6c565b61239e949260609260018060a01b0316825260208201528160408201520191613c2a565b6020818303126103b8578051906001600160401b0382116103b857019080601f830112156103b8578151613d7181611075565b92613d7f60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613da75750505090565b602080918351613db6816104b7565b815201910190613d9a565b60409061239e949281528160208201520191613c2a565b91929394817fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa613ea9613e09613b43565b98613e9d613e2c6104708b610e758c613e2460965460ff1690565b923691610735565b613e3586612e1f565b6001600160c01b0390911690613e4c82151561352c565b60018060c01b0316613e66613e618284161590565b613b62565b6001600160a01b038a165f908152609f60205260409020613e9690613e8f905460a0549061279d565b4211613b94565b1785614a4b565b6040519182918261248e565b0390a26001613ed481613ecc8660018060a01b03165f52609960205260405f2090565b015460ff1690565b613edd816111b1565b03614072575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b8575f6040518092631fd93ca960e11b8252818381613f378b8b8b60048501613c4a565b03925af180156108eb5784935f92849261405e575b50613f6c876040519788948594632550477760e01b865260048601613d1a565b0381837f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19283156108eb575f938491859161403a575b5060408701526020860152613fd5604051948593849362bff04d60e01b855260048501613dc1565b0381837f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03165af19081156108eb575f91614018575b50815290565b61403491503d805f833e61402c81836106db565b810190613d3e565b5f614012565b905061405891503d8086833e61405081836106db565b810190613cd3565b5f613fad565b806137bb8561406c936106db565b5f613f4c565b6140a361407d6106fc565b838152600160208201526001600160a01b0385165f908152609960205260409020613bc8565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b857604051639926ee7d60e01b8152915f9183918290849082906140fa908a60048401613bec565b03925af180156108eb5761413f575b50806001600160a01b0383167fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe5f80a35f613ee3565b806137bb5f61414d936106db565b5f614109565b1561415a57565b60405162461bcd60e51b815260206004820152600360248201526206368360ec1b6044820152606490fd5b1561418c57565b60405162461bcd60e51b815260206004820152600360248201526263683160e81b6044820152606490fd5b908160209103126103b8575161239e81611d5b565b156141d357565b60405162461bcd60e51b815260206004820152600360248201526231b41960e91b6044820152606490fd5b1561420557565b60405162461bcd60e51b815260206004820152600360248201526263683360e81b6044820152606490fd5b6020919261428d6142806142b89896976142796142558783015160018060a01b031690565b6001600160a01b039081165f81815260996020526040902054969091161415614153565b5160ff1690565b60ff808516911614614185565b604051635401ed2760e01b8152600481019190915260ff909116602482015294859081906044820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa9283156108eb57610604945f9461433c575b50826143349261432f61431b936001600160601b0361432761431b82998b614d6a565b6001600160601b031690565b9116116141cc565b614d8d565b9116106141fe565b61431b919450926143349261432f6143736001600160601b039660203d60201161437f575b61436b81836106db565b8101906141b7565b969350509250926142f8565b503d614361565b815f52609860205260405f2054905f5b8281106143ca5760405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b6044820152606490fd5b808303838111612798576129636143e091612e11565b6144096143fe826143f9885f52609860205260405f2090565b611423565b505463ffffffff1690565b63ffffffff808516911611156144225750600101614396565b935050505090565b1561443157565b606460405162461bcd60e51b81526020600482015260046024820152630e29ac2f60e31b6044820152fd5b60ff60019116019060ff821161279857565b6080906001600160601b036020939460ff60608401961683521683820152606060408201528451809452019201905f5b8181106144ab5750505090565b825180516001600160a01b031685526020908101516001600160601b0316818601526040909401939092019160010161449e565b91906145226144f060965460ff1690565b9361450060c060ff87161061442a565b61451c61450c8661445c565b60ff1660ff196096541617609655565b84613469565b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031691823b156103b857614578925f928360405180968195829463ff694a7760e01b84528a6004850161446e565b03925af180156108eb57614655575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff83166004820152905f908290602490829084905af180156108eb57614641575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff90921660048301525f9082908183816024810161379c565b806137bb5f61464f936106db565b5f6145e8565b806137bb5f614663936106db565b5f614587565b5f5460101c6001600160a01b0316158061473e575b156146c3578161469061060493600155565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a26130c4565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b038116151561467e565b307f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5706001600160a01b0316148061483d575b156147ab577fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d1160408201527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608201524660808201523060a082015260a081526132aa60c0826106db565b507f0000000000000000000000000000000000000000000000000000000000007a694614614782565b1561486d57565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614966578151156149615761492461491a610edb61490c856127d0565b516001600160f81b03191690565b60ff600191161b90565b6001905b835182101561495c5760019061494761491a610edb61490c8689612ea3565b90614953818311614866565b17910190614928565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b8054600160401b8110156106bb576149fa91600182018155611423565b614a3857815160208084015160409485015163ffffffff909316911b67ffffffff00000000161767ffffffffffffffff199190931b16919091179055565b634e487b7160e01b5f525f60045260245ffd5b90614a5e825f52609860205260405f2090565b5480614aab5750614a7a610604925f52609860205260405f2090565b614aa6614a8561070b565b4363ffffffff168152925b5f60208501526001600160c01b03166040840152565b6149dd565b91614ad663ffffffff93614ad0614aca845f52609860205260405f2090565b91612e11565b90611423565b5090614ae6825463ffffffff1690565b43851694168403614b1157506106049250906001600160401b0382549181199060401b169116179055565b815467ffffffff000000001916602085901b67ffffffff000000001617909155610604929190614aa690614b4d905f52609860205260405f2090565b91614a90614b5961070b565b63ffffffff9095168552565b15614b6c57565b60405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a490fd5b908160209103126103b857516001600160e01b0319811681036103b85790565b15614c0e57565b60405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a490fd5b90813b15614d275791602091614cc193604051809581948293630b135d3f60e11b8452600484016135b2565b03916001600160a01b03165afa80156108eb57610604915f91614cf8575b506001600160e01b031916630b135d3f60e11b14614c07565b614d1a915060203d602011614d20575b614d1281836106db565b810190614be7565b5f614cdf565b503d614d08565b61060492614d3491614df7565b6001600160a01b03908116911614614b65565b906001600160601b03809116911602906001600160601b03821691820361279857565b614d886001600160601b039161ffff60206127109501511690614d47565b160490565b614d886001600160601b039161ffff60406127109501511690614d47565b15614db257565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b61239e91614e0491614e0c565b919091614e84565b815160418103614e38575090614e3491602082015190606060408401519301515f1a90615005565b9091565b604003614e715760406020830151920151918260ff1c91601b830180931161279857614e34936001600160ff1b03169260ff1690615005565b50505f90600290565b6005111561081757565b614e8d81614e7a565b80614e955750565b614e9e81614e7a565b60018103614eeb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b614ef481614e7a565b60028103614f415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b614f4a81614e7a565b60038103614fa25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b80614fae600492614e7a565b14614fb557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116150a35760ff16601b81141580615098575b61508d576020935f93604051938493608085019385528785015260408401526060830152838052039060015afa156108eb575f516001600160a01b0381161561508557905f90565b505f90600190565b505050505f90600490565b50601c81141561503d565b505050505f9060039056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122008e52422e3bba4dbde50639da22bb14dc5549ff1da95556698281d1600612a1464736f6c634300081b0033","nonce":47,"gas_used":4566533},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x45ae05","logs":[{"address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000001000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000"},"block_hash":"0x97d71a9dab2c1330ac9975b39a4ca6ed81d9b9b008b1974b454eacdc9c994ede","block_number":18},{"info":{"transaction_hash":"0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":9,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c","block_number":9},{"info":{"transaction_hash":"0xa7d58bff6570f853c61a687946a0d5f1feec47397457b8ea03e5244ee19fb250","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec400000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137780000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","output":"0x","gas_used":16970,"gas_limit":34900,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe60000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528","output":"0x","gas_used":11422,"gas_limit":29038,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":42,"gas_used":38770},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x9772","logs":[{"address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000080000008000000000000000000000000000000000000000"},"block_hash":"0x763cffee8611f05215c9e336f0d206fe2caeaa5031b93dac472ed701a1d274da","block_number":13},{"info":{"transaction_hash":"0x4ced228a778cb1d6cc358af892621e33cfa4fd3810b3df7ba583ccafdf8bba85","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3600000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000264dd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":546170,"gas_limit":810868,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0xf5059a5d33d5853360d16c683c16e67980206f36","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef28600000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000264dd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":539966,"gas_limit":792235,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[3,5,7],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x36c02da8a0983159322a80ffe9f24b1acff8b570","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xdd8283f3000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000","output":"0x","gas_used":527636,"gas_limit":767817,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x00000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af80000000000000000000000000000000000000000000000000000000000000032"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":3}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5},{"Call":0},{"Call":1},{"Call":2},{"Log":6}]},{"parent":2,"children":[4],"idx":3,"trace":{"depth":3,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xff694a770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000","output":"0x","gas_used":171431,"gas_limit":515997,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":3,"children":[],"idx":4,"trace":{"depth":4,"success":true,"caller":"0x998abeb3e57409262ae5b751f60747921b33613e","address":"0x0e801d84fa97b50751dbf25036d067dcf18858bf","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xff694a770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000","output":"0x","gas_used":164240,"gas_limit":500886,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]},{"parent":2,"children":[6],"idx":5,"trace":{"depth":3,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":52408,"gas_limit":344265,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":5,"children":[],"idx":6,"trace":{"depth":4,"success":true,"caller":"0x95401dc811bb5740090279ba06cfa8fcf6113778","address":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":45244,"gas_limit":331864,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":2,"children":[8],"idx":7,"trace":{"depth":3,"success":true,"caller":"0xf5059a5d33d5853360d16c683c16e67980206f36","address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":52546,"gas_limit":289678,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":7,"children":[],"idx":8,"trace":{"depth":4,"success":true,"caller":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","address":"0x9d4454b023096f34b160d6b654540c56a1f81688","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x26d941f20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":45382,"gas_limit":278130,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x","nonce":48,"gas_used":572322},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8bba2","logs":[{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570"],"data":"0x"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x00000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000002af80000000000000000000000000000000000000000000000000000000000000032"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000de0b6b3a7640000"},{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xf5059a5d33d5853360d16c683c16e67980206f36","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00002000000001000000000040000000400000000000000000800000000000000000000800000000000000000000000080800010000000100800000000000000000080000000008000002400000102000001000400000000000000008000000000000000020000000000008100010800000000000200000000000100000000400400000100000000000000000000000000000000000080000000000000000000000000000000000000004000400400000000000000000000000000000000000000000020480000280000000000041100000000002000000000000000000020000000000000000000000000800000000000000000000000000208100000408000"},"block_hash":"0xae0843be8b0c5e26f44e5cf5233fe0a78a9e4ef8fe7dc6e4701658c372e41204","block_number":19},{"info":{"transaction_hash":"0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","output":"0x","gas_used":56296,"gas_limit":59254,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","output":"0x","gas_used":49162,"gas_limit":51341,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":31,"gas_used":78008},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x130b8","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0x2031601ca07c60213e659cd4a2110fe879d8a03b45e12a778ed377044eac92ee","block_number":26},{"info":{"transaction_hash":"0x2370eac32065c85773ae4f391544e8aa2a9d653beca7ab86fc2a412d19ed94ad","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x84ea74d481ee0a5332c457a4d796187f6ba67feb","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x84ea74d481ee0a5332c457a4d796187f6ba67feb","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608080604052346013576073908160188239f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c63c2985578146023575f80fd5b346039575f366003190112603957805f60209252f35b5f80fdfea264697066735822122013c5f1468a1f1f0157f23ba5e12ee6155a4a92bac6399a4b6487606dad4ea56864736f6c634300081b0033","output":"0x60808060405260043610156011575f80fd5b5f3560e01c63c2985578146023575f80fd5b346039575f366003190112603957805f60209252f35b5f80fdfea264697066735822122013c5f1468a1f1f0157f23ba5e12ee6155a4a92bac6399a4b6487606dad4ea56864736f6c634300081b0033","gas_used":23081,"gas_limit":46568,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60808060405260043610156011575f80fd5b5f3560e01c63c2985578146023575f80fd5b346039575f366003190112603957805f60209252f35b5f80fdfea264697066735822122013c5f1468a1f1f0157f23ba5e12ee6155a4a92bac6399a4b6487606dad4ea56864736f6c634300081b0033","nonce":32,"gas_used":78291},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x131d3","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2015783bbb64310c7dbabb78421376693653582b46bbf7d9e43480fcec17f2fc","block_number":5},{"info":{"transaction_hash":"0x78baa7ffea920bf995412537611f0112a44cfc409fd2a1266e3ea0ca2bd40970","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x4e59b44847b379578588920ca78fbf26c0b4956c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x000000000000000000000000000000000000000000000000000000000000000960803460b857601f61071038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361063f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b00330000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","output":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","gas_used":376954,"gas_limit":539777,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4e59b44847b379578588920ca78fbf26c0b4956c","address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x60803460b857601f61071038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361063f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b00330000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","output":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b0033","gas_used":344055,"gas_limit":499002,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","nonce":1,"gas_used":427078},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x68446","logs":[{"address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000010440000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xfc772625e4110b1ff8723b0e7f137319d52ba96dbad0903e970d17a4ba297f40","block_number":2},{"info":{"transaction_hash":"0xafa57a651737a8c9b9ee0dd946df3783e6898d9b08a0bf42e7ef7848e7be1419","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60806040526103ca803803806100148161024f565b92833981019060408183031261024b578051916001600160a01b0383169182840361024b576020810151906001600160401b03821161024b57019181601f8401121561024b57825161006d61006882610288565b61024f565b9381855260208501936020838301011161024b57815f926020809301865e85010152833b156101f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906101e9575b610109575b60405160cb90816102ff8239f35b610113606061024f565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561019557610184935f92839251915af43d1561018d573d9061017561006883610288565b9182523d5f602084013e6102a3565b505f80806100fb565b6060906102a3565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f6100f6565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761027457604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161027457601f01601f191660200190565b909190156102af575090565b8151156102bf5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b00330000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4f28c3e3700000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000000000000000000000000000000000000000000ff00000000000000000000000000000000000000000000000000000000000000ff4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c9700a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b00000000000000000000000000000000000000000000000000000000","output":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","gas_used":228748,"gas_limit":318772,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","address":"0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf28c3e3700000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000000000000000000000000000000000000000000ff00000000000000000000000000000000000000000000000000000000000000ff4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c9700a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b","output":"0x","gas_used":160903,"gas_limit":287135,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Return","out":"0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033","nonce":62,"gas_used":300082},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x49432","logs":[{"address":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f"],"data":"0x"},{"address":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x"},{"address":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000400000000000000000000000000020000000000400100000800000000000000000000000000000000400000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000400002000000000000000000000000001000000000020000000208000000000040000040000002000000000000000000020000000000200000000000000000000000000000000000000000000000000002000"},"block_hash":"0x4806f705a2a63fee75c0e51a155972dc7f86443c1cbec7212dc44dadf19439a1","block_number":33},{"info":{"transaction_hash":"0x5685356c6cf2a01b5e28c51d2742e38a6f40cf0673008775ab648fdc3ce4216b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608034606f57601f61033538819003918201601f19168301916001600160401b03831184841017607357808492602094604052833981010312606f57516001600160a01b03811690819003606f575f80546001600160a01b0319169190911790556040516102ad90816100888239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806306045a911461005a5763bd90df701461002f575f80fd5b34610056575f366003190112610056575f546040516001600160a01b039091168152602090f35b5f80fd5b3461005657610100366003190112610056576064356bffffffffffffffffffffffff1981168091036100565760a43567ffffffffffffffff81116100565736602382011215610056578060040135906100b28261025b565b916100c06040519384610225565b8083526020830191366024838301011161005657815f9260246020930185378401015260e4356001600160a01b0381169390849003610056575f9361018b610144869560018060a01b038754169560405194859260208401976306045a9160e01b8952600435602486015260243560448601526044356064860152608485015260843560a485015261010060c4850152518092816101248601528585015e8884838501015260c43560e4840152610104830152601f801991011681010301601f198101835282610225565b51915afa3d1561021d573d906101a08261025b565b916101ae6040519384610225565b82523d5f602084013e5b156101e357602081805181010312610056576020015180151580910361005657602090604051908152f35b60405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b6044820152606490fd5b6060906101b8565b90601f8019910116810190811067ffffffffffffffff82111761024757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161024757601f01601f19166020019056fea2646970667358221220911b56055980795aa4b8f8b72ea4e2298214c4b37162aa576fadfa991ca0846364736f6c634300081b0033000000000000000000000000851356ae760d987e095750cceb3bc6014560891c","output":"0x60806040526004361015610011575f80fd5b5f3560e01c806306045a911461005a5763bd90df701461002f575f80fd5b34610056575f366003190112610056575f546040516001600160a01b039091168152602090f35b5f80fd5b3461005657610100366003190112610056576064356bffffffffffffffffffffffff1981168091036100565760a43567ffffffffffffffff81116100565736602382011215610056578060040135906100b28261025b565b916100c06040519384610225565b8083526020830191366024838301011161005657815f9260246020930185378401015260e4356001600160a01b0381169390849003610056575f9361018b610144869560018060a01b038754169560405194859260208401976306045a9160e01b8952600435602486015260243560448601526044356064860152608485015260843560a485015261010060c4850152518092816101248601528585015e8884838501015260c43560e4840152610104830152601f801991011681010301601f198101835282610225565b51915afa3d1561021d573d906101a08261025b565b916101ae6040519384610225565b82523d5f602084013e5b156101e357602081805181010312610056576020015180151580910361005657602090604051908152f35b60405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b6044820152606490fd5b6060906101b8565b90601f8019910116810190811067ffffffffffffffff82111761024757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161024757601f01601f19166020019056fea2646970667358221220911b56055980795aa4b8f8b72ea4e2298214c4b37162aa576fadfa991ca0846364736f6c634300081b0033","gas_used":159525,"gas_limit":227274,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c806306045a911461005a5763bd90df701461002f575f80fd5b34610056575f366003190112610056575f546040516001600160a01b039091168152602090f35b5f80fd5b3461005657610100366003190112610056576064356bffffffffffffffffffffffff1981168091036100565760a43567ffffffffffffffff81116100565736602382011215610056578060040135906100b28261025b565b916100c06040519384610225565b8083526020830191366024838301011161005657815f9260246020930185378401015260e4356001600160a01b0381169390849003610056575f9361018b610144869560018060a01b038754169560405194859260208401976306045a9160e01b8952600435602486015260243560448601526044356064860152608485015260843560a485015261010060c4850152518092816101248601528585015e8884838501015260c43560e4840152610104830152601f801991011681010301601f198101835282610225565b51915afa3d1561021d573d906101a08261025b565b916101ae6040519384610225565b82523d5f602084013e5b156101e357602081805181010312610056576020015180151580910361005657602090604051908152f35b60405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b6044820152606490fd5b6060906101b8565b90601f8019910116810190811067ffffffffffffffff82111761024757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161024757601f01601f19166020019056fea2646970667358221220911b56055980795aa4b8f8b72ea4e2298214c4b37162aa576fadfa991ca0846364736f6c634300081b0033","nonce":55,"gas_used":225831},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x37227","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x5b856d04e6471c87b134b61cd2c2c851fb2b317010ffe92937a292533abbea0d","block_number":26},{"info":{"transaction_hash":"0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":94293,"gas_limit":148590,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":88344,"gas_limit":140460,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":75499,"gas_limit":126070,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Stop","out":"0x","nonce":20,"gas_used":117401},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1ca99","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000"},"block_hash":"0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e","block_number":17},{"info":{"transaction_hash":"0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","gas_used":855443,"gas_limit":1150949,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","nonce":18,"gas_used":985021},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5df480","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000"},"block_hash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","block_number":15},{"info":{"transaction_hash":"0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x09635f643e140090a9a8dcd712ed6285858cebef","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","gas_used":594640,"gas_limit":806048,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","nonce":27,"gas_used":704694},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xac0b6","logs":[{"address":"0x09635f643e140090a9a8dcd712ed6285858cebef","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19","block_number":23},{"info":{"transaction_hash":"0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","gas_used":3693659,"gas_limit":4910903,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","nonce":16,"gas_used":4057483},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3de98b","logs":[{"address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000"},"block_hash":"0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2","block_number":14},{"info":{"transaction_hash":"0x185c1b4b5f51a6c7b11234027bc275a8e916319d36384e586789f5ae7864c11d","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608080604052346059575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361060b908161005e8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c908163204e1c7a1461045057508063715018a6146103f95780637eff275e146103675780638da5cb5b146103405780639623609d1461024257806399a88ec4146101ad578063f2fde38b146100e75763f3b7dead14610076575f80fd5b346100e45760203660031901126100e457808060046001600160a01b0361009b6104b2565b6040516303e1469160e61b815291165afa6100b4610530565b90156100e25780516020916001600160a01b03916100d991908101840190840161055f565b16604051908152f35b505b80fd5b50346100e45760203660031901126100e4576101016104b2565b61010961057e565b6001600160a01b031680156101595781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346100e45760403660031901126100e457806101c86104b2565b6101d06104c8565b906101d961057e565b6001600160a01b031690813b1561023e57604051631b2ce7f360e11b81526001600160a01b0390911660048201529082908290602490829084905af18015610233576102225750f35b8161022c916104de565b6100e45780f35b6040513d84823e3d90fd5b5050fd5b5060603660031901126100e457806102586104b2565b6102606104c8565b6044359167ffffffffffffffff831161033b573660238401121561033b5782600401359061028d82610514565b9161029b60405193846104de565b80835260208301943660248383010111610337578187926024602093018837840101526102c661057e565b6001600160a01b0316803b15610333578492606460405180968195829463278f794360e11b845260018060a01b03166004840152604060248401525180918160448501528484015e8181018301879052601f01601f1916810103019134905af18015610233576102225750f35b8480fd5b8680fd5b505050fd5b50346100e457806003193601126100e457546040516001600160a01b039091168152602090f35b50346103f55760403660031901126103f5576103816104b2565b6103896104c8565b9061039261057e565b6001600160a01b031690813b156103f5576040516308f2839760e41b81526001600160a01b039091166004820152905f908290602490829084905af180156103ea576103dc575080f35b6103e891505f906104de565b005b6040513d5f823e3d90fd5b5f80fd5b346103f5575f3660031901126103f55761041161057e565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346103f55760203660031901126103f5575f9081906004906001600160a01b036104786104b2565b635c60da1b60e01b8352165afa61048d610530565b90156103f55780516020916001600160a01b03916100d991908101840190840161055f565b600435906001600160a01b03821682036103f557565b602435906001600160a01b03821682036103f557565b90601f8019910116810190811067ffffffffffffffff82111761050057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161050057601f01601f191660200190565b3d1561055a573d9061054182610514565b9161054f60405193846104de565b82523d5f602084013e565b606090565b908160209103126103f557516001600160a01b03811681036103f55790565b5f546001600160a01b0316330361059157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220da783ab89c5c287c74b7661204a758c01ff9259a5a2e0c6e9f8f2eefdc4105bf64736f6c634300081b0033","output":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163204e1c7a1461045057508063715018a6146103f95780637eff275e146103675780638da5cb5b146103405780639623609d1461024257806399a88ec4146101ad578063f2fde38b146100e75763f3b7dead14610076575f80fd5b346100e45760203660031901126100e457808060046001600160a01b0361009b6104b2565b6040516303e1469160e61b815291165afa6100b4610530565b90156100e25780516020916001600160a01b03916100d991908101840190840161055f565b16604051908152f35b505b80fd5b50346100e45760203660031901126100e4576101016104b2565b61010961057e565b6001600160a01b031680156101595781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346100e45760403660031901126100e457806101c86104b2565b6101d06104c8565b906101d961057e565b6001600160a01b031690813b1561023e57604051631b2ce7f360e11b81526001600160a01b0390911660048201529082908290602490829084905af18015610233576102225750f35b8161022c916104de565b6100e45780f35b6040513d84823e3d90fd5b5050fd5b5060603660031901126100e457806102586104b2565b6102606104c8565b6044359167ffffffffffffffff831161033b573660238401121561033b5782600401359061028d82610514565b9161029b60405193846104de565b80835260208301943660248383010111610337578187926024602093018837840101526102c661057e565b6001600160a01b0316803b15610333578492606460405180968195829463278f794360e11b845260018060a01b03166004840152604060248401525180918160448501528484015e8181018301879052601f01601f1916810103019134905af18015610233576102225750f35b8480fd5b8680fd5b505050fd5b50346100e457806003193601126100e457546040516001600160a01b039091168152602090f35b50346103f55760403660031901126103f5576103816104b2565b6103896104c8565b9061039261057e565b6001600160a01b031690813b156103f5576040516308f2839760e41b81526001600160a01b039091166004820152905f908290602490829084905af180156103ea576103dc575080f35b6103e891505f906104de565b005b6040513d5f823e3d90fd5b5f80fd5b346103f5575f3660031901126103f55761041161057e565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346103f55760203660031901126103f5575f9081906004906001600160a01b036104786104b2565b635c60da1b60e01b8352165afa61048d610530565b90156103f55780516020916001600160a01b03916100d991908101840190840161055f565b600435906001600160a01b03821682036103f557565b602435906001600160a01b03821682036103f557565b90601f8019910116810190811067ffffffffffffffff82111761050057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161050057601f01601f191660200190565b3d1561055a573d9061054182610514565b9161054f60405193846104de565b82523d5f602084013e565b606090565b908160209103126103f557516001600160a01b03811681036103f55790565b5f546001600160a01b0316330361059157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220da783ab89c5c287c74b7661204a758c01ff9259a5a2e0c6e9f8f2eefdc4105bf64736f6c634300081b0033","gas_used":333435,"gas_limit":457183,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163204e1c7a1461045057508063715018a6146103f95780637eff275e146103675780638da5cb5b146103405780639623609d1461024257806399a88ec4146101ad578063f2fde38b146100e75763f3b7dead14610076575f80fd5b346100e45760203660031901126100e457808060046001600160a01b0361009b6104b2565b6040516303e1469160e61b815291165afa6100b4610530565b90156100e25780516020916001600160a01b03916100d991908101840190840161055f565b16604051908152f35b505b80fd5b50346100e45760203660031901126100e4576101016104b2565b61010961057e565b6001600160a01b031680156101595781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346100e45760403660031901126100e457806101c86104b2565b6101d06104c8565b906101d961057e565b6001600160a01b031690813b1561023e57604051631b2ce7f360e11b81526001600160a01b0390911660048201529082908290602490829084905af18015610233576102225750f35b8161022c916104de565b6100e45780f35b6040513d84823e3d90fd5b5050fd5b5060603660031901126100e457806102586104b2565b6102606104c8565b6044359167ffffffffffffffff831161033b573660238401121561033b5782600401359061028d82610514565b9161029b60405193846104de565b80835260208301943660248383010111610337578187926024602093018837840101526102c661057e565b6001600160a01b0316803b15610333578492606460405180968195829463278f794360e11b845260018060a01b03166004840152604060248401525180918160448501528484015e8181018301879052601f01601f1916810103019134905af18015610233576102225750f35b8480fd5b8680fd5b505050fd5b50346100e457806003193601126100e457546040516001600160a01b039091168152602090f35b50346103f55760403660031901126103f5576103816104b2565b6103896104c8565b9061039261057e565b6001600160a01b031690813b156103f5576040516308f2839760e41b81526001600160a01b039091166004820152905f908290602490829084905af180156103ea576103dc575080f35b6103e891505f906104de565b005b6040513d5f823e3d90fd5b5f80fd5b346103f5575f3660031901126103f55761041161057e565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346103f55760203660031901126103f5575f9081906004906001600160a01b036104786104b2565b635c60da1b60e01b8352165afa61048d610530565b90156103f55780516020916001600160a01b03916100d991908101840190840161055f565b600435906001600160a01b03821682036103f557565b602435906001600160a01b03821682036103f557565b90601f8019910116810190811067ffffffffffffffff82111761050057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161050057601f01601f191660200190565b3d1561055a573d9061054182610514565b9161054f60405193846104de565b82523d5f602084013e565b606090565b908160209103126103f557516001600160a01b03811681036103f55790565b5f546001600160a01b0316330361059157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220da783ab89c5c287c74b7661204a758c01ff9259a5a2e0c6e9f8f2eefdc4105bf64736f6c634300081b0033","nonce":33,"gas_used":412495},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x64b4f","logs":[{"address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000008000000000"},"block_hash":"0xd2b08057be2a669276f7c3467a6935a00d143fabaa0b9098f9f450cad4bcaf9f","block_number":6},{"info":{"transaction_hash":"0x2eec617e8e4ab4a4f7b3a884212cc300ad35c95305a8f3e676bbc8db7df2a353","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec4000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","output":"0x","gas_used":16970,"gas_limit":34900,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x998abeb3e57409262ae5b751f60747921b33613e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe60000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf","output":"0x","gas_used":11422,"gas_limit":29038,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":44,"gas_used":38770},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x9772","logs":[{"address":"0x998abeb3e57409262ae5b751f60747921b33613e","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf"],"data":"0x"}],"logsBloom":"0x00002000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000008000002000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x8b415a6905a589597db534920d09e828710de4913b4b0faef77d180caa9df220","block_number":15},{"info":{"transaction_hash":"0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","gas_used":2263024,"gas_limit":3014632,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","nonce":13,"gas_used":2505362},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x263a92","logs":[{"address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000"},"block_hash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","block_number":12},{"info":{"transaction_hash":"0xf6de69ea217dd94482390916003cb604b134d039b1cee801a1af2962ac68a1f3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x851356ae760d987e095750cceb3bc6014560891c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":12170,"gas_limit":27710,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":5006,"gas_limit":20255,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":52,"gas_used":33602},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8342","logs":[{"address":"0x851356ae760d987e095750cceb3bc6014560891c","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000400000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000010000000000000000000000000000000000000000100000020000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x75eaafcccda554d6e0abe6376b9960f05afce865813054a56009bdc25cafc45f","block_number":23},{"info":{"transaction_hash":"0x51e445fb29d6afe81480102ae61326b0d3a1194f01bd3f7a665a3dd01aed0236","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x851356ae760d987e095750cceb3bc6014560891c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x851356ae760d987e095750cceb3bc6014560891c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":23007,"gas_limit":43513,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x4c5859f0f772848b2d91f1d83e2fe57935348029","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":15840,"gas_limit":35808,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":1,"children":[3],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x851356ae760d987e095750cceb3bc6014560891c","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":9426,"gas_limit":29079,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":2,"children":[],"idx":3,"trace":{"depth":3,"success":true,"caller":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xa98fb35500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":2298,"gas_limit":21643,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713","0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c"],"data":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":51,"gas_used":44339},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xad33","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c943713","0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c"],"data":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000800000000000000000000000000000240000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000004000000001000000001000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xcca9e375d92dd56cdb22579c17edeb1d7498929d33f630c65c88de38da40719c","block_number":22},{"info":{"transaction_hash":"0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","output":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","gas_used":347700,"gas_limit":476189,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","nonce":0,"gas_used":428298},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x6890a","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea","block_number":1},{"info":{"transaction_hash":"0x20579ba0259a920869a9204a26460300049758433e1a7aae70c8b7b68280e20f","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","gas_used":421667,"gas_limit":578117,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","nonce":40,"gas_used":521501},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x7f51d","logs":[{"address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},{"address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000002200000000000000000000000000000000000000000000000000040004000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000020000000000000"},"block_hash":"0x05e432e88ad1de880d4c8672827b5841baaac763fc2cf20f19c5c05be733c5cf","block_number":12},{"info":{"transaction_hash":"0xe2631ed8b7933a4e865262fa52a191f46f89878e9dc6524e8a25d0a9803de929","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a080604052346100da57306080525f549060ff8260081c16610088575060ff8082161061004e575b60405161151290816100df823960805181818161093f01528181610a640152610d8f0152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","output":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","gas_used":1103220,"gas_limit":1476728,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033","nonce":61,"gas_used":1245028},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x12ff64","logs":[{"address":"0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000080000000000000400000000000000000000000000000000400000000000000010000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x253747ff4999586476c876609f56ca75dadb7d488051a7b7061022dee57c6478","block_number":32},{"info":{"transaction_hash":"0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x610178da211fef7d417bc0e6fed39f05609ad788","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x610178da211fef7d417bc0e6fed39f05609ad788","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","gas_used":3162610,"gas_limit":4205258,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","nonce":10,"gas_used":3475494},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x350826","logs":[{"address":"0x610178da211fef7d417bc0e6fed39f05609ad788","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","block_number":10},{"info":{"transaction_hash":"0x27161b46f317e1cca4a80b8c3c52755e904f7d1d09aba2ec8cc22eb01e6f4c3b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4307,"gas_limit":16210,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":54,"gas_used":25739},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x648b","logs":[{"address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000008000000000"},"block_hash":"0x323db2ce15bb64796aaa948aeae5dc859b000b87dfb8afc77e40fe1a74599900","block_number":25},{"info":{"transaction_hash":"0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":8,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91","block_number":8},{"info":{"transaction_hash":"0x6d32df0df250ea279968c67c7c77128182599496cdb088f933ba0cb9a3a6fcb7","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec400000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc490000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","output":"0x","gas_used":16970,"gas_limit":34900,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9e545e3c0baab3e08cdfd552c960a1050f373042","address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe60000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688","output":"0x","gas_used":11422,"gas_limit":29038,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":46,"gas_used":38770},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x9772","logs":[{"address":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000002200040000000000100000000000000000000000000000000000040004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe7b21562150bce31b42cccaff8f60797c82df92b98326f4c9d814e1989636b0d","block_number":17},{"info":{"transaction_hash":"0x279f5cc917c7ca651cb7f411dd683d643b2be343a2a005c359048c35b60cf156","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x4e59b44847b379578588920ca78fbf26c0b4956c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x000000000000000000000000000000000000000000000000000000000000000960808060405234601557611345908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","output":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","gas_used":1021933,"gas_limit":1540784,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4e59b44847b379578588920ca78fbf26c0b4956c","address":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x60808060405234601557611345908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","output":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","gas_used":987636,"gas_limit":1482992,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","nonce":2,"gas_used":1121841},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x111e31","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x266d3dd8903217771ed1ee39602c8a4edc0bedc7ef08635901e1a6794fa2f1d2","block_number":3},{"info":{"transaction_hash":"0x67c5a4d58ac9b8c03a5fd886f179b788131d89caf6f614aba65f66a8970bb89c","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052610b478038038061001481610324565b92833981016060828203126103205761002c8261035d565b906100396020840161035d565b604084015190936001600160401b03821161032057019080601f8301121561032057815161006e61006982610371565b610324565b9281845260208401926020838301011161032057815f926020809301855e84010152823b156102c5577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0385169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906102be575b6101de575b50505f516020610b275f395f51905f5254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a1811561018a576001600160a01b031916175f516020610b275f395f51905f525560405161073f90816103e88239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6101e86060610324565b91602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152833b1561026a57610259935f92839251915af43d15610262573d9061024a61006983610371565b9182523d5f602084013e61038c565b505f8080610108565b60609061038c565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610103565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761034957604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361032057565b6001600160401b03811161034957601f01601f191660200190565b90919015610398575090565b8151156103a85750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f37304200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","gas_used":421667,"gas_limit":578117,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033","nonce":38,"gas_used":521501},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x7f51d","logs":[{"address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000084ea74d481ee0a5332c457a4d796187f6ba67feb"],"data":"0x"},{"address":"0x95401dc811bb5740090279ba06cfa8fcf6113778","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000002000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000100000000000000000000000000000000000001000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000080000000000000000000000000000000020000000000000"},"block_hash":"0x90b9606a944251847a71cb743bc77eff59af777f4257795b090a2b43b0c48eb6","block_number":11},{"info":{"transaction_hash":"0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","output":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","gas_used":23073,"gas_limit":46567,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","nonce":2,"gas_used":78315},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x131eb","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1","block_number":3},{"info":{"transaction_hash":"0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4360,"gas_limit":14193,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":30,"gas_used":25792},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x64c0","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72","block_number":25},{"info":{"transaction_hash":"0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0165878a594ca255338adfa4d48449f69242eb8f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":6,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x11ca7e","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","block_number":6},{"info":{"transaction_hash":"0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70703,"gas_limit":114238,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64705,"gas_limit":106596,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51811,"gas_limit":92687,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":19,"gas_used":94131},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16fb3","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728","block_number":16},{"info":{"transaction_hash":"0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","output":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","gas_used":214146,"gas_limit":300027,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","nonce":11,"gas_used":286272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x396666","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","block_number":10},{"info":{"transaction_hash":"0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":98219,"gas_limit":154478,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":92246,"gas_limit":146232,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e8","output":"0x","gas_used":79377,"gas_limit":131729,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5}]}],"exit":"Stop","out":"0x","nonce":23,"gas_used":121643},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1db2b","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200"},"block_hash":"0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20","block_number":20},{"info":{"transaction_hash":"0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":90394,"gas_limit":133535,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":84457,"gas_limit":125652,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x0165878a594ca255338adfa4d48449f69242eb8f","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e","output":"0x","gas_used":71624,"gas_limit":111506,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x000000000000000000000000000000000000000000000000000000000000001e"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":22,"gas_used":113158},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1ba06","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x000000000000000000000000000000000000000000000000000000000000001e"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000"},"block_hash":"0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded","block_number":19},{"info":{"transaction_hash":"0xd34e15542e0dbc47e49042365fc5a8d2e4e5f8568f65f77fbdc00c4f623c3649","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60808060405234601557610314908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081632702747d146100b157508063793e1c8e1461009557637be6aa6b1461003d575f80fd5b346100915760203660031901126100915761008d61008161005c61010a565b60405163e481af9d60e01b6020820152600481529061007c602483610162565b610198565b60405191829182610120565b0390f35b5f80fd5b34610091575f36600319011261009157602060405161dead8152f35b34610091576040366003190112610091576100ca61010a565b906024356001600160a01b03811691908290036100915761008d92610081926333cfb7b760e01b602084015260248301526024825261007c604483610162565b600435906001600160a01b038216820361009157565b60206040818301928281528451809452019201905f5b8181106101435750505090565b82516001600160a01b0316845260209384019390920191600101610136565b90601f8019910116810190811067ffffffffffffffff82111761018457604052565b634e487b7160e01b5f52604160045260245ffd5b5f918291602082519201905afa3d156102d6573d9067ffffffffffffffff821161018457604051916101d4601f8201601f191660200184610162565b82523d5f602084013e5b806102cc575b1561028d5780518101906020818184019303126100915760208101519067ffffffffffffffff8211610091570181603f820112156100915760208101519167ffffffffffffffff8311610184578260051b9160208301936102486040519586610162565b84526020840192810160400191821161009157604001915b81831061026d5750505090565b82516001600160a01b038116810361009157815260209283019201610260565b5060405161029c604082610162565b600181526020808201903682378151156102b85761dead905290565b634e487b7160e01b5f52603260045260245ffd5b50805115156101e4565b6060906101de56fea264697066735822122076ca2349a6e41fd590991eccd3f6a0b9335745993e7c7a70c835b28e908b43eb64736f6c634300081b0033","output":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081632702747d146100b157508063793e1c8e1461009557637be6aa6b1461003d575f80fd5b346100915760203660031901126100915761008d61008161005c61010a565b60405163e481af9d60e01b6020820152600481529061007c602483610162565b610198565b60405191829182610120565b0390f35b5f80fd5b34610091575f36600319011261009157602060405161dead8152f35b34610091576040366003190112610091576100ca61010a565b906024356001600160a01b03811691908290036100915761008d92610081926333cfb7b760e01b602084015260248301526024825261007c604483610162565b600435906001600160a01b038216820361009157565b60206040818301928281528451809452019201905f5b8181106101435750505090565b82516001600160a01b0316845260209384019390920191600101610136565b90601f8019910116810190811067ffffffffffffffff82111761018457604052565b634e487b7160e01b5f52604160045260245ffd5b5f918291602082519201905afa3d156102d6573d9067ffffffffffffffff821161018457604051916101d4601f8201601f191660200184610162565b82523d5f602084013e5b806102cc575b1561028d5780518101906020818184019303126100915760208101519067ffffffffffffffff8211610091570181603f820112156100915760208101519167ffffffffffffffff8311610184578260051b9160208301936102486040519586610162565b84526020840192810160400191821161009157604001915b81831061026d5750505090565b82516001600160a01b038116810361009157815260209283019201610260565b5060405161029c604082610162565b600181526020808201903682378151156102b85761dead905290565b634e487b7160e01b5f52603260045260245ffd5b50805115156101e4565b6060906101de56fea264697066735822122076ca2349a6e41fd590991eccd3f6a0b9335745993e7c7a70c835b28e908b43eb64736f6c634300081b0033","gas_used":157808,"gas_limit":224872,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081632702747d146100b157508063793e1c8e1461009557637be6aa6b1461003d575f80fd5b346100915760203660031901126100915761008d61008161005c61010a565b60405163e481af9d60e01b6020820152600481529061007c602483610162565b610198565b60405191829182610120565b0390f35b5f80fd5b34610091575f36600319011261009157602060405161dead8152f35b34610091576040366003190112610091576100ca61010a565b906024356001600160a01b03811691908290036100915761008d92610081926333cfb7b760e01b602084015260248301526024825261007c604483610162565b600435906001600160a01b038216820361009157565b60206040818301928281528451809452019201905f5b8181106101435750505090565b82516001600160a01b0316845260209384019390920191600101610136565b90601f8019910116810190811067ffffffffffffffff82111761018457604052565b634e487b7160e01b5f52604160045260245ffd5b5f918291602082519201905afa3d156102d6573d9067ffffffffffffffff821161018457604051916101d4601f8201601f191660200184610162565b82523d5f602084013e5b806102cc575b1561028d5780518101906020818184019303126100915760208101519067ffffffffffffffff8211610091570181603f820112156100915760208101519167ffffffffffffffff8311610184578260051b9160208301936102486040519586610162565b84526020840192810160400191821161009157604001915b81831061026d5750505090565b82516001600160a01b038116810361009157815260209283019201610260565b5060405161029c604082610162565b600181526020808201903682378151156102b85761dead905290565b634e487b7160e01b5f52603260045260245ffd5b50805115156101e4565b6060906101de56fea264697066735822122076ca2349a6e41fd590991eccd3f6a0b9335745993e7c7a70c835b28e908b43eb64736f6c634300081b0033","nonce":35,"gas_used":223548},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3693c","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x7a55157364d128b593d70dbb7a807a61c3e65377e16161d00635f4778a6f8fea","block_number":8},{"info":{"transaction_hash":"0xd09f03bb59663e56394d89f5fb4161ccd056ac94e68cacfdd4df50df4389b35b","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":null,"contract_address":"0x663f3ad617193148711d28f5334ee4ed07016602","traces":[{"parent":null,"children":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x663f3ad617193148711d28f5334ee4ed07016602","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101808060405234610c9257604081611f5380380380916100208285610c96565b833981010312610c925780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa15610b11575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e0604051916103068284610c96565b60068352601f19820136602085013760205f604051828101907f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be482527f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4604082015260408152610377606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161039d84610ccd565b5260205f604051828101907f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f82527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642604082015260408152610400606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161042684610cda565b5260205f604051828101907f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34782527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b604082015260408152610489606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160021015610b5257606084015260205f604051828101907f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a782527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6604082015260408152610517606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160031015610b5257608084015260205f604051828101907f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d82527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e826040820152604081526105a5606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160041015610b525760a084015260205f604051828101907f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49382527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809604082015260408152610633606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160051015610b525760c084015260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa15610b11575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526106f8606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526107c460a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261089060a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519760205f604051828101907f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c82527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e033360408201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d03076260608201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d360808201526080815261095c60a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa15610b11575f8051610140526101008190526060610120526020610160525b885180610100511015610b7a575f19810190808211610b66576101005190035f1901908111610b66578951811015610b5257610160519060051b8a0101519060405191610a176101205184610c96565b60028352610160516040903690850137610a3083610ccd565b52610a3a82610cda565b52604051610a4b6101605182610c96565b5f8152601f196101605101366101605183013781519061ffff8211610b3a5791604051928391610140516101605184015260408301815190916101605101905f905b808210610b1c575050509281610ad994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610c96565b5f60405191805180916101605101845e820191818352806101605193039060025afa15610b11575f51610100805160010190526109c7565b6040513d5f823e3d90fd5b82518452610160518896509384019390920191600190910190610a8d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c28352610bbe60e284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a084015260828352610c1860a284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f516001600160e01b03191681526040516112689182610ceb83396080518281816105c50152610dc7015260a0518281816105810152610ded015260c0518281816101690152610e2501525181818160ae0152610d330152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610cb957604052565b634e487b7160e01b5f52604160045260245ffd5b805115610b525760200190565b805160011015610b52576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f0000000000000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f000000000000000000000000000000000000000000000000000000000000000060801c83527f000000000000000000000000000000000000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f0000000000000000000000000000000000000000000000000000000000000000608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033a54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f5604446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0","output":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","gas_used":960882,"gas_limit":1301462,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0},{"Call":1},{"Call":2},{"Call":3},{"Call":4},{"Call":5},{"Call":6},{"Call":7},{"Call":8},{"Call":9},{"Call":10},{"Call":11},{"Call":12},{"Call":13},{"Call":14},{"Call":15},{"Call":16},{"Call":17},{"Call":18},{"Call":19},{"Call":20}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363302e47726f74683136526563656970745665726966696572506172616d6574657273","output":"0x60b97a2bdc471360c901f58eb3f22679fc24bd6bf6367e14a8a34744f29516aa","gas_used":84,"gas_limit":1280466,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":2,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4","output":"0x1cbeac7cb8d2fac8051651022d2e04174e8412f25dadd52b81453f1794f29c84","gas_used":84,"gas_limit":1279658,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":3,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642","output":"0xb8a9c5e594a6815546fba67ea41bc84dfacd88ce9cce09c5cc83027161f453af","gas_used":84,"gas_limit":1279161,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":4,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc3472ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b","output":"0x4b770f6234b0842dcb437ad35692e05576a9c67f4955552d6a16fd4e9ae421f1","gas_used":84,"gas_limit":1278657,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":5,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a72b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6","output":"0xaf5fe24ca85c070afb433eb954a0ae0d8d305914d3519fd8155af0c83832a4b2","gas_used":84,"gas_limit":1278181,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":6,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e82","output":"0x93335b9e02e32231be09d3a72bd01d1b0ca02e192ebf05bec1008959bb1b1634","gas_used":84,"gas_limit":1277704,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":7,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d493214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809","output":"0x23507fe4ecce8efc902604ea7fa4aff88c13537f07aed7525b572195f4fa8aea","gas_used":84,"gas_limit":1277227,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":8,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363305f67726f746831362e566572696679696e674b6579","output":"0xfa77044bc9f1aec494a3f424cb9104c24149acf58ca6b219b44bd6b1056f9d4c","gas_used":72,"gas_limit":1276958,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":9,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926","output":"0x2298cec17c15c841adbbf8cc6d7e081c861370f45abaaf4129e6d61da0dc90b1","gas_used":84,"gas_limit":1276530,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":10,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8","output":"0xa2f548430941c9296e3ba3bf440c0b1cc2f874864f7e41707725682236b77470","gas_used":108,"gas_limit":1276041,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":11,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa","output":"0xa0de5dc137b285f0d15790d0e0007a26331cafe00d29bdaa0e7e9afa276847aa","gas_used":108,"gas_limit":1275535,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":12,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e0333110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307621e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d3","output":"0xfb875534fd979f0e4a19693f6281a6a1c7079272b38a50541129234003c035a6","gas_used":108,"gas_limit":1275029,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":13,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363305f67726f746831362e566572696679696e674b65792e4943","output":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22","gas_used":72,"gas_limit":1274776,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":14,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f2223507fe4ecce8efc902604ea7fa4aff88c13537f07aed7525b572195f4fa8aea00000000000000000000000000000000000000000000000000000000000000000200","output":"0x6991d2156eb78af12e3e25bfd673e35ea2e9d54bb645837a07ac57d805d2fa58","gas_used":108,"gas_limit":1273245,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":15,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f2293335b9e02e32231be09d3a72bd01d1b0ca02e192ebf05bec1008959bb1b16346991d2156eb78af12e3e25bfd673e35ea2e9d54bb645837a07ac57d805d2fa580200","output":"0x3747e49de54377ce9abbc014ecd7ec4ca788afec8da840eb6ef0176619d0a40e","gas_used":108,"gas_limit":1271685,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":16,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22af5fe24ca85c070afb433eb954a0ae0d8d305914d3519fd8155af0c83832a4b23747e49de54377ce9abbc014ecd7ec4ca788afec8da840eb6ef0176619d0a40e0200","output":"0xf8114d4632ef201dfb01a62d81ccc0e1953e40332de675f240e0dbdacf97d457","gas_used":108,"gas_limit":1270125,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":17,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f224b770f6234b0842dcb437ad35692e05576a9c67f4955552d6a16fd4e9ae421f1f8114d4632ef201dfb01a62d81ccc0e1953e40332de675f240e0dbdacf97d4570200","output":"0xe9e614c65e73f622bc09ca944bf1ab2668f6bbe04076203d5b1915d5b3224833","gas_used":108,"gas_limit":1268565,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":18,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22b8a9c5e594a6815546fba67ea41bc84dfacd88ce9cce09c5cc83027161f453afe9e614c65e73f622bc09ca944bf1ab2668f6bbe04076203d5b1915d5b32248330200","output":"0x9d01ae8a6175af517297a259ee5064b66ee915ec87bb109e91d8385c6f225d7c","gas_used":108,"gas_limit":1267003,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":19,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f221cbeac7cb8d2fac8051651022d2e04174e8412f25dadd52b81453f1794f29c849d01ae8a6175af517297a259ee5064b66ee915ec87bb109e91d8385c6f225d7c0200","output":"0x232e4c620f567460a68696b693b7744030eac5ecb46ca403d5f69a3eb6e59783","gas_used":108,"gas_limit":1265442,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":20,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xfa77044bc9f1aec494a3f424cb9104c24149acf58ca6b219b44bd6b1056f9d4c2298cec17c15c841adbbf8cc6d7e081c861370f45abaaf4129e6d61da0dc90b1a2f548430941c9296e3ba3bf440c0b1cc2f874864f7e41707725682236b77470a0de5dc137b285f0d15790d0e0007a26331cafe00d29bdaa0e7e9afa276847aafb875534fd979f0e4a19693f6281a6a1c7079272b38a50541129234003c035a6232e4c620f567460a68696b693b7744030eac5ecb46ca403d5f69a3eb6e597830500","output":"0x21c5fdd9b4d576b17581f50b755482ba7a2134a3b5186e8e454acfa1f69511ab","gas_used":144,"gas_limit":1264784,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":21,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x60b97a2bdc471360c901f58eb3f22679fc24bd6bf6367e14a8a34744f29516aaa54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f56c07a65145c3cb48b6101962ea607a4dd93c753bb26975cb47feb00d3666e440421c5fdd9b4d576b17581f50b755482ba7a2134a3b5186e8e454acfa1f69511ab0300","output":"0x73c457ba541936f0d907daf0c7253a39a9c5c427c225ba7709e44702d3c6eedc","gas_used":120,"gas_limit":1264217,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","nonce":0,"gas_used":1135268},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1152a4","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x1e09c7d2881e6c3672e7715df0b439c4c782e6d58664ea625acf19ac3091cc2e","block_number":1}],"historical_states":null} \ No newline at end of file diff --git a/contracts/scripts/anvil/state/eigenlayer-deployed-anvil-state.json b/contracts/scripts/anvil/state/eigenlayer-deployed-anvil-state.json index 2d40bbe9aa..111ae08070 100644 --- a/contracts/scripts/anvil/state/eigenlayer-deployed-anvil-state.json +++ b/contracts/scripts/anvil/state/eigenlayer-deployed-anvil-state.json @@ -2,21 +2,18 @@ "accounts": { "0x0000000000000000000000000000000000000000": { "nonce": 0, - "balance": "0x1eded0a", + "balance": "0x2067b91", "code": "0x", "storage": {} }, "0x0165878a594ca255338adfa4d48449f69242eb8f": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x94af000f6f71feb2b8401e668d95fd208038580e89d240930f90ba827aa34858", - "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0x000000000000000000000000000000000000000000000000000000000000001e", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } @@ -24,13 +21,18 @@ "0x09635f643e140090a9a8dcd712ed6285858cebef": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033", - "storage": {} + "code": "0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff", + "0x0000000000000000000000000000000000000000000000000000000000000003": "0x54657374546f6b656e0000000000000000000000000000000000000000000012", + "0x0000000000000000000000000000000000000000000000000000000000000004": "0x5445535400000000000000000000000000000000000000000000000000000008", + "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff" + } }, "0x0b306bf915c4d645ff596e518faf3f9669b97016": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f0000000000000000000000000000000000000000000000000000000065fb788081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000076a70081565b6103e97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f0000000000000000000000000000000000000000000000000000000000093a8081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f00000000000000000000000000000000000000000000000000000000005c490081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000007a69460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f00000000000000000000000000000000000000000000000000000000005c490016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000278d00164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033", + "code": "0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -38,7 +40,7 @@ "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f0000000000000000000000000000000000000000000000000000000000007a6946036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -58,13 +60,11 @@ "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000000000000000000000000000000000000000", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } @@ -90,7 +90,7 @@ "0x5fbdb2315678afecb367f032d93f642f64180aa3": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033", + "code": "0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" } @@ -98,13 +98,11 @@ "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x5bc5b424ff8db9bd8202cae3beb193c946b905d8ebddb990e36a723af40eb1c4", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } @@ -112,7 +110,7 @@ "0x610178da211fef7d417bc0e6fed39f05609ad788": { "nonce": 1, "balance": "0x0", - "code": "0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe61614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000006059f46084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000006059f46061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000773594000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000007735940006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c0033", + "code": "0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -120,7 +118,7 @@ "0x68b1d87f95878fe05b998f19b66f4baba5de1aed": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -134,7 +132,7 @@ "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -142,13 +140,8 @@ "0x8a791620dd6260079bf849dc5567adc3f2fdc318": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000098": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x000000000000000000000000000000000000000000000000000000000000000a", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } @@ -162,8 +155,10 @@ "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033", - "storage": {} + "code": "0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } }, "0x976ea74026e726554db657fa54763abd0c3a0aa9": { "nonce": 0, @@ -180,7 +175,7 @@ "0x9a676e781a523b5d0c0e43731313a708cb607508": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -188,7 +183,7 @@ "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae": { "nonce": 1, "balance": "0x0", - "code": "0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -196,7 +191,7 @@ "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0": { "nonce": 1, "balance": "0x0", - "code": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033", + "code": "0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033", "storage": {} }, "0xa0ee7a142d267c1f36714e4a8f75612f20a79720": { @@ -208,8 +203,12 @@ "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } @@ -217,7 +216,7 @@ "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061103f5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806113bb5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" } @@ -225,7 +224,7 @@ "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" @@ -234,13 +233,13 @@ "0xc5a5c42992decbae36851359345fe25997f5c42d": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120001", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000032": "0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef", - "0x0000000000000000000000000000000000000000000000000000000000000064": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000000000000000000000000003635c9adc5dea00000", + "0x0000000000000000000000000000000000000000000000000000000000000064": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } @@ -248,14 +247,11 @@ "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x831f01b2aeb61d5d8c019704e62c25763057a8806c5c790bc8b4c99ee54ac8a7", - "0x000000000000000000000000000000000000000000000000000000000000009d": "0x000000000000000000000000000000000000000000000000000000000000000a", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } @@ -263,77 +259,77 @@ "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9": { "nonce": 1, "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000098": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0xd65ac9700cec4e530497617d02afdf0d5de3ed18466aca1578edcbce0d40ee16", "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82", "0x3d2729dff03bf559da35a983e55814217363c2a44a7ea59bdf688ab8754ea49d": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x6e45a9ad53caf7293849c96e5070a246e20a7cc2986b7660b3fb63e30ab898fc": "0x0000000000000000000000000000000000000000000000000000000000000000", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } }, "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512": { "nonce": 1, "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c0033", + "code": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x0000000000000000000000000000000000000000000000000000000000000001" } }, "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266": { - "nonce": 33, - "balance": "0x21e19a70f74d72dc33e", + "nonce": 32, + "balance": "0x21e19bf369abb666cb7", "code": "0x", "storage": {} } }, - "best_block_number": "0x12", + "best_block_number": "0x1a", "blocks": [ { "header": { - "parentHash": "0xe70403fd18eed35975aef85d0c451e71d41f2f325dc562c97b4a4a743f2a4c2d", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xe58232fe787789bd71910780e91c95377eb2c6ad960d55e8b8b5bfe560bb35d8", - "transactionsRoot": "0xae09874588844cccacf1cdc692ff78d3e575e8f7915644e9a7a1321814a7b1c4", - "receiptsRoot": "0x4a0994e7b89732d47885c059b01e4f296ee2e1b2067b4bc2457bdd3945760ca8", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000", + "parentHash": "0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x0e09d19a5de6c5552ea39fae978c1b998a7e0db7a1bc1a539d8f2e150c821cc1", + "transactionsRoot": "0x0625a40f3dbf197ade683e0dbbb4fa03437560568849e78c55551069bf942cd2", + "receiptsRoot": "0xd9aea2498f0b4dcc31cce14880a5dc3174000b41efa1db4e9f5e4d18de81648f", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0x2", + "number": "0x6", "gasLimit": "0x1c9c380", - "gasUsed": "0x65ecf", - "timestamp": "0x67db0553", + "gasUsed": "0x11ca7e", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x345fce36", + "baseFeePerGas": "0x1f256022", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x1", - "gas": "0x6b57b", + "nonce": "0x5", + "gas": "0xb906b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x608060405234801561001057600080fd5b5060405161075038038061075083398101604081905261002f91610259565b60005b825181101561006d576100658382815181106100505761005061033a565b6020026020010151600161007e60201b60201c565b600101610032565b5061007781610150565b5050610350565b6001600160a01b0382166100ef5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101be5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e6565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025457600080fd5b919050565b6000806040838503121561026c57600080fd5b82516001600160401b0381111561028257600080fd5b8301601f8101851361029357600080fd5b80516001600160401b038111156102ac576102ac610227565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102da576102da610227565b6040529182526020818401810192908101888411156102f857600080fd5b6020850194505b8385101561031e576103108561023d565b8152602094850194016102ff565b509450610331925050506020840161023d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b6103f18061035f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "r": "0x33711386ce008e0ed323d96d8e2c35c3eea246a000359e0f36e9b5080a0f80dd", - "s": "0x394ba0e41b96b68b05531167827f79603b2c416d5656c0241241adf96dc6884a", + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "r": "0xd8c2b63d4ea5678df5a3b3c3a54f2f281a0faf34d84c70fe5733edb1fbcf036", + "s": "0x3a6cb296c36023894ac7b4fac9d23fcd6ce4235af69b8fd797648976aefe1b5", "yParity": "0x1", - "hash": "0x36e493baf7271595140c6eb3ab0ad73f1a465f974b7f43e80bec732caa827f5e" + "v": "0x1", + "hash": "0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1" } }, "impersonated_sender": null @@ -342,17 +338,19 @@ "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x2", - "gas": "0x191db", + "nonce": "0x6", + "gas": "0xb906b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033", - "r": "0x6abf6e09b2d7f3e529085dddaf55820dd2677ce519861eb25047f7e020710484", - "s": "0x7a5e62198238b95e61f97fe50a43e62b5328079e6ba62f6eb6eb6793a77d2b52", - "yParity": "0x1", - "hash": "0x22a9f86b632e0721e86b2a5abace725309858cf2abca7c3f7f22df7902873912" + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "r": "0xf5cd16c26b469e91443738f252ed0785fe8e07b610c379acbd5129d580f91c2d", + "s": "0x64f8f9bfd494992228144fe016fb464d257f82a967c68b17803680d5d65057f1", + "yParity": "0x0", + "v": "0x0", + "hash": "0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e" } }, "impersonated_sender": null @@ -362,43 +360,93 @@ }, { "header": { - "parentHash": "0x27a45216e52e1cce5ed8ba0bef0ff498a221b2a693ff03100f51390309e95a2c", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x8d84b6e57eea5cebd478c57565bc8e8556c60556da230df1887d170c27e90446", - "transactionsRoot": "0x7f64d28ebb635688fcb09945d9efa50f8e058df1d8806aba928b84f414abb468", - "receiptsRoot": "0x2abfbf241f9fd99bd314dd397107048bfd4461fe7f16f96ad609685bb8001921", + "parentHash": "0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xe2cc5ca9fa3487c496989f0346a8a2665442a7e212a54e45e84286251e1550bb", + "transactionsRoot": "0x3372c01818e9245ab810af1f59cb4d0cc8989177cfc5342ad3314a826a7a1a5a", + "receiptsRoot": "0xe4d9f87c2251df5fabdf6908a74e34cbcda0ff6a3fed0c6876a8b0257c193481", + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000", + "difficulty": "0x0", + "number": "0x10", + "gasLimit": "0x1c9c380", + "gasUsed": "0x16fb3", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0xab1a7b5", "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ + { + "transaction": { + "EIP1559": { + "chainId": "0x7a69", + "nonce": "0x13", + "gas": "0x219c2", + "maxFeePerGas": "0x77359401", + "maxPriorityFeePerGas": "0x1", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "value": "0x0", + "accessList": [], + "input": "0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "r": "0x9e233353b3a57f549b17d147397a126b4709af4f202af934295fa111a4cd0b65", + "s": "0x6d8fa2e99e9e8bea7f8d4c060cb88af7c7e0a09c59d6ba15c54aba0d31738d5f", + "yParity": "0x0", + "v": "0x0", + "hash": "0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b" + } + }, + "impersonated_sender": null + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x00ff573085e925848f661f83d8f0487f2bf6dc5056ec3df9ae5d889383d1a5d9", + "transactionsRoot": "0x0a66023981b2bb760e188a49e893bd30541e5ccd332db35e5e19455b31e67d96", + "receiptsRoot": "0x3f2e168fb3528ba1f6f3ca73cb54735d6d9d339db4b54ba18ccf2e101940baff", + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000", "difficulty": "0x0", - "number": "0x5", + "number": "0x11", "gasLimit": "0x1c9c380", - "gasUsed": "0x8bf2e", - "timestamp": "0x67db0553", + "gasUsed": "0x1ca99", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x2462a14b", + "baseFeePerGas": "0x95d9880", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x9", - "gas": "0xb5dcb", + "nonce": "0x14", + "gas": "0x29eb2", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0x75f92751ed3d7537b5de53e3c0299383ac72b76e4a275e0fe031fa88fde7cf4e", - "s": "0x180b7ca9908cf48e1fcdfe0f76c20ef957de20eb35a2faf607e1430875f5370a", + "input": "0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "r": "0x3e9ca8eab1c79d16d09d4842f4b3c4cdb557034b3c9466e0e2e9808a44a88b9b", + "s": "0x4dd644048d69092834e7ef13d50a15243f8793d2013ccf45f057792c855dc505", "yParity": "0x1", - "hash": "0xece0fbed8cbdcfe3cf8a43c932bc41f5a9fe7f2dde7ab7cf4e99dc08ea3468f1" + "v": "0x1", + "hash": "0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca" } }, "impersonated_sender": null @@ -408,43 +456,45 @@ }, { "header": { - "parentHash": "0xee339008ac871962afd5a7e160bb491675bf7c59db2fcc55b3aeec9e3a53daa9", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xee354031feb1bf068341a19d9a593dcd042a3452fbb54823031054235114be37", - "transactionsRoot": "0x61500e3f4603ed215ca78fb848e44f63a0589bdf0e5668f45a0b15120ee78255", - "receiptsRoot": "0x2bb2403f19597d172b2cc8aa1599893e87e720894fcbc5e61d614f615aefd879", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xd86e5ef52e4886e70fa67640996cb42222e820d51672faacd7f0481826ded844", + "transactionsRoot": "0xacc68def3d9e61ce6b3d0269243e298b5ed840384efe67618164100af64f189c", + "receiptsRoot": "0x7682b2b964582de9cef13aa65d025b86fdf8df5a7d01c86e88eb53d8103c05f2", + "logsBloom": "0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000", "difficulty": "0x0", - "number": "0x1", + "number": "0x13", "gasLimit": "0x1c9c380", - "gasUsed": "0x6c389", - "timestamp": "0x67db0553", + "gasUsed": "0x1ba06", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x3b9aca00", + "baseFeePerGas": "0x72f5847", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x0", - "gas": "0x8ca6a", + "nonce": "0x16", + "gas": "0x2628b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "value": "0x0", "accessList": [], - "input": "0x6080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007a6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033", - "r": "0x363c7f14241cdfc26b710a503266f0cc236dcfaa041c0a45ab3a72335504c51d", - "s": "0x351be9499103db1ea7cb3d1ca934c1ccd2ea035669a26d272fcf7f883fd82d72", + "input": "0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000", + "r": "0x5e8286b9de9adbfb089cd99a2220229393e1e7d2650fbca67481e361f0873603", + "s": "0x478e2acc6420a5a8fdd508a4e3254942769194c5df2201e45456890bb7aa50fd", "yParity": "0x1", - "hash": "0x51e3b6ec5dce1003f9129d8ba4e6e8efe484f2334549a0618ce1c15d7e357f5f" + "v": "0x1", + "hash": "0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244" } }, "impersonated_sender": null @@ -454,62 +504,93 @@ }, { "header": { - "parentHash": "0x6f5c23d23cc1a6585e03a9255d0017fa2e89b1cb671629ef6ee84a9608a08afe", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xb564c05c18623774f460e1eb14403b676e5dc681d3734380e8801ae8e15ff197", - "transactionsRoot": "0x3ee4b26732cd372636de073575622b7aa437e89572212abf3bccadf747e6d4b6", - "receiptsRoot": "0xa837cedd8bbea6f0a77ddbb4ec5246d979d66d06aeeee352428152099ca813c1", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000080000400000000000000000000000000001001000000000000000000000000002000000000250000000010000000000400000000000000000000000000000000000000000800000000000000000000000040000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000420000000000001000000000000000000000000000000000000000000000001000000000100000000000000", + "parentHash": "0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xd1f37ba75ceac5487bd4f035b197f3a11ee309a8c280355b8182f576367152a3", + "transactionsRoot": "0xbc9be4f5bb5891d1117862fd392dd96b13886fda1804a15cad36d3582d14fdb4", + "receiptsRoot": "0x79ba9af9e95fe0e30a5ea15632b9e2ec0ee4c8ea1828c7733c617de4539a0750", + "logsBloom": "0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000", "difficulty": "0x0", - "number": "0x3", + "number": "0x15", "gasLimit": "0x1c9c380", - "gasUsed": "0x2bbbe6", - "timestamp": "0x67db0553", + "gasUsed": "0x16c6b", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x2e0279f3", + "baseFeePerGas": "0x5836638", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x3", - "gas": "0xb5dcb", + "nonce": "0x18", + "gas": "0x214f5", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0x7010d32e53c3de99ade90e4969b936bf774fa7ba08a70148efb95611f35d00d5", - "s": "0x5b017d16807d0f8c1e2e316aa8fd82bc12e79a7c98281c383ca0fa1e70411dbf", - "yParity": "0x0", - "hash": "0x270f5665c89b4abca1028c602097170fb3da69543a0a0d50d7b432b3900a04b6" + "input": "0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "r": "0x7645dba25806897f2124f5a883c1bfee4a3522656527c4e04d0543a372813936", + "s": "0x624a605a813c2b1e89b0292812f73badc67b3f5a64139b8adade61c4a671e514", + "yParity": "0x1", + "v": "0x1", + "hash": "0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9" } }, "impersonated_sender": null - }, + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xcc660d7020a09eee6f153229b728fa56ed083a7166917ff8d87e156acf1f5992", + "transactionsRoot": "0x87c3f680f05a19792ad28721b0facf62d90a7cf1ffce3d428edc69dee31a9c4a", + "receiptsRoot": "0x0237366e69bc915931d322ff3a745a35a614ce6220da7c2ef11f9cee6922e50e", + "logsBloom": "0x00000000001000000000000000000000400000000000000200000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000002000000000000000000000008400000000000000000000000000000000000000000020000000000000000000040000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000", + "difficulty": "0x0", + "number": "0x16", + "gasLimit": "0x1c9c380", + "gasUsed": "0x149917", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x4d41257", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x4", - "gas": "0xb5dcb", + "nonce": "0x19", + "gas": "0xdf2c", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0xbb3f68ee3180c27d72b405e0f026c2f0850752c24689f47c6e300eaa43515180", - "s": "0x34b3b278acb7bf45b95f7e3f8846f22f72104101a486fcfca6bf91b3cbf5799", - "yParity": "0x1", - "hash": "0x83cbcad6bf507df8c527396595303607713f92c0dfbcc85a90b9df7d1bc1d335" + "input": "0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed", + "r": "0xf409be770fe739b8a2ee8a623ae6bb352923fce56864df9273eedf0bd3991ab6", + "s": "0x59faad57fbbb66fd1d5bf7a0b084e2f8d065d974fe92e2d88e4d7b248a2bf73d", + "yParity": "0x0", + "v": "0x0", + "hash": "0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762" } }, "impersonated_sender": null @@ -518,36 +599,67 @@ "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x5", - "gas": "0xb5dcb", + "nonce": "0x1a", + "gas": "0x1a00a3", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0xf9e1bbefcc019cfa874d1f5ac222a36ced2ed0cc4b13cd84b61877f50c39bd26", - "s": "0x2aee156afee3ea63f31cbbca7e8c006e5cd7c52f14e0905f9d68adb01856554f", + "input": "0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0x5813b7e66820fb564867f92bd70a203e3c6e80ad44872f6bc5fbb862a5a5bdbb", + "s": "0x67a92aaaa11bda7ab36fb0c0af49f71681fe1954a73a8a9b94e6c23db8767748", "yParity": "0x1", - "hash": "0x38f2b8e4d56e8cd317b7ec6c7f676ead48e1c7c86e17619810ea766df8bea1cb" + "v": "0x1", + "hash": "0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349" } }, "impersonated_sender": null - }, + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x93a5a9a21983cfb2d0d9849a10d74056e3067fce770de838f00ad793bba3b810", + "transactionsRoot": "0xe1fc3e4ee15e07d06f46cfa389a0dec77fe9ff6261cdcaaca68a3a4e290a889d", + "receiptsRoot": "0xa0ffc9b392082d5dbea7889d3584cc1f6b59905563e2a26b7c3f99f007b9f626", + "logsBloom": "0x00000000000000000000000040000000400004000000000000800000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000001000000000000000000000000040000000040000000000000000104000000000000800000000000000000000000440000000200000002000050000000000410000000000080000000000200800000000000000000000000000000000400000000000000000000000000000000000000040060480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000", + "difficulty": "0x0", + "number": "0x18", + "gasLimit": "0x1c9c380", + "gasUsed": "0xae183", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x3c4f79b", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x6", - "gas": "0xb5dcb", + "nonce": "0x1c", + "gas": "0xda227", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0xec8f935496f4d6543cf6d50480ebfb79c485939c970903a225816fad6cb79c5b", - "s": "0x32773d528645b94728b83aa9c304e714ba65325ba91e0b69504510896524ee56", + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000", + "r": "0x68b93d78cde6ac2e94aee15e25eb2dde5876a9bc3c590f1982e4ef9e5d946fc3", + "s": "0x6b642bea701cf5fed80fc04caf6c2c1dfd03ac53676aa84b3673c875ed58675a", "yParity": "0x1", - "hash": "0xd4bc553858d9284ea2380fa803173ac8864efeb45752b89fc1ab2c45958a1d1d" + "v": "0x1", + "hash": "0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16" } }, "impersonated_sender": null @@ -556,17 +668,19 @@ "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x7", - "gas": "0xb5dcb", + "nonce": "0x1d", + "gas": "0x8b32", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0xbdeca6fc6c63bcaa9fa5c0c7d2c32314ae2e759375e86b55bf37e90dff1a8c09", - "s": "0x3af0f51f632c8f7bde3d4406ee621f7d99448c0fc8097bdd4f6bbbb43059a3db", + "input": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "r": "0x2e5ac093e1dc518caaf2a9314f613b2ca47e74442103a64e688569a67cd6a90e", + "s": "0x1c5cec4d49ac2619aa60c91c66c755ed5627efb23581a34d0e7f3e312466596b", "yParity": "0x0", - "hash": "0x836a4ac02c16fb1dbcfa393cd13acedc12dabdd7dd96484031d8211cb9f67a38" + "v": "0x0", + "hash": "0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173" } }, "impersonated_sender": null @@ -576,43 +690,71 @@ }, { "header": { - "parentHash": "0x5a7a3e18533c10d9e81916d33460352c00313b7387d53d582fc75258d878e46e", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xb6a0cd8a792898f54e042961101f2b5c9b6c37a7e2d21069f49a3e907a697e47", - "transactionsRoot": "0xc26742ec3f975b67bc6157526ce183a477c960802c921af13bf6134684d51129", - "receiptsRoot": "0x0bb7fad9b80eba480248a78d60604d27fc039de240d3ba99f6e43b3683fe6bae", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x0", + "number": "0x0", + "gasLimit": "0x1c9c380", + "gasUsed": "0x0", + "timestamp": "0x68238dc4", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x3b9aca00", "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000480000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000020000000000400000000000", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [], + "ommers": [] + }, + { + "header": { + "parentHash": "0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xbd09368e8ecc4c96fc1760e7677be02dd27c0c58aa739eaf9244b16347239c50", + "transactionsRoot": "0x02ea02feae1c7c080f2d1325ea0afc7b27dc67ead8cf7156cc8394674bc9a042", + "receiptsRoot": "0xa846cf60ed497420ed2569067e2280aa70704a8e2abd2ee3e47d6fe6603a5f6a", + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000", "difficulty": "0x0", - "number": "0x7", + "number": "0xc", "gasLimit": "0x1c9c380", - "gasUsed": "0x92cf5b", - "timestamp": "0x67db0553", + "gasUsed": "0x3a1ea5", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x1d7803e5", + "baseFeePerGas": "0xfa331d2", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0xc", - "gas": "0x643a2f", + "nonce": "0xd", + "gas": "0x31b28a", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x61010060405234801561001157600080fd5b50604051615c04380380615c0483398101604081905261003091610135565b6001600160a01b0380841660805280821660c052821660a05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516159ee61021660003960006126560152600081816105b10152818161101d0152818161139901528181611be5015281816129b001528181613e5b0152614347015260006107620152600081816104f901528181610feb0152818161136701528181611c7901528181612a7d01528181612c0001528181613f8101526143ed01526159ee6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061103f5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113bb5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f00000000000000000000000000000000000000000000000000000000000000004603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "r": "0xf4d2772b8feff12a100c8117b799a4b3300c5538f2e728e210aaee0e2b39a57f", - "s": "0x677e5498ffc923f108605ff5014f4ec3d7efdc63254091430d00ef0487c27b3c", - "yParity": "0x0", - "hash": "0x851c5b070f316830eef55c050a3ada207080c56674c175fb21f47a8f4a5dfb21" + "input": "0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0x615e45fdd1e541f669ac74f9f28f695014444e83e50031bb026e0ce9a19927e3", + "s": "0x46c9a9fb5a4606d9dd995ee097ee7c75d8fbaffed22c3ec96b95414fb102e237", + "yParity": "0x1", + "v": "0x1", + "hash": "0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b" } }, "impersonated_sender": null @@ -621,36 +763,67 @@ "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0xd", - "gas": "0x3812c7", + "nonce": "0xe", + "gas": "0x19dbb2", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x61010060405234801561001157600080fd5b5060405161337a38038061337a83398101604081905261003091610135565b6001600160a01b0380841660805280831660a052811660c05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516131a36101d760003960006114b70152600061046e0152600061028501526000818161051a01528181610b8201528181610ecf01528181610f230152611a6c01526131a36000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f000000000000000000000000000000000000000000000000000000000000000046036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", - "r": "0xf2b0c683ffce5561b6253e4cce62783314c9fbfbcf1cc1bd6d305ad61d1b2fcc", - "s": "0x6b90ef25afa7f30f22728280ea948889d5fbef57764d317979ff5af32aea6d57", + "input": "0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0xb95b51d92cbdc531a0cef68b4df15a21ffec7599acf3435df22f8129ca117db6", + "s": "0x1419604921d9b98927b52ce4ef8ce91e497541de3c79b305323ceb2074815cbf", "yParity": "0x0", - "hash": "0xeea9931d6e3a2988ca9384428f505cc53b54c9b25f97fd5f0d4c384cda39370a" + "v": "0x0", + "hash": "0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8" } }, "impersonated_sender": null - }, + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x0510d0890d18539d33f28fc9d338c95b0fdf42c6d71733fee837b25c714418fc", + "transactionsRoot": "0xda32dd4f2a67c950235982c9dc99650577fd650e5a88d87fc21a865bfdeccda3", + "receiptsRoot": "0x2fa2efc1cd5d57b505c544a356f63089306cf0752b8d1a6e642cdc6dab9e85f7", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x0", + "number": "0x8", + "gasLimit": "0x1c9c380", + "gasUsed": "0x8e53f", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x183eac51", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0xe", - "gas": "0x227f19", + "nonce": "0x8", + "gas": "0xb906b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x60c060405234801561001057600080fd5b50604051611f65380380611f6583398101604081905261002f9161010e565b6001600160a01b03811660805261004461004e565b504660a05261013e565b600054610100900460ff16156100ba5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561012057600080fd5b81516001600160a01b038116811461013757600080fd5b9392505050565b60805160a051611dfb61016a6000396000610ea501526000818161032401526109810152611dfb6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f00000000000000000000000000000000000000000000000000000000000000004603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "r": "0xa230281361ccbca8e5eeca7185a2fd29c5867f93cbf4017a1e5ce3e8d1aaad13", - "s": "0x17c44d2762d98a9df789c83904b28fc8a0bf11de8a3b64ff2e3d4618396a191b", + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "r": "0x5ffa8667f85c28bc1f36ef1179b97a60ecfc98f1dabe3801419d470132cdafaf", + "s": "0x60e45209c4f5e81198a887a292ceddce57b7902b5617bbc8bdb712692e15242c", "yParity": "0x1", - "hash": "0x37b270d09383137c71efb1453b09fc01c5a7173589ff736977637bf494b56cdd" + "v": "0x1", + "hash": "0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1" } }, "impersonated_sender": null @@ -660,62 +833,93 @@ }, { "header": { - "parentHash": "0xe8f1fde659ea68d923d7994dc04a673f0f91b8fb184302f7d70735f91a37d594", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x082c004634209f786ff88f1cdbf46ac1a9157daaf577151eb86740a684d463b4", - "transactionsRoot": "0xe418b240f03aab4dfd7b227fbc35551d6e2ab4bbd89658f1e1aa6be1fd02eda1", - "receiptsRoot": "0x3249a512209cbf45715f343512dbd32f668395f73a9e164baf79628faecf70f7", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xeea0cf337f58440d64dde0356dd4ee7b4f65db83b2c7b3bdeb917eca4d7e19cb", + "transactionsRoot": "0x003cf6847d199fc3a0a7bcc16fe99b5729696eb6e600887622bdcb1fe8555159", + "receiptsRoot": "0x7d94aad6acf03e3a33f2388fd3aa1536fb20a3e37b2d5c4fb8a9c4c8f880041e", + "logsBloom": "0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000", "difficulty": "0x0", - "number": "0xe", + "number": "0x2", "gasLimit": "0x1c9c380", - "gasUsed": "0x1dd7a5", - "timestamp": "0x67db0553", + "gasUsed": "0x45cdf", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0xdd1c92d", + "baseFeePerGas": "0x345de6be", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x1a", - "gas": "0x2011a3", + "nonce": "0x1", + "gas": "0x5abee", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x60a060405234801561001057600080fd5b50604051611d33380380611d3383398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b608051611bc761016c60003960008181610216015281816107a801528181610b490152610c130152611bc76000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9", - "r": "0x44422573f02540503f4311a9f3fe550be1a86743be96bd1d59e08223dd6335a8", - "s": "0x4d50fa6deb86a2f24db740fd1b2371e5531aa1965965f71a721d16b5eeccee99", + "input": "0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "r": "0xf03f02f23fb83bbf12c56b7acb7677870073673fe17e05dabbb4de8cfe15d9c", + "s": "0x72c7ef4fc448b5c732204282a0bd53208e8fb3b5bb9018c9388bc0dab8cc799", "yParity": "0x0", - "hash": "0x414c1ede6b128e717c1643ab40a93b262507151357271cb4d904c1961d7d7b18" + "v": "0x0", + "hash": "0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39" } }, "impersonated_sender": null - }, + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x37977e14f043d7c0313bdf337e8ff324b3028017795da6286bacf0c59dc9ffa2", + "transactionsRoot": "0x70477c0d59fabbb248f7e17646c3d5a328348dbc15d4428106abe2084f1002a6", + "receiptsRoot": "0x205ca2480444d24376d9ba2e6e577a68de995c60a2f8f5102510380aa0c61c28", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x0", + "number": "0x9", + "gasLimit": "0x1c9c380", + "gasUsed": "0x8e53f", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x1554fde5", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x1b", - "gas": "0x6b713", + "nonce": "0x9", + "gas": "0xb906b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x6080604052348015600f57600080fd5b506105298061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033", - "r": "0xe9b95906216f312ac6ba6e2f49fe4e2ec42f1eef4e648eccfe0c15556e4aef54", - "s": "0x137b091a39020f772abdb8b60bfe0c2dbd5a8484cf52f3cf230b479e3c368051", - "yParity": "0x1", - "hash": "0xbd915f86d3825918e7b3e23f3a26470ab72a7643e95da39926f2f79c5e79e809" + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "r": "0x85b7e3b3941d20b6d399fead20007319620283869df3674a6faad28ab0f3a1e4", + "s": "0x5960ddb83a4133431b104428382259ffcbf973a2a13a496aa45a330255258995", + "yParity": "0x0", + "v": "0x0", + "hash": "0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967" } }, "impersonated_sender": null @@ -725,43 +929,45 @@ }, { "header": { - "parentHash": "0x81783d9d97c1968230d9d30cfdaa4670bb20c462f55b2c8713d06d119b5de3f7", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xf6854b16cb6f651e97a01205399601aaf0f3e1e13009e5467548c986747072f7", - "transactionsRoot": "0x01ace2e56ddb3a8bd5ac3d6b852eef1bcd21094286aa4b697194cb7cc3f27a65", - "receiptsRoot": "0xa68a67dce4aaa04d6edf9c1ac958dbcb7e48099173e10cf31b7f97c3ab596fc5", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000000000000400004000000000000000000000000000000000000000000000400000000000000400000000000000004000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020080000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x61f96951e009c3faca9e22e668c334f96cf8613f2b96823c4fcefc338c12cef7", + "transactionsRoot": "0x03d80393ecceed2a0703081585e6bb1140c62d91dacbac962118a9617213b4de", + "receiptsRoot": "0x37d1079b247362deefb299371a192c8e1e832cf149b0a85714b45eaa1d4e8d69", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0xf", + "number": "0x17", "gasLimit": "0x1c9c380", - "gasUsed": "0x8bf2e", - "timestamp": "0x67db0553", + "gasUsed": "0xac0b6", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0xc51389c", + "baseFeePerGas": "0x44777b3", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x1c", - "gas": "0xb5dcb", + "nonce": "0x1b", + "gas": "0xdfa86", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0xef20cbe4386a5e2c3a61dea0f1bc86a5dafb9af35a2ba65f20ff3d604c92dc81", - "s": "0x7023303ac677b33a3199e9e5d77edd07b3bfc09895dbd6e01c41d21fdaf8672e", + "input": "0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000", + "r": "0xe7ef9e36a49166ecac6f5f20e2aa0ce5d98b16dddcd804c7061202968b356a2", + "s": "0x44448a124bbb0c10d2cd959bd2fa37b277cb2aa090f77a9c1b3c3c63b6d65ea2", "yParity": "0x0", - "hash": "0x2c639a7ffaf188e645bdd0f62c0f0b303593a3b144b04842affe5a3b4f3f4eef" + "v": "0x0", + "hash": "0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0" } }, "impersonated_sender": null @@ -771,64 +977,93 @@ }, { "header": { - "parentHash": "0xcc694f0b3b0405bba2ef2fabf68314f0ccd5a2f46fa295879dc7667bc5089867", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x7ca26fc9ac9e2d48342b59d744d72ddadff420383ddba63ba3aaac117ae58ed8", - "transactionsRoot": "0x3be2e91ca1599c737d0c5e0f197b61541de2524a361e3ba6f514611dd00a91fd", - "receiptsRoot": "0x3f1e3cf4feba0c314d3480c56f3164847b963f6238e69834df0900fd7c7bda37", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000002100000000000000000000000000002000000000400000000000000000000000000000000000000000000100000004000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002020000800000000000000000000000000000000000000000000000000000001000000000100000000000000", + "parentHash": "0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x557a45ccbf10c0042bc368d5b9e9261ab119730e3d1bd8238ab410ce49ec9d0b", + "transactionsRoot": "0x51cc111f3930a241e139b909deaca9e061d655c780591e8c320896084262a6af", + "receiptsRoot": "0x64fcbf1f14419d9cb04b2c392726da6dfbd58f1b0a35ae979e1c88b8f970eeaf", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0x11", + "number": "0x3", "gasLimit": "0x1c9c380", - "gasUsed": "0x15235", - "timestamp": "0x67db0553", + "gasUsed": "0x131eb", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x97ea63a", + "baseFeePerGas": "0x2df21af9", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x1e", - "gas": "0x15b37", + "nonce": "0x2", + "gas": "0x18db1", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "to": null, "value": "0x0", "accessList": [], - "input": "0xdf5b3547000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", - "r": "0xdaeb2a4acde0a569e0b0c8f5bb5509413a47c007de0f22b2effb3e935bdb203b", - "s": "0x368e5050d975862c128fe3983107c1808f99fb459612cc981d12161d6281731e", - "yParity": "0x1", - "hash": "0xd44073f051108c8f3c39edf183d0bcaea084672b414c2374c6d6750e9ef9fa27" + "input": "0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033", + "r": "0x834692aa575929c82e8cac73f8a76544f72561dca8706328663a96fc88199372", + "s": "0x67fa29bd66c480e0eea2edc7f189cc2e3982fba6ce4d67184e2471a57eacb219", + "yParity": "0x0", + "v": "0x0", + "hash": "0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67" } }, "impersonated_sender": null - }, + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x097246291c63ec89ac732b0971312abb9c0d43047ed0665d0e84180716be15dc", + "transactionsRoot": "0x232ce2d80081c4dec373c3dc73802eb87f76b68ab38ec539c97ecab12802387c", + "receiptsRoot": "0x664d1e5c403fe20ed39b792a4ffb6fa283d9c9c7aa04034e1265adb4f5bdffbb", + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000", + "difficulty": "0x0", + "number": "0x12", + "gasLimit": "0x1c9c380", + "gasUsed": "0x16c80", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x8343dee", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x1f", - "gas": "0x9368", + "nonce": "0x15", + "gas": "0x1f777", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "value": "0x0", "accessList": [], - "input": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "r": "0x51fdc1671286a48495d3af4d1b5fd6bad2e3d25fbf027be013a666f3b5e698bc", - "s": "0x3bfabc59a357de3c51aed3025d9924e12f8c7b589027430904c137a74f498ca6", - "yParity": "0x0", - "hash": "0x046411743d2c08a8f69f7117e4aed15eb84999f401e950cafac8436c9d2c04d8" + "input": "0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "r": "0xcfa3a86407e9b125377e96787848e6fa8ad51ec3c673926c82b462f642722d35", + "s": "0xa066c8b4d2d4a383eadf8e54015dfcb5451a73ae51b6536f1acc45f2d79c4e7", + "yParity": "0x1", + "v": "0x1", + "hash": "0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321" } }, "impersonated_sender": null @@ -838,101 +1073,93 @@ }, { "header": { - "parentHash": "0xf4d46b6b8dbbe4e745dc4c6a56bc046bd6591c7d62dab08422124ab94c13e667", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xbee04a7af9684fdb705c7e39c940f4eee485e54bb234602801b610b8d4819b88", - "transactionsRoot": "0xd637aa3f4f6078a606daf5ea09e117e9fb43f0a935091579752cfca948505428", - "receiptsRoot": "0x1ce871c22568b6e3e6e78896f8c5319b33636a8ae237d4f1260d07ade85cdbc3", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000001000000000040000000400000000000000000c00000000000000000000020000800000000020000080000000000000000100000000000000001000000000000000000000400000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000108000000000000000000000000000000000080000000000000000000000000000000040008000002000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000100002000400000", + "parentHash": "0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xd11edc81769df477541ba906c5be356b0e310e552d66d51ce5f711eadd1b87f9", + "transactionsRoot": "0x98ae4d0bb6c4baabf6d297530263ce1584a3a8137a459fe6a49443ce1149e8a2", + "receiptsRoot": "0x4223463caba1338f68d89dd5e9c61433b6e988c5c886294562d1f93362c77fa0", + "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0x9", + "number": "0x19", "gasLimit": "0x1c9c380", - "gasUsed": "0x54e190", - "timestamp": "0x67db0553", + "gasUsed": "0x64c0", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x1965fa8c", + "baseFeePerGas": "0x35214a0", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x10", - "gas": "0x10d845", + "nonce": "0x1e", + "gas": "0x8b29", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", "value": "0x0", "accessList": [], - "input": "0x6080604052348015600f57600080fd5b50604051610ee6380380610ee6833981016040819052602c916049565b5050607e565b6001600160a01b0381168114604657600080fd5b50565b60008060408385031215605b57600080fd5b82516064816032565b60208401519092506073816032565b809150509250929050565b610e598061008d6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "r": "0x60ec39c231008e6a2fe67666733536fa6ddbdbbfaa628606f8fa92dfff0abcf7", - "s": "0xd01625f83cdc81c0267f5a61165babd7a92d463c355107b427eee8934ae0e34", + "input": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "r": "0xba35e620fb2e67e4840da54c31385b537bf8cb9aa6ecc8e7e94fad20038204f9", + "s": "0x176cfd5f089d20eee7efa6909688cad1c012489090f6a4e51c71c10cc7d97469", "yParity": "0x1", - "hash": "0x34fb9442d5a4081b3e20e2767849dfaf2e3451f57b8ca3cee2259ebae4852745" + "v": "0x1", + "hash": "0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138" } }, "impersonated_sender": null - }, - { - "transaction": { - "EIP1559": { - "chainId": "0x7a69", - "nonce": "0x11", - "gas": "0x38eed1", - "maxFeePerGas": "0x77359401", - "maxPriorityFeePerGas": "0x1", - "value": "0x0", - "accessList": [], - "input": "0x61012060405234801561001157600080fd5b5060405161349738038061349783398101604081905261003091610140565b6001600160a01b0380861660805280851660a05280841660c05280831660e05281166101005261005e610068565b50505050506101b5565b600054610100900460ff16156100d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013d57600080fd5b50565b600080600080600060a0868803121561015857600080fd5b855161016381610128565b602087015190955061017481610128565b604087015190945061018581610128565b606087015190935061019681610128565b60808701519092506101a781610128565b809150509295509295909350565b60805160a05160c05160e0516101005161326d61022a60003960008181610636015281816106e001528181610b0e015281816113ea0152818161187e015261196e01526000610542015260006102e601526000818161027a01528181611369015261203c01526000610414015261326d6000f3fe6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c00330000000000000000000000004242424242424242424242424242424242424242000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "r": "0x18960edaf319a6de3f305eafae4c5e5c7fd4159e809674fe1f6956774a71138e", - "s": "0x45f2408f10ccf895a973164723d38495a379a6dcdc9a9a0fef8d8a7204d64b0b", - "yParity": "0x0", - "hash": "0xeb68aa080bba327cb447d95bedd671e9f3293000352a012572c6fbb9b8b7fa7f" - } - }, - "impersonated_sender": null - }, - { - "transaction": { - "EIP1559": { - "chainId": "0x7a69", - "nonce": "0x12", - "gas": "0x213d91", - "maxFeePerGas": "0x77359401", - "maxPriorityFeePerGas": "0x1", - "value": "0x0", - "accessList": [], - "input": "0x60a060405234801561001057600080fd5b50604051611eb9380380611eb983398101604081905261002f9161019c565b6001600160a01b0381166100c55760405162461bcd60e51b815260206004820152604c60248201527f44656c617965645769746864726177616c526f757465722e636f6e737472756360448201527f746f723a205f656967656e506f644d616e616765722063616e6e6f742062652060648201526b7a65726f206164647265737360a01b608482015260a4015b60405180910390fd5b6001600160a01b0381166080526100da6100e0565b506101cc565b600054610100900460ff16156101485760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bc565b60005460ff908116101561019a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156101ae57600080fd5b81516001600160a01b03811681146101c557600080fd5b9392505050565b608051611ccb6101ee600039600081816101fa0152610be00152611ccb6000f3fe60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000000000000000000000000000000000000000000000169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c00330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "r": "0x7076b7225a2d4dd4a63a72b60f5e7f1a0dcc0510d153cd8e666eeff267dd664e", - "s": "0x1247f35e7e1b05a85ea3c6d097d68d8fda29be88dd3d6bb6e7cc0afc812cea59", - "yParity": "0x0", - "hash": "0xd731646803dbeb86f6882b501adfb712ddd0c0ab58ebd0b070794de92c7777b6" - } - }, - "impersonated_sender": null - }, + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x819755d440401992f7d746d3bae845d75c443fab504ea2248b5cb8874ca78eb6", + "transactionsRoot": "0x8a53916f6a4ee035fca0c8e94b8a64c214db1d8ebf695e29c984f340577fa902", + "receiptsRoot": "0x43eb13d2729197f55fdb1dbfad7317a2c2bba461bfe6e588921ed0466c8072cc", + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200", + "difficulty": "0x0", + "number": "0x14", + "gasLimit": "0x1c9c380", + "gasUsed": "0x1db2b", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x64b2945", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x13", - "gas": "0x3806e", + "nonce": "0x17", + "gas": "0x2b6ee", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "value": "0x0", "accessList": [], - "input": "0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010422bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "r": "0x78419f01e64a4dc882522d491d00f3dc6cbdfb1331764afd3a2ced7ed97bbf79", - "s": "0x5804ad26a7d1063df47223727def106f21b785c488140e47d179ae281f9ea406", + "input": "0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000", + "r": "0xca8b2bef1a770b1d34f66e5f3542eab9c87ec05107a2cb674dc669b39f15251f", + "s": "0x71a047a195d82893fefe346cdfaa383bf00329de8336ac7db73403ce8e80f075", "yParity": "0x1", - "hash": "0xb6a38a3d8da1705b9b28d965f44c38bad15f54d84fdaf02eac16b102176b150c" + "v": "0x1", + "hash": "0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b" } }, "impersonated_sender": null @@ -942,64 +1169,93 @@ }, { "header": { - "parentHash": "0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xe88d71ee7e8bad78e4747fc04c585a7b53bd2f42c75a8e5fa809f94fa05768b6", - "transactionsRoot": "0xe79fc5ef0c818c2913467fac6fd8801ab8822c5572d659880264e005d298c91c", - "receiptsRoot": "0x34d63a3680b3802b85debef82a2c6989208e9ae96e9312085635ef5897eba086", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000010000000000000000000000000000000000000000000000100000400000000004000000000000000000000400000002000001000010000010010000000000000000000000020000000000000100800808000004000000000000000000000000400000000100000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002228000000000000000020000000000000000000000000000000000000000001080000000100000000400000", + "parentHash": "0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xd49cb1e6c4d63abe3eea23ee8214311ec5c783fb0c1ae69c27b84516c3d7d689", + "transactionsRoot": "0xd3d99613a4add2901dede645f3670036418ee0e11a422d217cd6e902720de8dd", + "receiptsRoot": "0x2fe61838dff500688c03ba0736cc804e62904b8a776a45fe42cca7e82c23c3b1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000", "difficulty": "0x0", - "number": "0xa", + "number": "0x1a", "gasLimit": "0x1c9c380", - "gasUsed": "0x32a44", - "timestamp": "0x67db0553", + "gasUsed": "0x130b8", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x1766a3c3", + "baseFeePerGas": "0x2e800d3", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x14", - "gas": "0x37899", - "maxFeePerGas": "0x77359401", + "nonce": "0x1f", + "gas": "0x13c46", + "maxFeePerGas": "0x6a42941", "maxPriorityFeePerGas": "0x1", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", "value": "0x0", "accessList": [], - "input": "0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "r": "0x7ab46d716e66c3eeb4a6ceb26eee70c1f5ef89a834687f21985a46fc77ec5e64", - "s": "0x390c491ccb1362f86e47b10cffd0ab9428bcd25ea1067311a11d8b4d997d0260", + "input": "0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d", + "r": "0x27e0a78db3f7be6c0687bf6bc80939f2e6134a353eb044328ff0b40ab6e8791", + "s": "0x66db0351bc1a675318695fa6c86cd35c73cf98b013aa4d5330ce52763e41d7e1", "yParity": "0x1", - "hash": "0xfd0cd693bcd0f6192a593b8edcbcfd149e34e760aca4b512b7292d66dff4c2f8" + "v": "0x1", + "hash": "0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727" } }, "impersonated_sender": null - }, + } + ], + "ommers": [] + }, + { + "header": { + "parentHash": "0x7874f4a939d9c557f447f6dbae2eeb126466118c85334de819c1e99e54f4422a", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x5068850e93df3483edd34c07d9cff66027bceba7b3ad7e23d8308f88dc79424b", + "transactionsRoot": "0x41f35302ef5cf5b6c498c1a81ed10c4d70d5604f52df85ee70a0950fab24e380", + "receiptsRoot": "0x78b8188d2d51db91c774a3ad0c4af02f42f8cccdcf23ac9382e09e36c9be5caf", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x0", + "number": "0x1", + "gasLimit": "0x1c9c380", + "gasUsed": "0x6890a", + "timestamp": "0x68238dc6", + "extraData": "0x", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x3b9aca00", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x0", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x15", - "gas": "0xe692", + "nonce": "0x0", + "gas": "0x87ef3", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": null, "value": "0x0", "accessList": [], - "input": "0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "r": "0x5f44cefb759d52a39147633a4bffe9cf3a873902abed2277084b63e9ef2ff757", - "s": "0x342c1e6c76de08e20423d316dd192a43702c63b8c2825043d3b0dcb69d70f5db", + "input": "0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033", + "r": "0xad141f355928da088aeb1c1cd80e579eae7f6e761fd49ba5c913837260e10eaf", + "s": "0x4d96223d3fe36cea3dfea510c0c4ec09d78112b90b7d04af7f9387f7a6a1aa47", "yParity": "0x0", - "hash": "0xdbeaad0376d936df8f5bb54707e0b78789158df3505b3401a68e8d7b418ccad3" + "v": "0x0", + "hash": "0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66" } }, "impersonated_sender": null @@ -1009,44 +1265,45 @@ }, { "header": { - "parentHash": "0xf75a7a59382e0738da333f3d7ae4ad35b1e26563e6d9409cf8130b2641eee215", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x240603a7bea698de3f2403e7a1b9261706a6acebc3966ae340500e211168629e", - "transactionsRoot": "0x2be7553a5865adbc6bff815f04f505c924560d3c96a50089e7cffa58510bcdcd", - "receiptsRoot": "0xe8296af17e54e8f4a8746cf8b3b1e0c54684b30b6d2ec46e28d7849a63f486e4", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000040000008400000000000000000800000000000000010000000000000000000000000000000000000000000100000000000000000041000000000000000000400000402000001002000000000000000000000000000020000020000000000000300800800000004000000000000000000000000440000000100000000000000000000000000000000000080000000000000100000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008002000000000000020000000000000000100400800000400000000000000000000000000000001400200", + "parentHash": "0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x31bc1819fa24e471c3b4238d13124e03aa0512e947c413da856b85839b7096ca", + "transactionsRoot": "0x81002360790b630320c7b5882f64fbef65f764107c3608acac461eb8ced201ad", + "receiptsRoot": "0xed4257cf3242f330e62e6e07ed62f793c3817312e970b82edba27d01cf0f853e", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0xc", + "number": "0x4", "gasLimit": "0x1c9c380", - "gasUsed": "0x29509", - "timestamp": "0x67db0553", + "gasUsed": "0x8e53f", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x11f9ca37", + "baseFeePerGas": "0x283b84b9", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x17", - "gas": "0x3c6c3", + "nonce": "0x3", + "gas": "0xb906b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": null, "value": "0x0", "accessList": [], - "input": "0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c4d4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000", - "r": "0x7e791feb791c6a1b5c06945c2e1e6b420cc1b666ec0b184ce951a8dd6034f2b", - "s": "0x33920b9f39f3dfb6806b1aa4cc3b780b3e97c41a414b396ba34e713c89f41804", + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "r": "0xd1f94bf3ed74bb11a4a36509d9dda373c1e12363a4dcfe24af54aa03511f1c7a", + "s": "0x27b9ee82d0d5a4302f3965c8a347494c4d9a501500e78bd809b0952bd212ae94", "yParity": "0x0", - "hash": "0x70bb1d58f6521a3b3c19dd151c65f4903e57a4c0979f69d1d5d1ebc8e9929cfc" + "v": "0x0", + "hash": "0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10" } }, "impersonated_sender": null @@ -1056,44 +1313,45 @@ }, { "header": { - "parentHash": "0x9c3ef5b4d659952b184d2b6e033f739e0bb5933a43d84118ce3f08a7c369e0db", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x4b14cf1c85a190c223bfa2afeeff653b48a6516315fdb4bc67623c8451322860", - "transactionsRoot": "0xf713d5bb1159eb9c41b0ea07f5a0c3df8f1ea3c4d6079d7eddf237c83b9601cf", - "receiptsRoot": "0xb12a47d135f48ffa524c6a54f2b1b66742e30f6d85e10126f70dd8f40b30644f", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100100004000000000000000000000000000000000400000002000000000000000000000000000000040000000000000000000000000004800000000004000000000000000000000000000000000300000002000040000000000400000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000040020480000000000000000040000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000400000", + "parentHash": "0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xbd5494d2b153b9e294bddf1a234aada9c10f35b7c1c98076433df4167fce2b50", + "transactionsRoot": "0xc366bd69c20423c6e1759d44e28cb849d1edf6c77bcc7d2656a8f9b055b0c2f3", + "receiptsRoot": "0x61963e6ecc4c0a12560a30265e9dcab7f3aa4f82f1e8f15484b9b2f6f5ec016e", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000", "difficulty": "0x0", - "number": "0x10", + "number": "0x5", "gasLimit": "0x1c9c380", - "gasUsed": "0x22aff", - "timestamp": "0x67db0553", + "gasUsed": "0x8e53f", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0xad62194", + "baseFeePerGas": "0x23661d70", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x1d", - "gas": "0x2fe95", + "nonce": "0x4", + "gas": "0xb906b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": null, "value": "0x0", "accessList": [], - "input": "0x9623609d000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000", - "r": "0x179a240390eccd825e3af3889b83756d8100c03c22f680a43c09ab7c3dbeb233", - "s": "0x2b8e64c68d4e5e5ba82859eca5e1635f1087f352417361305ac60d3f4057143d", + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "r": "0x195ded3e07fbfe4e085babca622696a5913ddb617299f87284d2bf2cfa9c0de4", + "s": "0x190a3a6f244b2f888f4ed3a82788243aa5bf35015a6e493726a205cef25a46ee", "yParity": "0x1", - "hash": "0x8d7d689b5e7498d26362ee52308da636bcbbe413fa03ca37f136aa3bcb8cda91" + "v": "0x1", + "hash": "0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57" } }, "impersonated_sender": null @@ -1103,62 +1361,45 @@ }, { "header": { - "parentHash": "0x593eb383f76146cd7d31e8dcede81a18678d924393e73548717d40b79427fc5d", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xe044864a68280853170c2969a42f527192b9744a31f8278e4d69186b38690e80", - "transactionsRoot": "0x10e45c3179bea6d242e4fb03be9cc6c86689e3f5bd2c2a1632245ede6355d5ef", - "receiptsRoot": "0xf1a90813f29a82d093fdffda1079f1666e6511e070c4f5478dfc474205fb305c", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000200000000000040000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x6ecf46a2ae2943565cd6996c1a1d099beb79a7d98c94079a0132d935dcf8c0ed", + "transactionsRoot": "0x4340b45735d08f706166d4e3abff3a620f0848110ecde7c73b43cbd0b93a35c6", + "receiptsRoot": "0xf864c8d5281f6ff30ad43286be885f326150528aab26746ec850a58cb5c9d58a", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0x6", + "number": "0xe", "gasLimit": "0x1c9c380", - "gasUsed": "0x537874", - "timestamp": "0x67db0553", + "gasUsed": "0x3de98b", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x2002cbe8", + "baseFeePerGas": "0xcb3f9a3", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0xa", - "gas": "0x66c1e5", - "maxFeePerGas": "0x77359401", - "maxPriorityFeePerGas": "0x1", - "value": "0x0", - "accessList": [], - "input": "0x61012060405234801561001157600080fd5b50604051615f0f380380615f0f83398101604081905261003091610163565b6001600160a01b0380861660805284811660a052831660c0526001600160401b0380831660e05281166101005261006561006f565b50505050506101d0565b600054610100900460ff16156100db5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561012d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014457600080fd5b50565b80516001600160401b038116811461015e57600080fd5b919050565b600080600080600060a0868803121561017b57600080fd5b85516101868161012f565b60208701519095506101978161012f565b60408701519094506101a88161012f565b92506101b660608701610147565b91506101c460808701610147565b90509295509295909350565b60805160a05160c05160e05161010051615c456102ca600039600081816105b501528181612007015281816120be0152612116015260008181610275015281816125a7015281816125db01528181612c0701528181612c340152818161437a01526143b501526000818161036d01528181610614015281816107a701528181610aef01528181610c3a01528181610dc201528181610f7d0152818161115e0152818161128801528181611459015281816118a601528181611a4401528181611b8301528181611d4501528181611e2f015261312a015260008181610241015261339c0152600081816104520152610e8d0152615c456000f3fe6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000000000000084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000000000000061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000000000000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000000000000006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c003300000000000000000000000042424242424242424242424242424242424242420000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000773594000000000000000000000000000000000000000000000000000000000006059f460", - "r": "0x64f24f812594f492cc88ef0376f7a87953c69c27921eba074d444f0e607452a0", - "s": "0x60aaa1acacd5724518e042bf91fd0bc4ad9d29e2689e5fcd21a46994875c68a6", - "yParity": "0x1", - "hash": "0x33edf193a23f0289b5d89c7a703f54bcd17d54651779434e784f5a3455a135f8" - } - }, - "impersonated_sender": null - }, - { - "transaction": { - "EIP1559": { - "chainId": "0x7a69", - "nonce": "0xb", - "gas": "0x5b8ea", + "nonce": "0x10", + "gas": "0x507c67", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "r": "0xd56139486c75b623487313fe5593f69d67b861422ee3a1183c0351e0940bde05", - "s": "0x715be808934440ce4eadda182688e0c2617560331170e85b93ef42745f13fdd", - "yParity": "0x1", - "hash": "0xf63348d9d494abf9775ab12c8f00d13e58abb43735511d6fbdcbc50bdfbfdd46" + "input": "0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0x5136a6a740bf17e6223d184d4efdde1204c1fb54056bd41dfb1fff746da3cb10", + "s": "0x3c6cd137e61015e8cefa66acf793bb3923e1e47e9a3fee9d67a3ab0cb90cd695", + "yParity": "0x0", + "v": "0x0", + "hash": "0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683" } }, "impersonated_sender": null @@ -1168,68 +1409,66 @@ }, { "header": { - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "receiptsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x871cd84b9f3adeb3118d803edf9c7c4fb93753fafd3530f415646f483a8b8ef3", + "transactionsRoot": "0x7b5b5d2531601e38f873cd01be4be50d816c1d079ec5e655c7de3457c19b8125", + "receiptsRoot": "0x21c202c2917df5a790b4d6f4e42512bafe97690fd8da372d666323274f621126", + "logsBloom": "0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000", "difficulty": "0x0", - "number": "0x0", + "number": "0xf", "gasLimit": "0x1c9c380", - "gasUsed": "0x0", - "timestamp": "0x67db0551", + "gasUsed": "0x5df480", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x3b9aca00", - "blobGasUsed": "0x0", - "excessBlobGas": "0x0", - "extraData": "0x" - }, - "transactions": [], - "ommers": [] - }, - { - "header": { - "parentHash": "0x0e637d647581fe5de6fcbcd11328753276819facc3fd30917ff91c0602dcdcb1", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x6c1895f94e42166567756cdba8f698a237d9982bdf7bb3b4f6c7061e0dad097e", - "transactionsRoot": "0x31bc5e93aead970f271283deb6ca355074adc1010f3a4a1542428c755b966e62", - "receiptsRoot": "0x19e95c9ae96bcfaa35669da649163148d0399e12912dd92bd34428c6538b2f08", + "baseFeePerGas": "0xb8b6f6a", "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "difficulty": "0x0", - "number": "0x12", - "gasLimit": "0x1c9c380", - "gasUsed": "0x64c4", - "timestamp": "0x67db0553", - "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x0000000000000000", - "baseFeePerGas": "0x8509268", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x20", - "gas": "0x8b2e", + "nonce": "0x11", + "gas": "0x669a30", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "to": null, "value": "0x0", "accessList": [], - "input": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "r": "0x729bcd296b95dc9fbbed8beeb842a62c4366afa92bbccac951f3dacff067c0fd", - "s": "0x79af5af4279f42a9f851e8e3eeb8ac3c64b30df48035e1584ae364c9e678585a", + "input": "0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0xa97a844bd6ac6c5311043b1f79367e1dc25361f3f1abfc48f15ec01094f2ac63", + "s": "0x1d2277b51fd73467f590340670ea88003725999e4b3facab067c91f2cd8ed0f6", + "yParity": "0x1", + "v": "0x1", + "hash": "0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a" + } + }, + "impersonated_sender": null + }, + { + "transaction": { + "EIP1559": { + "chainId": "0x7a69", + "nonce": "0x12", + "gas": "0x138a0f", + "maxFeePerGas": "0x77359401", + "maxPriorityFeePerGas": "0x1", + "to": null, + "value": "0x0", + "accessList": [], + "input": "0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0x7b0b83bf55096027709e3feffbaa64c64a17e671438bbac0ee5ff0903526821b", + "s": "0x1f4f768a1acf122cd43721f9264e00bcd59b75f3646804355771a16093d5e3fb", "yParity": "0x0", - "hash": "0x0407695da91c821753dcf7e68b5284a95c603e466b110cce53db7254dd1f1278" + "v": "0x0", + "hash": "0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf" } }, "impersonated_sender": null @@ -1239,44 +1478,45 @@ }, { "header": { - "parentHash": "0x60216db37c48029a8f153a732e8ce645a284a4bc0c9b52e52db91e73a255b3f4", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0xa9cf2879da6d37e71d693bd1385bc651362580c8f5e5ac870b472ff4a8220485", - "transactionsRoot": "0x9e17f4e91d109ee558e254fcb31c56fa60d69632e4b472879c3e83637d61b963", - "receiptsRoot": "0x6193b1bab62c50d49e00132c6500726ec7726b982dc46349fe52157303fb9261", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000100000000000000000000000400080000000000400000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000100000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000", + "parentHash": "0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x960db369a7ac67dfcc0954df2c18383b284faa3d48d8c27c76d32e76c9a258cb", + "transactionsRoot": "0x82481245456b137bad6f2b803289e4bce00248adada84bbba209a620c29e2232", + "receiptsRoot": "0x43306daaaf74614d90df27fd1b2c403355aeebf7671b156295b332d0f81425f4", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000", "difficulty": "0x0", "number": "0xb", "gasLimit": "0x1c9c380", - "gasUsed": "0x2247c", - "timestamp": "0x67db0553", + "gasUsed": "0x51001f", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x14842a3b", + "baseFeePerGas": "0x1102e8f2", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x16", - "gas": "0x2f597", + "nonce": "0xc", + "gas": "0x694cf5", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": null, "value": "0x0", "accessList": [], - "input": "0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "r": "0x81984eadf6fa11b2fe04df40da0ededf673dc4ebd2f43a8f2dbb921b42352465", - "s": "0x203bdf4c4e3f2d641859308083f40e6e0a654b04aecc27dcaf0cdb166ff1e5f8", - "yParity": "0x1", - "hash": "0xe405e21ba26d4a3b0a72c85452048c4f59cb45eff93e20f4008c71fda12766b8" + "input": "0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0xa1d60978a7f3d46ba661c5965044d122a7c29b20672c94d9f1579da1cf260c41", + "s": "0x339452a6f75f726b7d587b429b545a5726159c2c846ff9dc0fd109651983a33c", + "yParity": "0x0", + "v": "0x0", + "hash": "0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3" } }, "impersonated_sender": null @@ -1286,44 +1526,45 @@ }, { "header": { - "parentHash": "0x48c9fcfff615bea7f00fb189309cc24c83bfcf62a57700ae85174e0d43903e4f", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x136b2bd83f8584246c69c32fb3ee0c3f482b2eb53f64fbc84c32614c533fbf7c", - "transactionsRoot": "0x5854846dae326eb2177335a3603957dd93898b2d4c0daa7ccd90f16668aa1687", - "receiptsRoot": "0xc87c8eeaba1ea83f582f32dcea095f087d84db1ca1026e2a16daf253f761a642", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000100080001000000000000000000000000000000000000004000000020000010000000000000002000000000000000000000200000400000001008008000010040000000000000000000000004000000001000000000000000000000000008000000000c0004000000000000000002000000000000000000000008440000000000000000000000000000000008000000020400000200000000000040000050000002008000001000000000020000000000000000001000000000000000000000000000000020000000000400000", + "parentHash": "0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0xbfeadcf4bec363c1b607a5e3013f60cb2ec48d42b272e33579978ac1e353459a", + "transactionsRoot": "0xb7bc23d7786b04ad3152fc9f4d47007e4bdc6a97d736df141db331a1821da99b", + "receiptsRoot": "0x87ddd41d3932b2565969d12f90fe222e5de689cd83df67c33c10e03cb9bfaf41", + "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000200000000000040000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0xd", + "number": "0xa", "gasLimit": "0x1c9c380", - "gasUsed": "0x40605", - "timestamp": "0x67db0553", + "gasUsed": "0x396666", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0xfc10e3f", + "baseFeePerGas": "0x12c4e5e3", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x18", - "gas": "0x2b83f", + "nonce": "0xa", + "gas": "0x44f0fe", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": null, "value": "0x0", "accessList": [], - "input": "0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "r": "0x8a45120d596e8b8ca8db2ecee7e4c0a7ad2aa5efcdd1e669d300be5f88f5b8ee", - "s": "0x79257c8c420e081280f3232c031d4ec00ae37acf61d3606f86b08d780ce31500", - "yParity": "0x1", - "hash": "0x915e9f826dc9f67ede8161a0b96a52b57472804f5d53d99568b80d3cdf6546ec" + "input": "0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0x72ec62b68dadae92c6340b986b6661014856a3ff450f3d9b2bd192e70a490172", + "s": "0x1d6d6d5a14bb9c4d8f130667da4b0551950d2a03450af4f4091ebd75951e765", + "yParity": "0x0", + "v": "0x0", + "hash": "0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160" } }, "impersonated_sender": null @@ -1332,18 +1573,19 @@ "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x19", - "gas": "0x2fd25", + "nonce": "0xb", + "gas": "0x5adb9", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": null, "value": "0x0", "accessList": [], - "input": "0x9623609d0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084eb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000", - "r": "0x8e742eeb3501951f3637ef8abf577c12b775568e211ef0dfbe56d2fb89698a02", - "s": "0x1a316d4767931d39813d98ddcf17a38c0889b59f73dd964d86c784d658734b48", - "yParity": "0x0", - "hash": "0xa1e0398c2dde583fe8c57690419d4f2ec2dee733e02fd823bd1dd6bdb141f9db" + "input": "0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "r": "0x5b5277e8d4dc99191ecf322fdbf3c49e306246d21e0e314c9beab6b6e1c86fec", + "s": "0x1d3265ce2091b8b6959d77b9aa97db31a4bd927cff6c28cd1c6d47cde84c9c60", + "yParity": "0x1", + "v": "0x1", + "hash": "0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33" } }, "impersonated_sender": null @@ -1353,26 +1595,26 @@ }, { "header": { - "parentHash": "0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x2163a0d26faf48a0f1ad20af72b0dc0bb05118862f3211ae0aea0a27522aedfa", - "transactionsRoot": "0xd82b5426716412409b65e5677a842315101e726acf9e99573ef78c09e7640bbc", - "receiptsRoot": "0xc24b358bd8f01f0a27e9dfd990532cd0333f2a673ceef0dd1e1fbb4de37b200b", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "parentHash": "0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x113d4e2e12c75dc5dc77e3f843b3ff586a577ff4d510da255d76c1cca38c740d", + "transactionsRoot": "0x183586121fdd4ee59e4e4cb687bc3bdf57997f9a91bccb50fd024bc3ba3b8e7b", + "receiptsRoot": "0x98dda837c8d132bfd4039aa4e05ee217f7a23497db5619318147ad978615080c", "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000", "difficulty": "0x0", - "number": "0x8", + "number": "0xd", "gasLimit": "0x1c9c380", - "gasUsed": "0x320478", - "timestamp": "0x67db0553", + "gasUsed": "0x26429f", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x1c25e045", + "baseFeePerGas": "0xe2ddc73", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { @@ -1380,16 +1622,18 @@ "EIP1559": { "chainId": "0x7a69", "nonce": "0xf", - "gas": "0x4100b6", + "gas": "0x31bd01", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x61018060405234801561001157600080fd5b50604051613dc9380380613dc9833981016040819052610030916102d0565b86868686868686610041858261035b565b63ffffffff16156100e55760405162461bcd60e51b815260206004820152606060248201527f52657761726473436f6f7264696e61746f723a2047454e455349535f5245574160448201527f5244535f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b6100f2620151808661035b565b63ffffffff16156101915760405162461bcd60e51b815260206004820152605760248201527f52657761726473436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a4016100dc565b6001600160a01b0396871661012052949095166101405263ffffffff92831660805290821660a052811660c05291821660e05216610100526101d16101e3565b50504661016052506103919350505050565b600054610100900460ff161561024b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100dc565b60005460ff908116101561029d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146102b457600080fd5b50565b805163ffffffff811681146102cb57600080fd5b919050565b600080600080600080600060e0888a0312156102eb57600080fd5b87516102f68161029f565b60208901519097506103078161029f565b9550610315604089016102b7565b9450610323606089016102b7565b9350610331608089016102b7565b925061033f60a089016102b7565b915061034d60c089016102b7565b905092959891949750929550565b600063ffffffff83168061037f57634e487b7160e01b600052601260045260246000fd5b8063ffffffff84160691505092915050565b60805160a05160c05160e051610100516101205161014051610160516139a2610427600039600061181f0152600081816104400152612295015260006106ec01526000818161035701526120c40152600081816102cb0152612170015260008181610419015261207301526000818161065e0152611dea01526000818161060401528181611ea10152611f7c01526139a26000f3fe608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000000000460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb7880", - "r": "0x8589c2e5c5f62ad55c86f920a405f99572f1a36ff2865a467fe52f7d98b68ad9", - "s": "0x141b588857f226b9cff4f7ff341aa107f9d38ba37c1a68d9efd80fa6a335fd5", + "input": "0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "r": "0xea84ded5f15ebb02432f77cbc867341c788f67dcc07253d308f40758b2ab9990", + "s": "0x3bc80e23acd0633ed2b6c331e1bd886b2d1f0db80c16a2758a6d2c777e953b2c", "yParity": "0x0", - "hash": "0xbdad1d302ceed6a3bebc68f75d63dcabacdb6a7dbc0e83cd8de88bb9374dcafa" + "v": "0x0", + "hash": "0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090" } }, "impersonated_sender": null @@ -1399,43 +1643,45 @@ }, { "header": { - "parentHash": "0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851", - "ommersHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "beneficiary": "0x0000000000000000000000000000000000000000", - "stateRoot": "0x62b0c97c7ed58c4035a500c2382e6d3ffb36075065858a5374f76dcb3b25e231", - "transactionsRoot": "0xe4de0e1967f9f359ffbcdbf82a6e36c1b64b97fdb54667a6789f32475adba769", - "receiptsRoot": "0xfc912922b1e8e658560a8769df0c1b6a5cbd2c8f435ba057e2d8b9ffcc7917c3", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "parentHash": "0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "miner": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x0de8add2e06caf903ca6d46dcc01bafa1ad2a2a8d6d718bfd7bda1dd8c591848", + "transactionsRoot": "0x8bbd69ec40af286b18efcf97864ef61f69618c86bd9a30b5bd766809c14cd40f", + "receiptsRoot": "0x4abc27cd20735837c724eb015763f975c3b88e5d13444fdaa9c1a314a70e2c21", + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x0", - "number": "0x4", + "number": "0x7", "gasLimit": "0x1c9c380", - "gasUsed": "0x8bf2e", - "timestamp": "0x67db0553", + "gasUsed": "0x8e53f", + "timestamp": "0x68238dc6", + "extraData": "0x", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": "0x0000000000000000", - "baseFeePerGas": "0x295b7da7", + "baseFeePerGas": "0x1b8e2cc6", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "blobGasUsed": "0x0", "excessBlobGas": "0x0", - "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x" + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "transactions": [ { "transaction": { "EIP1559": { "chainId": "0x7a69", - "nonce": "0x8", - "gas": "0xb5dcb", + "nonce": "0x7", + "gas": "0xb906b", "maxFeePerGas": "0x77359401", "maxPriorityFeePerGas": "0x1", + "to": null, "value": "0x0", "accessList": [], - "input": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "r": "0x637333098e02f7dc20a74251a554e685aeda89836139e106fb3894b4db59f76d", - "s": "0x70b0711bcf0df6b3e00bb152df5bab575d2945e76848f9a3cdc9ad33f1fb468", + "input": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "r": "0xbc5b5c680e5693f7e12233b87e6dd4eff0c6481bd1c347f7d1d5aa5a47e897a7", + "s": "0x5cfe125033c53249d57901cf63173faab03c2326222dc0161311826b6a35abab", "yParity": "0x1", - "hash": "0xa08de92bbb1ad733fc0a8c40fa54118c643385190c6953b3cb0aee8b32f185fd" + "v": "0x1", + "hash": "0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818" } }, "impersonated_sender": null @@ -1447,32 +1693,34 @@ "transactions": [ { "info": { - "transaction_hash": "0x22a9f86b632e0721e86b2a5abace725309858cf2abca7c3f7f22df7902873912", - "transaction_index": 1, + "transaction_hash": "0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "contract_address": null, "traces": [ { "parent": null, - "children": [], + "children": [ + 1 + ], "idx": 0, "trace": { "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", - "maybe_precompile": false, + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "CALL", "value": "0x0", - "data": "0x6080604052348015600f57600080fd5b50607780601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033", - "output": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033", - "gas_used": 23875, - "gas_limit": 47605, - "status": "Return", + "data": "0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": "0x", + "gas_used": 94293, + "gas_limit": 148590, + "status": "Stop", "steps": [], "decoded": { "label": null, @@ -1481,51 +1729,33 @@ } }, "logs": [], - "ordering": [] - } - ], - "exit": "Return", - "out": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea264697066735822122083f6599f3b40efb95aaba690bbeee04c49e0cc0eebd29434caa726d365b9d29f64736f6c634300081c0033", - "nonce": 2, - "gas_used": 79145 - }, - "receipt": { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x65ecf", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - }, - "block_hash": "0x6f5c23d23cc1a6585e03a9255d0017fa2e89b1cb671629ef6ee84a9608a08afe", - "block_number": 2 - }, - { - "info": { - "transaction_hash": "0x836a4ac02c16fb1dbcfa393cd13acedc12dabdd7dd96484031d8211cb9f67a38", - "transaction_index": 4, - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "traces": [ + "ordering": [ + { + "Call": 0 + } + ] + }, { - "parent": null, - "children": [], - "idx": 0, + "parent": 0, + "children": [ + 2 + ], + "idx": 1, "trace": { - "depth": 0, + "depth": 1, "success": true, - "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "maybe_precompile": false, + "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "CALL", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, + "data": "0x4f1ef2860000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": "0x", + "gas_used": 88344, + "gas_limit": 140460, "status": "Return", "steps": [], "decoded": { @@ -1539,7 +1769,7 @@ "raw_log": { "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82" ], "data": "0x" }, @@ -1548,90 +1778,37 @@ "params": null }, "position": 0 + } + ], + "ordering": [ + { + "Log": 0 }, { - "raw_log": { - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - } - ], - "ordering": [ - { - "Log": 0 - }, - { - "Log": 1 + "Call": 0 } ] - } - ], - "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 7, - "gas_used": 573230 - }, - "receipt": { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x2bbbe6", - "logs": [ - { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x" }, { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - }, - "block_hash": "0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851", - "block_number": 3 - }, - { - "info": { - "transaction_hash": "0xece0fbed8cbdcfe3cf8a43c932bc41f5a9fe7f2dde7ab7cf4e99dc08ea3468f1", - "transaction_index": 0, - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "traces": [ - { - "parent": null, + "parent": 1, "children": [], - "idx": 0, + "idx": 2, "trace": { - "depth": 0, + "depth": 2, "success": true, - "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "maybe_precompile": false, + "caller": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "DELEGATECALL", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, - "status": "Return", + "data": "0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000", + "output": "0x", + "gas_used": 75499, + "gas_limit": 126070, + "status": "Stop", "steps": [], "decoded": { "label": null, @@ -1643,8 +1820,23 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], "data": "0x" }, @@ -1657,9 +1849,22 @@ { "raw_log": { "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + "0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001" }, "decoded": { "name": null, @@ -1674,44 +1879,74 @@ }, { "Log": 1 + }, + { + "Log": 2 + }, + { + "Log": 3 } ] } ], - "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 9, - "gas_used": 573230 + "exit": "Stop", + "out": "0x", + "nonce": 20, + "gas_used": 117401 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x8bf2e", + "cumulativeGasUsed": "0x1ca99", "logs": [ { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82" ], "data": "0x" }, { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x" + }, + { + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + }, + { + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001" } ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000" }, - "block_hash": "0x593eb383f76146cd7d31e8dcede81a18678d924393e73548717d40b79427fc5d", - "block_number": 5 + "block_hash": "0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e", + "block_number": 17 }, { "info": { - "transaction_hash": "0xfd0cd693bcd0f6192a593b8edcbcfd149e34e760aca4b512b7292d66dff4c2f8", + "transaction_hash": "0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", @@ -1734,10 +1969,10 @@ "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "data": "0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 141217, - "gas_limit": 204005, + "gas_used": 70539, + "gas_limit": 113685, "status": "Stop", "steps": [], "decoded": { @@ -1763,18 +1998,18 @@ "depth": 1, "success": true, "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x4f1ef2860000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd8200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084cf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "data": "0x4f1ef2860000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 134859, - "gas_limit": 194607, - "status": "Stop", + "gas_used": 64602, + "gas_limit": 106112, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -1787,7 +2022,7 @@ "raw_log": { "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82" + "0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae" ], "data": "0x" }, @@ -1814,18 +2049,18 @@ "trace": { "depth": 2, "success": true, - "caller": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "caller": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "DELEGATECALL", "value": "0x0", - "data": "0xcf756fdf000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000", + "data": "0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 121894, - "gas_limit": 179021, + "gas_used": 51769, + "gas_limit": 92271, "status": "Stop", "steps": [], "decoded": { @@ -1849,19 +2084,6 @@ }, "position": 0 }, - { - "raw_log": { - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, { "raw_log": { "topics": [ @@ -1877,19 +2099,6 @@ }, "position": 0 }, - { - "raw_log": { - "topics": [ - "0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, { "raw_log": { "topics": [ @@ -1913,36 +2122,30 @@ }, { "Log": 2 - }, - { - "Log": 3 - }, - { - "Log": 4 } ] } ], "exit": "Stop", "out": "0x", - "nonce": 20, - "gas_used": 164693 + "nonce": 24, + "gas_used": 93291 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x28355", + "cumulativeGasUsed": "0x16c6b", "logs": [ { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82" + "0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae" ], "data": "0x" }, { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "topics": [ "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" @@ -1950,14 +2153,7 @@ "data": "0x0000000000000000000000000000000000000000000000000000000000000000" }, { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1966,53 +2162,48 @@ "data": "0x" }, { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "topics": [ - "0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - }, - { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001" } ], - "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000100000400000000000000000000000000000000400000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000100000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000" + "logsBloom": "0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000" }, - "block_hash": "0x60216db37c48029a8f153a732e8ce645a284a4bc0c9b52e52db91e73a255b3f4", - "block_number": 10 + "block_hash": "0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb", + "block_number": 21 }, { "info": { - "transaction_hash": "0xeea9931d6e3a2988ca9384428f505cc53b54c9b25f97fd5f0d4c384cda39370a", - "transaction_index": 1, + "transaction_hash": "0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "contract_address": null, "traces": [ { "parent": null, - "children": [], + "children": [ + 1 + ], "idx": 0, "trace": { "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "maybe_precompile": false, + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "CALL", "value": "0x0", - "data": "0x61010060405234801561001157600080fd5b5060405161337a38038061337a83398101604081905261003091610135565b6001600160a01b0380841660805280831660a052811660c05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516131a36101d760003960006114b70152600061046e0152600061028501526000818161051a01528181610b8201528181610ecf01528181610f230152611a6c01526131a36000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000000000000000000000000000000000000000000081565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f000000000000000000000000000000000000000000000000000000000000000046036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853", - "output": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f0000000000000000000000000000000000000000000000000000000000007a6946036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033", - "gas_used": 2568243, - "gas_limit": 3415449, - "status": "Return", + "data": "0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000", + "output": "0x", + "gas_used": 98219, + "gas_limit": 154478, + "status": "Stop", "steps": [], "decoded": { "label": null, @@ -2020,78 +2211,34 @@ "call_data": null } }, - "logs": [ - { - "raw_log": { - "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - } - ], + "logs": [], "ordering": [ { - "Log": 0 + "Call": 0 } ] - } - ], - "exit": "Return", - "out": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f0000000000000000000000000000000000000000000000000000000000007a6946036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea26469706673582212209d6b6db24f44571882d9f0afa79ab7f6d1b894def49162e31c6fe663f924ab7564736f6c634300081c0033", - "nonce": 13, - "gas_used": 2827617 - }, - "receipt": { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x78443a", - "logs": [ + }, { - "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "parent": 0, + "children": [ + 2 ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000" - }, - "block_hash": "0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3", - "block_number": 7 - }, - { - "info": { - "transaction_hash": "0x51e3b6ec5dce1003f9129d8ba4e6e8efe484f2334549a0618ce1c15d7e357f5f", - "transaction_index": 0, - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "traces": [ - { - "parent": null, - "children": [], - "idx": 0, + "idx": 1, "trace": { - "depth": 0, + "depth": 1, "success": true, - "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "maybe_precompile": false, + "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "CALL", "value": "0x0", - "data": "0x6080604052348015600f57600080fd5b50601733601b565b606b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007a6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033", - "output": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033", - "gas_used": 362115, - "gas_limit": 494948, + "data": "0x4f1ef286000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000", + "output": "0x", + "gas_used": 92246, + "gas_limit": 146232, "status": "Return", "steps": [], "decoded": { @@ -2104,9 +2251,8 @@ { "raw_log": { "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1" ], "data": "0x" }, @@ -2120,117 +2266,32 @@ "ordering": [ { "Log": 0 + }, + { + "Call": 0 } ] - } - ], - "exit": "Return", - "out": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212202a25c113a0c89ae9cdec45156ac7a705552559358051c68fc6aad769f491533264736f6c634300081c0033", - "nonce": 0, - "gas_used": 443273 - }, - "receipt": { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x6c389", - "logs": [ - { - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x" - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000" - }, - "block_hash": "0xe70403fd18eed35975aef85d0c451e71d41f2f325dc562c97b4a4a743f2a4c2d", - "block_number": 1 - }, - { - "info": { - "transaction_hash": "0x34fb9442d5a4081b3e20e2767849dfaf2e3451f57b8ca3cee2259ebae4852745", - "transaction_index": 0, - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "traces": [ + }, { - "parent": null, + "parent": 1, "children": [], - "idx": 0, + "idx": 2, "trace": { - "depth": 0, + "depth": 2, "success": true, - "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "caller": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "maybe_precompile": false, - "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "CREATE", - "value": "0x0", - "data": "0x6080604052348015600f57600080fd5b50604051610ee6380380610ee6833981016040819052602c916049565b5050607e565b6001600160a01b0381168114604657600080fd5b50565b60008060408385031215605b57600080fd5b82516064816032565b60208401519092506073816032565b809150509250929050565b610e598061008d6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "output": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033", - "gas_used": 735686, - "gas_limit": 990197, - "status": "Return", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [], - "ordering": [] - } - ], - "exit": "Return", - "out": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220a801dbbc8e505fe713a341c2bf0a78b3da041438c8bf5ecf48b2319a16073f5964736f6c634300081c0033", - "nonce": 16, - "gas_used": 849430 - }, - "receipt": { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0xcf616", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - }, - "block_hash": "0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0", - "block_number": 9 - }, - { - "info": { - "transaction_hash": "0xeb68aa080bba327cb447d95bedd671e9f3293000352a012572c6fbb9b8b7fa7f", - "transaction_index": 1, - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "traces": [ - { - "parent": null, - "children": [], - "idx": 0, - "trace": { - "depth": 0, - "success": true, - "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "maybe_precompile": false, + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "DELEGATECALL", "value": "0x0", - "data": "0x61012060405234801561001157600080fd5b5060405161349738038061349783398101604081905261003091610140565b6001600160a01b0380861660805280851660a05280841660c05280831660e05281166101005261005e610068565b50505050506101b5565b600054610100900460ff16156100d45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610126576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013d57600080fd5b50565b600080600080600060a0868803121561015857600080fd5b855161016381610128565b602087015190955061017481610128565b604087015190945061018581610128565b606087015190935061019681610128565b60808701519092506101a781610128565b809150509295509295909350565b60805160a05160c05160e0516101005161326d61022a60003960008181610636015281816106e001528181610b0e015281816113ea0152818161187e015261196e01526000610542015260006102e601526000818161027a01528181611369015261203c01526000610414015261326d6000f3fe6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c00330000000000000000000000004242424242424242424242424242424242424242000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "output": "0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c0033", - "gas_used": 2608978, - "gas_limit": 3469161, - "status": "Return", + "data": "0xf6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e8", + "output": "0x", + "gas_used": 79377, + "gas_limit": 131729, + "status": "Stop", "steps": [], "decoded": { "label": null, @@ -2239,12 +2300,82 @@ } }, "logs": [ + { + "raw_log": { + "topics": [ + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4" + ], + "data": "0x" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, { "raw_log": { "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x0000000000000000000000000000000000000000000000000000000000000001" }, "decoded": { "name": null, @@ -2256,40 +2387,103 @@ "ordering": [ { "Log": 0 + }, + { + "Log": 1 + }, + { + "Log": 2 + }, + { + "Log": 3 + }, + { + "Log": 4 + }, + { + "Log": 5 } ] } ], - "exit": "Return", - "out": "0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a264697066735822122037f9ef03ba30ac24faffd0bb4d50f2047d3b0702ecc18f5a42c7e853cda1d24c64736f6c634300081c0033", - "nonce": 17, - "gas_used": 2870970 + "exit": "Stop", + "out": "0x", + "nonce": 23, + "gas_used": 121643 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x38c4d0", + "cumulativeGasUsed": "0x1db2b", "logs": [ { - "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1" + ], + "data": "0x" + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x" + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4" + ], + "data": "0x" + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20" + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "topics": [ + "0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8" + }, + { + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x0000000000000000000000000000000000000000000000000000000000000001" } ], - "logsBloom": "0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200" }, - "block_hash": "0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0", - "block_number": 9 + "block_hash": "0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20", + "block_number": 20 }, { "info": { - "transaction_hash": "0x270f5665c89b4abca1028c602097170fb3da69543a0a0d50d7b432b3900a04b6", + "transaction_hash": "0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "contract_address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "traces": [ { "parent": null, @@ -2299,17 +2493,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 474055, + "gas_limit": 648947, "status": "Return", "steps": [], "decoded": { @@ -2358,17 +2552,17 @@ } ], "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 3, - "gas_used": 573230 + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 8, + "gas_used": 582975 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x8bf2e", + "cumulativeGasUsed": "0x8e53f", "logs": [ { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" @@ -2376,25 +2570,25 @@ "data": "0x" }, { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", "topics": [ "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851", - "block_number": 3 + "block_hash": "0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91", + "block_number": 8 }, { "info": { - "transaction_hash": "0x33edf193a23f0289b5d89c7a703f54bcd17d54651779434e784f5a3455a135f8", + "transaction_hash": "0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "contract_address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", "traces": [ { "parent": null, @@ -2404,17 +2598,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x61012060405234801561001157600080fd5b50604051615f0f380380615f0f83398101604081905261003091610163565b6001600160a01b0380861660805284811660a052831660c0526001600160401b0380831660e05281166101005261006561006f565b50505050506101d0565b600054610100900460ff16156100db5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561012d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461014457600080fd5b50565b80516001600160401b038116811461015e57600080fd5b919050565b600080600080600060a0868803121561017b57600080fd5b85516101868161012f565b60208701519095506101978161012f565b60408701519094506101a88161012f565b92506101b660608701610147565b91506101c460808701610147565b90509295509295909350565b60805160a05160c05160e05161010051615c456102ca600039600081816105b501528181612007015281816120be0152612116015260008181610275015281816125a7015281816125db01528181612c0701528181612c340152818161437a01526143b501526000818161036d01528181610614015281816107a701528181610aef01528181610c3a01528181610dc201528181610f7d0152818161115e0152818161128801528181611459015281816118a601528181611a4401528181611b8301528181611d4501528181611e2f015261312a015260008181610241015261339c0152600081816104520152610e8d0152615c456000f3fe6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000000000000084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000000000000061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000000000000081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000000000000081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000000000000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f00000000000000000000000000000000000000000000000000000000000000009091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000000000000006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c003300000000000000000000000042424242424242424242424242424242424242420000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000000000000000000000000000000000000773594000000000000000000000000000000000000000000000000000000000006059f460", - "output": "0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe61614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000006059f46084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000006059f46061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000773594000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000007735940006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c0033", - "gas_used": 4754434, - "gas_limit": 6306973, + "data": "0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033", + "gas_used": 2263024, + "gas_limit": 3014632, "status": "Return", "steps": [], "decoded": { @@ -2446,58 +2640,56 @@ } ], "exit": "Return", - "out": "0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe61614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000006059f46084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000006059f46061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000773594000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000007735940006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220d7b8ead0fa998627ecc2f176bd008f859ac9ce61ec211d54e30b2fd069f6536b64736f6c634300081c0033", - "nonce": 10, - "gas_used": 5181770 + "out": "0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033", + "nonce": 13, + "gas_used": 2505362 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x4f114a", + "cumulativeGasUsed": "0x263a92", "logs": [ { - "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", + "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000" }, - "block_hash": "0x5a7a3e18533c10d9e81916d33460352c00313b7387d53d582fc75258d878e46e", - "block_number": 6 + "block_hash": "0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310", + "block_number": 12 }, { "info": { - "transaction_hash": "0x70bb1d58f6521a3b3c19dd151c65f4903e57a4c0979f69d1d5d1ebc8e9929cfc", + "transaction_hash": "0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "contract_address": null, + "to": null, + "contract_address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", "traces": [ { "parent": null, - "children": [ - 1 - ], + "children": [], "idx": 0, "trace": { "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "maybe_precompile": null, + "address": "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CALL", + "kind": "CREATE", "value": "0x0", - "data": "0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c4d4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 145433, - "gas_limit": 223699, - "status": "Stop", + "data": "0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033", + "output": "0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033", + "gas_used": 23073, + "gas_limit": 46567, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -2506,170 +2698,67 @@ } }, "logs": [], - "ordering": [ - { - "Call": 0 - } - ] - }, - { - "parent": 0, - "children": [ - 2 - ], - "idx": 1, - "trace": { - "depth": 1, - "success": true, - "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "maybe_precompile": null, - "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "CALL", - "value": "0x0", - "data": "0x4f1ef2860000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4d4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 138898, - "gas_limit": 213819, - "status": "Stop", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [ - { - "raw_log": { - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" - ], - "data": "0x" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - } - ], - "ordering": [ - { - "Log": 0 - }, - { - "Call": 0 - } - ] - }, + "ordering": [] + } + ], + "exit": "Return", + "out": "0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033", + "nonce": 2, + "gas_used": 78315 + }, + "receipt": { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x131eb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "block_hash": "0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1", + "block_number": 3 + }, + { + "info": { + "transaction_hash": "0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818", + "transaction_index": 0, + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contract_address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "traces": [ { - "parent": 1, + "parent": null, "children": [], - "idx": 2, + "idx": 0, "trace": { - "depth": 2, + "depth": 0, "success": true, - "caller": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", - "maybe_precompile": null, + "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "maybe_precompile": false, "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "DELEGATECALL", - "value": "0x0", - "data": "0xd4540a55000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e8", - "output": "0x", - "gas_used": 125780, - "gas_limit": 197782, - "status": "Stop", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [ - { - "raw_log": { - "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4" - ], - "data": "0x" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, + "selfdestruct_refund_target": null, + "selfdestruct_transferred_value": null, + "kind": "CREATE", + "value": "0x0", + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 474055, + "gas_limit": 648947, + "status": "Return", + "steps": [], + "decoded": { + "label": null, + "return_data": null, + "call_data": null + } + }, + "logs": [ { "raw_log": { "topics": [ - "0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8" + "data": "0x" }, "decoded": { "name": null, @@ -2680,9 +2769,9 @@ { "raw_log": { "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" }, "decoded": { "name": null, @@ -2697,110 +2786,48 @@ }, { "Log": 1 - }, - { - "Log": 2 - }, - { - "Log": 3 - }, - { - "Log": 4 - }, - { - "Log": 5 - }, - { - "Log": 6 } ] } ], - "exit": "Stop", - "out": "0x", - "nonce": 23, - "gas_used": 169225 + "exit": "Return", + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 7, + "gas_used": 582975 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x29509", + "cumulativeGasUsed": "0x8e53f", "logs": [ { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" - ], - "data": "0x" - }, - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x" - }, - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4" + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], "data": "0x" }, { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20" - }, - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0x8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8" - }, - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000040000008400000000000000000800000000000000010000000000000000000000000000000000000000000100000000000000000041000000000000000000400000402000001002000000000000000000000000000020000020000000000000300800800000004000000000000000000000000440000000100000000000000000000000000000000000080000000000000100000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008002000000000000020000000000000000100400800000400000000000000000000000000000001400200" + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x48c9fcfff615bea7f00fb189309cc24c83bfcf62a57700ae85174e0d43903e4f", - "block_number": 12 + "block_hash": "0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670", + "block_number": 7 }, { "info": { - "transaction_hash": "0xa08de92bbb1ad733fc0a8c40fa54118c643385190c6953b3cb0aee8b32f185fd", + "transaction_hash": "0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "contract_address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", "traces": [ { "parent": null, @@ -2810,17 +2837,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, + "data": "0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033", + "gas_used": 3693659, + "gas_limit": 4910903, "status": "Return", "steps": [], "decoded": { @@ -2833,23 +2860,9 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" }, "decoded": { "name": null, @@ -2861,47 +2874,36 @@ "ordering": [ { "Log": 0 - }, - { - "Log": 1 } ] } ], "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 8, - "gas_used": 573230 + "out": "0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033", + "nonce": 16, + "gas_used": 4057483 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x8bf2e", + "cumulativeGasUsed": "0x3de98b", "logs": [ { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x" - }, - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" } ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000" }, - "block_hash": "0x27a45216e52e1cce5ed8ba0bef0ff498a221b2a693ff03100f51390309e95a2c", - "block_number": 4 + "block_hash": "0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2", + "block_number": 14 }, { "info": { - "transaction_hash": "0x8d7d689b5e7498d26362ee52308da636bcbbe413fa03ca37f136aa3bcb8cda91", + "transaction_hash": "0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", @@ -2924,10 +2926,10 @@ "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x9623609d000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000", + "data": "0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 118687, - "gas_limit": 172853, + "gas_used": 70560, + "gas_limit": 106135, "status": "Stop", "steps": [], "decoded": { @@ -2953,18 +2955,18 @@ "depth": 1, "success": true, "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x4f1ef2860000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000", + "data": "0x4f1ef2860000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 112329, - "gas_limit": 163941, - "status": "Stop", + "gas_used": 64623, + "gas_limit": 98680, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -2977,7 +2979,7 @@ "raw_log": { "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f" + "0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508" ], "data": "0x" }, @@ -3004,18 +3006,18 @@ "trace": { "depth": 2, "success": true, - "caller": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "caller": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "DELEGATECALL", "value": "0x0", - "data": "0x019e27290000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", + "data": "0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 99364, - "gas_limit": 148834, + "gas_used": 51790, + "gas_limit": 84955, "status": "Stop", "steps": [], "decoded": { @@ -3025,32 +3027,6 @@ } }, "logs": [ - { - "raw_log": { - "topics": [ - "0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a7640000" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003635c9adc5dea00000" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, { "raw_log": { "topics": [ @@ -3068,9 +3044,11 @@ { "raw_log": { "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + "data": "0x" }, "decoded": { "name": null, @@ -3101,50 +3079,30 @@ }, { "Log": 2 - }, - { - "Log": 3 - }, - { - "Log": 4 } ] } ], "exit": "Stop", "out": "0x", - "nonce": 29, - "gas_used": 142079 + "nonce": 21, + "gas_used": 93312 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x22aff", + "cumulativeGasUsed": "0x16c80", "logs": [ { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f" + "0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508" ], "data": "0x" }, { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "topics": [ - "0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a7640000" - }, - { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "topics": [ - "0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452" - ], - "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003635c9adc5dea00000" - }, - { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "topics": [ "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" @@ -3152,28 +3110,30 @@ "data": "0x0000000000000000000000000000000000000000000000000000000000000000" }, { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + "data": "0x" }, { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001" } ], - "logsBloom": "0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100100004000000000000000000000000000000000400000002000000000000000000000000000000040000000000000000000000000004800000000004000000000000000000000000000000000300000002000040000000000400000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000040020480000000000000000040000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000400000" + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000" }, - "block_hash": "0xcc694f0b3b0405bba2ef2fabf68314f0ccd5a2f46fa295879dc7667bc5089867", - "block_number": 16 + "block_hash": "0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27", + "block_number": 18 }, { "info": { - "transaction_hash": "0x915e9f826dc9f67ede8161a0b96a52b57472804f5d53d99568b80d3cdf6546ec", + "transaction_hash": "0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", @@ -3196,10 +3156,10 @@ "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084cf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "data": "0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 98625, - "gas_limit": 154991, + "gas_used": 70703, + "gas_limit": 114238, "status": "Stop", "steps": [], "decoded": { @@ -3225,18 +3185,18 @@ "depth": 1, "success": true, "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x4f1ef2860000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084cf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "data": "0x4f1ef286000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 92267, - "gas_limit": 146358, - "status": "Stop", + "gas_used": 64705, + "gas_limit": 106596, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -3249,7 +3209,7 @@ "raw_log": { "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae" + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" ], "data": "0x" }, @@ -3276,56 +3236,27 @@ "trace": { "depth": 2, "success": true, - "caller": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "caller": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "DELEGATECALL", "value": "0x0", - "data": "0xcf756fdf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000", + "data": "0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 79302, - "gas_limit": 131526, + "gas_used": 51811, + "gas_limit": 92687, "status": "Stop", "steps": [], "decoded": { "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [ - { - "raw_log": { - "topics": [ - "0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6", - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "data": "0x" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, + "return_data": null, + "call_data": null + } + }, + "logs": [ { "raw_log": { "topics": [ @@ -3343,9 +3274,11 @@ { "raw_log": { "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + "data": "0x" }, "decoded": { "name": null, @@ -3376,44 +3309,38 @@ }, { "Log": 2 - }, - { - "Log": 3 - }, - { - "Log": 4 } ] } ], "exit": "Stop", "out": "0x", - "nonce": 24, - "gas_used": 121873 + "nonce": 19, + "gas_used": 94131 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x1dc11", + "cumulativeGasUsed": "0x16fb3", "logs": [ { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae" + "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" ], "data": "0x" }, { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "topics": [ - "0x08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f6", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" ], - "data": "0x" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000" }, { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -3422,40 +3349,25 @@ "data": "0x" }, { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - { - "address": "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6", + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001" } ], - "logsBloom": "0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080001000000000000000000000000000000000000004000000020000010000000000000002000000000000000000000200000400000001008008000000040000000000000000000000004000000001000000000000000000000000008000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000010000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000" + "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000" }, - "block_hash": "0xe8f1fde659ea68d923d7994dc04a673f0f91b8fb184302f7d70735f91a37d594", - "block_number": 13 + "block_hash": "0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728", + "block_number": 16 }, { "info": { - "transaction_hash": "0x36e493baf7271595140c6eb3ab0ad73f1a465f974b7f43e80bec732caa827f5e", - "transaction_index": 0, + "transaction_hash": "0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf", + "transaction_index": 1, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "contract_address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", "traces": [ { "parent": null, @@ -3465,17 +3377,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b5060405161075038038061075083398101604081905261002f91610259565b60005b825181101561006d576100658382815181106100505761005061033a565b6020026020010151600161007e60201b60201c565b600101610032565b5061007781610150565b5050610350565b6001600160a01b0382166100ef5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b60648201526084015b60405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101be5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b60648201526084016100e6565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461025457600080fd5b919050565b6000806040838503121561026c57600080fd5b82516001600160401b0381111561028257600080fd5b8301601f8101851361029357600080fd5b80516001600160401b038111156102ac576102ac610227565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102da576102da610227565b6040529182526020818401810192908101888411156102f857600080fd5b6020850194505b8385101561031e576103108561023d565b8152602094850194016102ff565b509450610331925050506020840161023d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b6103f18061035f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "output": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c0033", - "gas_used": 254168, - "gas_limit": 355501, + "data": "0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033", + "gas_used": 855443, + "gas_limit": 1150949, "status": "Return", "steps": [], "decoded": { @@ -3488,48 +3400,9 @@ { "raw_log": { "topics": [ - "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" - ], - "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" - ], - "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" - ], - "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" }, "decoded": { "name": null, @@ -3541,70 +3414,40 @@ "ordering": [ { "Log": 0 - }, - { - "Log": 1 - }, - { - "Log": 2 - }, - { - "Log": 3 } ] } ], "exit": "Return", - "out": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212200f9bddaf281b593acba4d40ad0f8076fa9190d1d819fa1d3c292d86b7ab6684564736f6c634300081c0033", - "nonce": 1, - "gas_used": 338342 + "out": "0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033", + "nonce": 18, + "gas_used": 985021 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x529a6", + "cumulativeGasUsed": "0x5df480", "logs": [ { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" - ], - "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" - ], - "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", - "topics": [ - "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" - ], - "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" - }, - { - "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", "topics": [ - "0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" } ], - "logsBloom": "0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000" + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000" }, - "block_hash": "0x6f5c23d23cc1a6585e03a9255d0017fa2e89b1cb671629ef6ee84a9608a08afe", - "block_number": 2 + "block_hash": "0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592", + "block_number": 15 }, { "info": { - "transaction_hash": "0x83cbcad6bf507df8c527396595303607713f92c0dfbcc85a90b9df7d1bc1d335", + "transaction_hash": "0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33", "transaction_index": 1, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "contract_address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", "traces": [ { "parent": null, @@ -3614,17 +3457,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, + "data": "0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", + "output": "0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033", + "gas_used": 214146, + "gas_limit": 300027, "status": "Return", "steps": [], "decoded": { @@ -3637,8 +3480,9 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], "data": "0x" }, @@ -3647,89 +3491,103 @@ "params": null }, "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 } ], "ordering": [ { "Log": 0 - }, - { - "Log": 1 } ] } ], "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 4, - "gas_used": 573230 + "out": "0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033", + "nonce": 11, + "gas_used": 286272 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x117e5c", + "cumulativeGasUsed": "0x396666", "logs": [ { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], "data": "0x" - }, - { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000" + "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851", - "block_number": 3 + "block_hash": "0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056", + "block_number": 10 }, { "info": { - "transaction_hash": "0x37b270d09383137c71efb1453b09fc01c5a7173589ff736977637bf494b56cdd", - "transaction_index": 2, + "transaction_hash": "0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "contract_address": null, "traces": [ { "parent": null, - "children": [], + "children": [ + 1 + ], "idx": 0, "trace": { "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "maybe_precompile": false, + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "CALL", + "value": "0x0", + "data": "0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed", + "output": "0x", + "gas_used": 17265, + "gas_limit": 35332, + "status": "Stop", + "steps": [], + "decoded": { + "label": null, + "return_data": null, + "call_data": null + } + }, + "logs": [], + "ordering": [ + { + "Call": 0 + } + ] + }, + { + "parent": 0, + "children": [], + "idx": 1, + "trace": { + "depth": 1, + "success": true, + "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "maybe_precompile": null, + "selfdestruct_address": null, + "selfdestruct_refund_target": null, + "selfdestruct_transferred_value": null, + "kind": "CALL", "value": "0x0", - "data": "0x60c060405234801561001057600080fd5b50604051611f65380380611f6583398101604081905261002f9161010e565b6001600160a01b03811660805261004461004e565b504660a05261013e565b600054610100900460ff16156100ba5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010c576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561012057600080fd5b81516001600160a01b038116811461013757600080fd5b9392505050565b60805160a051611dfb61016a6000396000610ea501526000818161032401526109810152611dfb6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f00000000000000000000000000000000000000000000000000000000000000004603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "output": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033", - "gas_used": 1560351, - "gas_limit": 2081559, + "data": "0x3659cfe600000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed", + "output": "0x", + "gas_used": 11797, + "gas_limit": 29441, "status": "Return", "steps": [], "decoded": { @@ -3742,9 +3600,10 @@ { "raw_log": { "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x" }, "decoded": { "name": null, @@ -3760,95 +3619,58 @@ ] } ], - "exit": "Return", - "out": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220607ab0127648221f85a3c5aa83342e14854ad89da469abf0f7ec7bb4dc104cd364736f6c634300081c0033", - "nonce": 14, - "gas_used": 1739553 + "exit": "Stop", + "out": "0x", + "nonce": 25, + "gas_used": 39065 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x92cf5b", + "cumulativeGasUsed": "0x9899", "logs": [ { - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x" } ], - "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000" }, - "block_hash": "0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3", - "block_number": 7 + "block_hash": "0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f", + "block_number": 22 }, { "info": { - "transaction_hash": "0xe405e21ba26d4a3b0a72c85452048c4f59cb45eff93e20f4008c71fda12766b8", + "transaction_hash": "0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "contract_address": null, + "to": null, + "contract_address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", "traces": [ { "parent": null, - "children": [ - 1 - ], + "children": [], "idx": 0, "trace": { "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "maybe_precompile": null, - "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "CALL", - "value": "0x0", - "data": "0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 117292, - "gas_limit": 170823, - "status": "Stop", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [], - "ordering": [ - { - "Call": 0 - } - ] - }, - { - "parent": 0, - "children": [ - 2 - ], - "idx": 1, - "trace": { - "depth": 1, - "success": true, - "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "maybe_precompile": null, + "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CALL", + "kind": "CREATE", "value": "0x0", - "data": "0x4f1ef2860000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 111022, - "gas_limit": 162030, - "status": "Stop", + "data": "0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033", + "gas_used": 4859861, + "gas_limit": 6452395, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -3860,10 +3682,9 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" }, "decoded": { "name": null, @@ -3875,32 +3696,61 @@ "ordering": [ { "Log": 0 - }, - { - "Call": 0 } ] - }, + } + ], + "exit": "Return", + "out": "0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033", + "nonce": 12, + "gas_used": 5308447 + }, + "receipt": { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x51001f", + "logs": [ { - "parent": 1, + "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000" + }, + "block_hash": "0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee", + "block_number": 11 + }, + { + "info": { + "transaction_hash": "0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39", + "transaction_index": 0, + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contract_address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "traces": [ + { + "parent": null, "children": [], - "idx": 2, + "idx": 0, "trace": { - "depth": 2, + "depth": 0, "success": true, - "caller": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", - "maybe_precompile": null, + "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "DELEGATECALL", + "kind": "CREATE", "value": "0x0", - "data": "0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 98133, - "gas_limit": 147028, - "status": "Stop", + "data": "0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "output": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033", + "gas_used": 207717, + "gas_limit": 293492, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -3912,10 +3762,9 @@ { "raw_log": { "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" }, "decoded": { "name": null, @@ -3926,9 +3775,9 @@ { "raw_log": { "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" + "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" }, "decoded": { "name": null, @@ -3939,11 +3788,9 @@ { "raw_log": { "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" ], - "data": "0x" + "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" }, "decoded": { "name": null, @@ -3954,9 +3801,9 @@ { "raw_log": { "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" }, "decoded": { "name": null, @@ -3981,90 +3828,77 @@ ] } ], - "exit": "Stop", - "out": "0x", - "nonce": 22, - "gas_used": 140412 + "exit": "Return", + "out": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033", + "nonce": 1, + "gas_used": 285919 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x2247c", + "cumulativeGasUsed": "0x45cdf", "logs": [ { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508" - ], - "data": "0x" - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" }, { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" + "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" + "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" }, { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152" ], - "data": "0x" + "data": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001" }, { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "address": "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" } ], - "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000100000000000000000000000400080000000000400000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000100000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000" + "logsBloom": "0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000" }, - "block_hash": "0xf75a7a59382e0738da333f3d7ae4ad35b1e26563e6d9409cf8130b2641eee215", - "block_number": 11 + "block_hash": "0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96", + "block_number": 2 }, { "info": { - "transaction_hash": "0xd44073f051108c8f3c39edf183d0bcaea084672b414c2374c6d6750e9ef9fa27", + "transaction_hash": "0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "contract_address": null, + "to": null, + "contract_address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "traces": [ { "parent": null, - "children": [ - 1 - ], + "children": [], "idx": 0, "trace": { "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "maybe_precompile": null, + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CALL", + "kind": "CREATE", "value": "0x0", - "data": "0xdf5b3547000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 38658, - "gas_limit": 66767, + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 474055, + "gas_limit": 648947, "status": "Return", "steps": [], "decoded": { @@ -4073,47 +3907,14 @@ "call_data": null } }, - "logs": [], - "ordering": [ - { - "Call": 0 - } - ] - }, - { - "parent": 0, - "children": [], - "idx": 1, - "trace": { - "depth": 1, - "success": true, - "caller": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", - "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", - "maybe_precompile": null, - "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "DELEGATECALL", - "value": "0x0", - "data": "0xdf5b3547000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 31336, - "gas_limit": 58554, - "status": "Stop", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, "logs": [ { "raw_log": { "topics": [ - "0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], - "data": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d" + "data": "0x" }, "decoded": { "name": null, @@ -4124,9 +3925,9 @@ { "raw_log": { "topics": [ - "0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786" + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" ], - "data": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000000000000000000" + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" }, "decoded": { "name": null, @@ -4146,42 +3947,43 @@ } ], "exit": "Return", - "out": "0x", - "nonce": 30, - "gas_used": 60778 + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 5, + "gas_used": 582975 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0xed6a", + "cumulativeGasUsed": "0x8e53f", "logs": [ { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "topics": [ - "0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], - "data": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d" + "data": "0x" }, { - "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", "topics": [ - "0x77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786" + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" ], - "data": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d0000000000000000000000000000000000000000000000000000000000000000" + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000002000000000000000000000000000000000000000000000000000000100000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000001000000000100000000000000" + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x0e637d647581fe5de6fcbcd11328753276819facc3fd30917ff91c0602dcdcb1", - "block_number": 17 + "block_hash": "0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c", + "block_number": 6 }, { "info": { - "transaction_hash": "0x0407695da91c821753dcf7e68b5284a95c603e466b110cce53db7254dd1f1278", - "transaction_index": 0, + "transaction_hash": "0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8", + "transaction_index": 1, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "contract_address": null, + "to": null, + "contract_address": "0x9a676e781a523b5d0c0e43731313a708cb607508", "traces": [ { "parent": null, @@ -4191,18 +3993,18 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", - "maybe_precompile": null, + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CALL", + "kind": "CREATE", "value": "0x0", - "data": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "output": "0x", - "gas_used": 4364, - "gas_limit": 14198, - "status": "Stop", + "data": "0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033", + "gas_used": 1149341, + "gas_limit": 1540412, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -4214,11 +4016,9 @@ { "raw_log": { "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" }, "decoded": { "name": null, @@ -4234,38 +4034,36 @@ ] } ], - "exit": "Stop", - "out": "0x", - "nonce": 32, - "gas_used": 25796 + "exit": "Return", + "out": "0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033", + "nonce": 14, + "gas_used": 1303571 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x64c4", + "cumulativeGasUsed": "0x3a1ea5", "logs": [ { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "address": "0x9a676e781a523b5d0c0e43731313a708cb607508", "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" } ], - "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0xcaf92fca6d10a7a22a30f948ad817d4944b661aaacfde3c771e9f6584842716d", - "block_number": 18 + "block_hash": "0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310", + "block_number": 12 }, { "info": { - "transaction_hash": "0x38f2b8e4d56e8cd317b7ec6c7f676ead48e1c7c86e17619810ea766df8bea1cb", - "transaction_index": 2, + "transaction_hash": "0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "to": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "contract_address": null, "traces": [ { "parent": null, @@ -4275,18 +4073,18 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "maybe_precompile": false, + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "CALL", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, - "status": "Return", + "data": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "output": "0x", + "gas_used": 4360, + "gas_limit": 14193, + "status": "Stop", "steps": [], "decoded": { "label": null, @@ -4298,8 +4096,9 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], "data": "0x" }, @@ -4308,69 +4107,47 @@ "params": null }, "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 } ], "ordering": [ { "Log": 0 - }, - { - "Log": 1 } ] } ], - "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 5, - "gas_used": 573230 + "exit": "Stop", + "out": "0x", + "nonce": 30, + "gas_used": 25792 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x1a3d8a", + "cumulativeGasUsed": "0x64c0", "logs": [ { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", + "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], "data": "0x" - }, - { - "address": "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851", - "block_number": 3 + "block_hash": "0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72", + "block_number": 25 }, { "info": { - "transaction_hash": "0x851c5b070f316830eef55c050a3ada207080c56674c175fb21f47a8f4a5dfb21", + "transaction_hash": "0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "contract_address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "traces": [ { "parent": null, @@ -4380,17 +4157,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x61010060405234801561001157600080fd5b50604051615c04380380615c0483398101604081905261003091610135565b6001600160a01b0380841660805280821660c052821660a05261005161005d565b50504660e05250610182565b600054610100900460ff16156100c95760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561011b576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461013257600080fd5b50565b60008060006060848603121561014a57600080fd5b83516101558161011d565b60208501519093506101668161011d565b60408501519092506101778161011d565b809150509250925092565b60805160a05160c05160e0516159ee61021660003960006126560152600081816105b10152818161101d0152818161139901528181611be5015281816129b001528181613e5b0152614347015260006107620152600081816104f901528181610feb0152818161136701528181611c7901528181612a7d01528181612c0001528181613f8101526143ed01526159ee6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000000000000000000000000000000000000000000081565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061103f5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113bb5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000000000000000000000000000000000000000000000909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000000000000000000000000000000000000000000000909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f00000000000000000000000000000000000000000000000000000000000000004603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8530000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "output": "0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061103f5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806113bb5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033", - "gas_used": 4634013, - "gas_limit": 6148339, + "data": "0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033", + "output": "0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033", + "gas_used": 347700, + "gas_limit": 476189, "status": "Return", "steps": [], "decoded": { @@ -4403,9 +4180,11 @@ { "raw_log": { "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x" }, "decoded": { "name": null, @@ -4422,35 +4201,37 @@ } ], "exit": "Return", - "out": "0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061103f5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806113bb5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a26469706673582212200cc2c53198d1376ca39e01ec60dc33252e1ea176d7ccfb07d6d44332803d936164736f6c634300081c0033", - "nonce": 12, - "gas_used": 5054169 + "out": "0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033", + "nonce": 0, + "gas_used": 428298 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x4d1ed9", + "cumulativeGasUsed": "0x6890a", "logs": [ { - "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x" } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000" + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x0428351d2f48a69a4442b4ac4be70bb23a016b29b702282793ccefee9ea6aaf3", - "block_number": 7 + "block_hash": "0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea", + "block_number": 1 }, { "info": { - "transaction_hash": "0xd731646803dbeb86f6882b501adfb712ddd0c0ab58ebd0b070794de92c7777b6", - "transaction_index": 2, + "transaction_hash": "0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "contract_address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", "traces": [ { "parent": null, @@ -4460,17 +4241,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x60a060405234801561001057600080fd5b50604051611eb9380380611eb983398101604081905261002f9161019c565b6001600160a01b0381166100c55760405162461bcd60e51b815260206004820152604c60248201527f44656c617965645769746864726177616c526f757465722e636f6e737472756360448201527f746f723a205f656967656e506f644d616e616765722063616e6e6f742062652060648201526b7a65726f206164647265737360a01b608482015260a4015b60405180910390fd5b6001600160a01b0381166080526100da6100e0565b506101cc565b600054610100900460ff16156101485760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bc565b60005460ff908116101561019a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156101ae57600080fd5b81516001600160a01b03811681146101c557600080fd5b9392505050565b608051611ccb6101ee600039600081816101fa0152610be00152611ccb6000f3fe60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000000000000000000000000000000000000000000000169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c00330000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6", - "output": "0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c0033", - "gas_used": 1499498, - "gas_limit": 2001723, + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 474055, + "gas_limit": 648947, "status": "Return", "steps": [], "decoded": { @@ -4483,9 +4264,23 @@ { "raw_log": { "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" }, "decoded": { "name": null, @@ -4497,39 +4292,50 @@ "ordering": [ { "Log": 0 + }, + { + "Log": 1 } ] } ], "exit": "Return", - "out": "0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220060484b503d4d2d26a9834beaa9e43a9cc6b415e231b0ce415a2c88aa336014364736f6c634300081c0033", - "nonce": 18, - "gas_used": 1676224 + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 9, + "gas_used": 582975 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x525890", + "cumulativeGasUsed": "0x8e53f", "logs": [ { - "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", + "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + "data": "0x" + }, + { + "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000" + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0", + "block_hash": "0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c", "block_number": 9 }, { "info": { - "transaction_hash": "0xa1e0398c2dde583fe8c57690419d4f2ec2dee733e02fd823bd1dd6bdb141f9db", - "transaction_index": 1, + "transaction_hash": "0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "to": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", "contract_address": null, "traces": [ { @@ -4542,18 +4348,18 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x9623609d0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000084eb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000", + "data": "0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d", "output": "0x", - "gas_used": 118552, - "gas_limit": 172617, - "status": "Stop", + "gas_used": 56296, + "gas_limit": 59254, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -4570,25 +4376,23 @@ }, { "parent": 0, - "children": [ - 2 - ], + "children": [], "idx": 1, "trace": { "depth": 1, "success": true, - "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "caller": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "address": "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CALL", + "kind": "DELEGATECALL", "value": "0x0", - "data": "0x4f1ef28600000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084eb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000", + "data": "0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d", "output": "0x", - "gas_used": 112194, - "gas_limit": 163709, + "gas_used": 49162, + "gas_limit": 51341, "status": "Stop", "steps": [], "decoded": { @@ -4601,10 +4405,9 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" + "0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe" ], - "data": "0x" + "data": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d" }, "decoded": { "name": null, @@ -4616,32 +4419,61 @@ "ordering": [ { "Log": 0 - }, - { - "Call": 0 } ] - }, + } + ], + "exit": "Return", + "out": "0x", + "nonce": 31, + "gas_used": 78008 + }, + "receipt": { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x130b8", + "logs": [ { - "parent": 1, + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "topics": [ + "0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe" + ], + "data": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d" + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000" + }, + "block_hash": "0x2031601ca07c60213e659cd4a2110fe879d8a03b45e12a778ed377044eac92ee", + "block_number": 26 + }, + { + "info": { + "transaction_hash": "0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349", + "transaction_index": 1, + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contract_address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "traces": [ + { + "parent": null, "children": [], - "idx": 2, + "idx": 0, "trace": { - "depth": 2, + "depth": 0, "success": true, - "caller": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "address": "0x68b1d87f95878fe05b998f19b66f4baba5de1aed", - "maybe_precompile": null, + "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "DELEGATECALL", + "kind": "CREATE", "value": "0x0", - "data": "0xeb990c59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a", - "output": "0x", - "gas_used": 99229, - "gas_limit": 148606, - "status": "Stop", + "data": "0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033", + "gas_used": 1156594, + "gas_limit": 1549847, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -4653,51 +4485,90 @@ { "raw_log": { "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - ], - "data": "0x" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" }, "decoded": { "name": null, "params": null }, "position": 0 - }, + } + ], + "ordering": [ { - "raw_log": { - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, + "Log": 0 + } + ] + } + ], + "exit": "Return", + "out": "0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033", + "nonce": 26, + "gas_used": 1310846 + }, + "receipt": { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x149917", + "logs": [ + { + "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + ], + "logsBloom": "0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "block_hash": "0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f", + "block_number": 22 + }, + { + "info": { + "transaction_hash": "0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57", + "transaction_index": 0, + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contract_address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "traces": [ + { + "parent": null, + "children": [], + "idx": 0, + "trace": { + "depth": 0, + "success": true, + "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", + "maybe_precompile": false, + "selfdestruct_address": null, + "selfdestruct_refund_target": null, + "selfdestruct_transferred_value": null, + "kind": "CREATE", + "value": "0x0", + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 474055, + "gas_limit": 648947, + "status": "Return", + "steps": [], + "decoded": { + "label": null, + "return_data": null, + "call_data": null + } + }, + "logs": [ { "raw_log": { "topics": [ - "0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a" + "data": "0x" }, "decoded": { "name": null, @@ -4708,9 +4579,9 @@ { "raw_log": { "topics": [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" }, "decoded": { "name": null, @@ -4725,88 +4596,128 @@ }, { "Log": 1 - }, - { - "Log": 2 - }, - { - "Log": 3 - }, - { - "Log": 4 } ] } ], - "exit": "Stop", - "out": "0x", - "nonce": 25, - "gas_used": 141812 + "exit": "Return", + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 4, + "gas_used": 582975 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x40605", + "cumulativeGasUsed": "0x8e53f", "logs": [ { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed" - ], - "data": "0x" - }, - { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], "data": "0x" }, { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "address": "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9", "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000" + }, + "block_hash": "0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10", + "block_number": 5 + }, + { + "info": { + "transaction_hash": "0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090", + "transaction_index": 0, + "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "to": null, + "contract_address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "traces": [ { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", - "topics": [ - "0x4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e" + "parent": null, + "children": [], + "idx": 0, + "trace": { + "depth": 0, + "success": true, + "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "maybe_precompile": false, + "selfdestruct_address": null, + "selfdestruct_refund_target": null, + "selfdestruct_transferred_value": null, + "kind": "CREATE", + "value": "0x0", + "data": "0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033", + "gas_used": 2265519, + "gas_limit": 3017745, + "status": "Return", + "steps": [], + "decoded": { + "label": null, + "return_data": null, + "call_data": null + } + }, + "logs": [ + { + "raw_log": { + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + } ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a" - }, + "ordering": [ + { + "Log": 0 + } + ] + } + ], + "exit": "Return", + "out": "0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033", + "nonce": 15, + "gas_used": 2507423 + }, + "receipt": { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x26429f", + "logs": [ { - "address": "0x8a791620dd6260079bf849dc5567adc3f2fdc318", + "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" } ], - "logsBloom": "0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000010000000100000000000000000000000000000000000000400000002000001000000000000000000000000000000000000020000000000000100800800001004000000000000000000000000400000000100000000000000000000000000000000000080004000000000000000002000000000000000000000008400000000000000000000000000000000000000000020400000200000000000040000040000002008000001000000000020000000000000000001000000000000000000000000000000020000000000400000" + "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000" }, - "block_hash": "0xe8f1fde659ea68d923d7994dc04a673f0f91b8fb184302f7d70735f91a37d594", + "block_hash": "0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184", "block_number": 13 }, { "info": { - "transaction_hash": "0xbdad1d302ceed6a3bebc68f75d63dcabacdb6a7dbc0e83cd8de88bb9374dcafa", + "transaction_hash": "0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "contract_address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", "traces": [ { "parent": null, @@ -4816,17 +4727,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x61018060405234801561001157600080fd5b50604051613dc9380380613dc9833981016040819052610030916102d0565b86868686868686610041858261035b565b63ffffffff16156100e55760405162461bcd60e51b815260206004820152606060248201527f52657761726473436f6f7264696e61746f723a2047454e455349535f5245574160448201527f5244535f54494d455354414d50206d7573742062652061206d756c7469706c6560648201527f206f662043414c43554c4154494f4e5f494e54455256414c5f5345434f4e4453608482015260a4015b60405180910390fd5b6100f2620151808661035b565b63ffffffff16156101915760405162461bcd60e51b815260206004820152605760248201527f52657761726473436f6f7264696e61746f723a2043414c43554c4154494f4e5f60448201527f494e54455256414c5f5345434f4e4453206d7573742062652061206d756c746960648201527f706c65206f6620534e415053484f545f434144454e4345000000000000000000608482015260a4016100dc565b6001600160a01b0396871661012052949095166101405263ffffffff92831660805290821660a052811660c05291821660e05216610100526101d16101e3565b50504661016052506103919350505050565b600054610100900460ff161561024b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100dc565b60005460ff908116101561029d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146102b457600080fd5b50565b805163ffffffff811681146102cb57600080fd5b919050565b600080600080600080600060e0888a0312156102eb57600080fd5b87516102f68161029f565b60208901519097506103078161029f565b9550610315604089016102b7565b9450610323606089016102b7565b9350610331608089016102b7565b925061033f60a089016102b7565b915061034d60c089016102b7565b905092959891949750929550565b600063ffffffff83168061037f57634e487b7160e01b600052601260045260246000fd5b8063ffffffff84160691505092915050565b60805160a05160c05160e051610100516101205161014051610160516139a2610427600039600061181f0152600081816104400152612295015260006106ec01526000818161035701526120c40152600081816102cb0152612170015260008181610419015261207301526000818161065e0152611dea01526000818161060401528181611ea10152611f7c01526139a26000f3fe608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f000000000000000000000000000000000000000000000000000000000000000081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000000000000000000000000000000000000000000081565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000000000460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000000000611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb7880", - "output": "0x608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f0000000000000000000000000000000000000000000000000000000065fb788081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000076a70081565b6103e97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f0000000000000000000000000000000000000000000000000000000000093a8081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f00000000000000000000000000000000000000000000000000000000005c490081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000007a69460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f00000000000000000000000000000000000000000000000000000000005c490016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000278d00164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033", - "gas_used": 2978924, - "gas_limit": 3961002, + "data": "0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033", + "gas_used": 4731771, + "gas_limit": 6283496, "status": "Return", "steps": [], "decoded": { @@ -4858,31 +4769,31 @@ } ], "exit": "Return", - "out": "0x608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f0000000000000000000000000000000000000000000000000000000065fb788081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000076a70081565b6103e97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f0000000000000000000000000000000000000000000000000000000000093a8081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f00000000000000000000000000000000000000000000000000000000005c490081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000007a69460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f00000000000000000000000000000000000000000000000000000000005c490016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000278d00164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a264697066735822122031520852554c6ecd15a943497c2f52ce164f92aa6e1a4838fbda5cb9dc8304b164736f6c634300081c0033", - "nonce": 15, - "gas_used": 3277944 + "out": "0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033", + "nonce": 17, + "gas_used": 5172419 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x320478", + "cumulativeGasUsed": "0x4eecc3", "logs": [ { - "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "address": "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" } ], - "logsBloom": "0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000" + "logsBloom": "0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0xf4d46b6b8dbbe4e745dc4c6a56bc046bd6591c7d62dab08422124ab94c13e667", - "block_number": 8 + "block_hash": "0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592", + "block_number": 15 }, { "info": { - "transaction_hash": "0x2c639a7ffaf188e645bdd0f62c0f0b303593a3b144b04842affe5a3b4f3f4eef", + "transaction_hash": "0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, @@ -4890,7 +4801,9 @@ "traces": [ { "parent": null, - "children": [], + "children": [ + 1 + ], "idx": 0, "trace": { "depth": 0, @@ -4903,10 +4816,10 @@ "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 576796, + "gas_limit": 782983, "status": "Return", "steps": [], "decoded": { @@ -4919,10 +4832,106 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f" + ], + "data": "0x" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 1 + } + ], + "ordering": [ + { + "Log": 0 + }, + { + "Call": 0 + }, + { + "Log": 1 + } + ] + }, + { + "parent": 0, + "children": [ + 2 + ], + "idx": 1, + "trace": { + "depth": 1, + "success": true, + "caller": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "maybe_precompile": null, + "selfdestruct_address": null, + "selfdestruct_refund_target": null, + "selfdestruct_transferred_value": null, + "kind": "DELEGATECALL", + "value": "0x0", + "data": "0xa6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef", + "output": "0x", + "gas_used": 102007, + "gas_limit": 743939, + "status": "Stop", + "steps": [], + "decoded": { + "label": null, + "return_data": null, + "call_data": null + } + }, + "logs": [ + { + "raw_log": { + "topics": [ + "0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 + }, + { + "raw_log": { + "topics": [ + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x" + "data": "0x0000000000000000000000000000000000000000000000000000000000000000" }, "decoded": { "name": null, @@ -4933,15 +4942,28 @@ { "raw_log": { "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + "0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507" ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + "data": "0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012" }, "decoded": { "name": null, "params": null }, - "position": 0 + "position": 1 + }, + { + "raw_log": { + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 1 } ], "ordering": [ @@ -4950,68 +4972,40 @@ }, { "Log": 1 + }, + { + "Log": 2 + }, + { + "Call": 0 + }, + { + "Log": 3 + }, + { + "Log": 4 } ] - } - ], - "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 28, - "gas_used": 573230 - }, - "receipt": { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x8bf2e", - "logs": [ - { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" - ], - "data": "0x" }, { - "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - } - ], - "logsBloom": "0x00000000000000000000000000000000400004000000000000000000000000000000000000000000000400000000000000400000000000000004000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020080000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - }, - "block_hash": "0x9c3ef5b4d659952b184d2b6e033f739e0bb5933a43d84118ce3f08a7c369e0db", - "block_number": 15 - }, - { - "info": { - "transaction_hash": "0xbd915f86d3825918e7b3e23f3a26470ab72a7643e95da39926f2f79c5e79e809", - "transaction_index": 1, - "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x09635f643e140090a9a8dcd712ed6285858cebef", - "traces": [ - { - "parent": null, + "parent": 1, "children": [], - "idx": 0, + "idx": 2, "trace": { - "depth": 0, + "depth": 2, "success": true, - "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "caller": "0xc5a5c42992decbae36851359345fe25997f5c42d", "address": "0x09635f643e140090a9a8dcd712ed6285858cebef", - "maybe_precompile": false, + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "STATICCALL", "value": "0x0", - "data": "0x6080604052348015600f57600080fd5b506105298061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033", - "output": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033", - "gas_used": 264506, - "gas_limit": 365977, + "data": "0x313ce567", + "output": "0x0000000000000000000000000000000000000000000000000000000000000012", + "gas_used": 265, + "gas_limit": 635006, "status": "Return", "steps": [], "decoded": { @@ -5025,27 +5019,79 @@ } ], "exit": "Return", - "out": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea26469706673582212207dcc3a1a28726484144825c2fae6f73b060be6cb27431e56efe26512aa3db1d064736f6c634300081c0033", - "nonce": 27, - "gas_used": 338612 + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 28, + "gas_used": 687292 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x1dd7a5", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "cumulativeGasUsed": "0xa7cbc", + "logs": [ + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f" + ], + "data": "0x" + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507" + ], + "data": "0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012" + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + { + "address": "0xc5a5c42992decbae36851359345fe25997f5c42d", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + ], + "logsBloom": "0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000000000000000000000000000000040000000000000000000000000104000000000000800000000000000000000000040000000200000002000050000000000410000000000080000000000000800000000000000000000000000000000400000000000000000000000000000000000000040020480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000" }, - "block_hash": "0x81783d9d97c1968230d9d30cfdaa4670bb20c462f55b2c8713d06d119b5de3f7", - "block_number": 14 + "block_hash": "0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f", + "block_number": 24 }, { "info": { - "transaction_hash": "0x414c1ede6b128e717c1643ab40a93b262507151357271cb4d904c1961d7d7b18", + "transaction_hash": "0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160", "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "contract_address": "0x610178da211fef7d417bc0e6fed39f05609ad788", "traces": [ { "parent": null, @@ -5055,17 +5101,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x60a060405234801561001057600080fd5b50604051611d33380380611d3383398101604081905261002f9161010c565b6001600160a01b0381166080528061004561004c565b505061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b608051611bc761016c60003960008181610216015281816107a801528181610b490152610c130152611bc76000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9", - "output": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033", - "gas_used": 1447443, - "gas_limit": 1931973, + "data": "0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000", + "output": "0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033", + "gas_used": 3162610, + "gas_limit": 4205258, "status": "Return", "steps": [], "decoded": { @@ -5097,35 +5143,35 @@ } ], "exit": "Return", - "out": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212203f70452935d3e059629020fffa567a64a201a63eabf594b284906bbd5fb88c3b64736f6c634300081c0033", - "nonce": 26, - "gas_used": 1617137 + "out": "0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033", + "nonce": 10, + "gas_used": 3475494 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x18acf1", + "cumulativeGasUsed": "0x350826", "logs": [ { - "address": "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f", + "address": "0x610178da211fef7d417bc0e6fed39f05609ad788", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff" } ], - "logsBloom": "0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x81783d9d97c1968230d9d30cfdaa4670bb20c462f55b2c8713d06d119b5de3f7", - "block_number": 14 + "block_hash": "0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056", + "block_number": 10 }, { "info": { - "transaction_hash": "0x046411743d2c08a8f69f7117e4aed15eb84999f401e950cafac8436c9d2c04d8", + "transaction_hash": "0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e", "transaction_index": 1, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "contract_address": null, + "to": null, + "contract_address": "0x0165878a594ca255338adfa4d48449f69242eb8f", "traces": [ { "parent": null, @@ -5135,18 +5181,18 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "maybe_precompile": null, + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CALL", + "kind": "CREATE", "value": "0x0", - "data": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "output": "0x", - "gas_used": 4371, - "gas_limit": 16304, - "status": "Stop", + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 474055, + "gas_limit": 648947, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -5158,9 +5204,8 @@ { "raw_log": { "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], "data": "0x" }, @@ -5169,44 +5214,66 @@ "params": null }, "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 } ], "ordering": [ { "Log": 0 + }, + { + "Log": 1 } ] } ], - "exit": "Stop", - "out": "0x", - "nonce": 31, - "gas_used": 25803 + "exit": "Return", + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 6, + "gas_used": 582975 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x15235", + "cumulativeGasUsed": "0x11ca7e", "logs": [ { - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], "data": "0x" + }, + { + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x0e637d647581fe5de6fcbcd11328753276819facc3fd30917ff91c0602dcdcb1", - "block_number": 17 + "block_hash": "0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c", + "block_number": 6 }, { "info": { - "transaction_hash": "0xb6a38a3d8da1705b9b28d965f44c38bad15f54d84fdaf02eac16b102176b150c", - "transaction_index": 3, + "transaction_hash": "0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "contract_address": null, @@ -5228,10 +5295,10 @@ "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010422bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "data": "0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 142336, - "gas_limit": 205678, + "gas_used": 90394, + "gas_limit": 133535, "status": "Stop", "steps": [], "decoded": { @@ -5257,18 +5324,18 @@ "depth": 1, "success": true, "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CALL", "value": "0x0", - "data": "0x4f1ef286000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010422bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "data": "0x4f1ef2860000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000", "output": "0x", - "gas_used": 135625, - "gas_limit": 195906, - "status": "Stop", + "gas_used": 84457, + "gas_limit": 125652, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -5281,7 +5348,7 @@ "raw_log": { "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" ], "data": "0x" }, @@ -5308,54 +5375,27 @@ "trace": { "depth": 2, "success": true, - "caller": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "address": "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "maybe_precompile": null, - "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "DELEGATECALL", - "value": "0x0", - "data": "0x22bf40e4000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 122355, - "gas_limit": 179999, - "status": "Stop", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [ - { - "raw_log": { - "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 - }, + "caller": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "address": "0x0b306bf915c4d645ff596e518faf3f9669b97016", + "maybe_precompile": null, + "selfdestruct_address": null, + "selfdestruct_refund_target": null, + "selfdestruct_transferred_value": null, + "kind": "DELEGATECALL", + "value": "0x0", + "data": "0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e", + "output": "0x", + "gas_used": 71624, + "gas_limit": 111506, + "status": "Stop", + "steps": [], + "decoded": { + "label": null, + "return_data": null, + "call_data": null + } + }, + "logs": [ { "raw_log": { "topics": [ @@ -5374,9 +5414,10 @@ { "raw_log": { "topics": [ - "0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69" + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a" + "data": "0x000000000000000000000000000000000000000000000000000000000000001e" }, "decoded": { "name": null, @@ -5407,51 +5448,30 @@ }, { "Log": 2 - }, - { - "Log": 3 - }, - { - "Log": 4 } ] } ], "exit": "Stop", "out": "0x", - "nonce": 19, - "gas_used": 166144 + "nonce": 22, + "gas_used": 113158 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x54e190", + "cumulativeGasUsed": "0x1ba06", "logs": [ { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0" + "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016" ], "data": "0x" }, { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "topics": [ - "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", - "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", - "topics": [ - "0x6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512" - }, - { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -5460,32 +5480,33 @@ "data": "0x" }, { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", "topics": [ - "0xafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69" + "0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d", + "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a" + "data": "0x000000000000000000000000000000000000000000000000000000000000001e" }, { - "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001" } ], - "logsBloom": "0x00000000000000000000000040000000400000000000000000c00000000000000000000000000000000000000000080000000000000000100000000000000001000000000000000000000400000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000108000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000002000400000" + "logsBloom": "0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000" }, - "block_hash": "0x8abe408d42ab3bba02e5677b3845f85daaf040c37808488094e194b7eb6a4da0", - "block_number": 9 + "block_hash": "0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded", + "block_number": 19 }, { "info": { - "transaction_hash": "0xf63348d9d494abf9775ab12c8f00d13e58abb43735511d6fbdcbc50bdfbfdd46", - "transaction_index": 1, + "transaction_hash": "0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", "to": null, - "contract_address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "contract_address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "traces": [ { "parent": null, @@ -5495,17 +5516,17 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, "kind": "CREATE", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b506040516104be3803806104be83398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610345806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - "output": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033", - "gas_used": 216356, - "gas_limit": 302820, + "data": "0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "output": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "gas_used": 474055, + "gas_limit": 648947, "status": "Return", "steps": [], "decoded": { @@ -5518,9 +5539,8 @@ { "raw_log": { "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], "data": "0x" }, @@ -5529,47 +5549,69 @@ "params": null }, "position": 0 + }, + { + "raw_log": { + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + }, + "decoded": { + "name": null, + "params": null + }, + "position": 0 } ], "ordering": [ { "Log": 0 + }, + { + "Log": 1 } ] } ], "exit": "Return", - "out": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212209176cbc732e35579ce4ae7c873e9cf0d842b9c03ed71928415a44a507cb220b364736f6c634300081c0033", - "nonce": 11, - "gas_used": 288554 + "out": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "nonce": 3, + "gas_used": 582975 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x537874", + "cumulativeGasUsed": "0x8e53f", "logs": [ { - "address": "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e", + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" ], "data": "0x" + }, + { + "address": "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x5a7a3e18533c10d9e81916d33460352c00313b7387d53d582fc75258d878e46e", - "block_number": 6 + "block_hash": "0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702", + "block_number": 4 }, { "info": { - "transaction_hash": "0xd4bc553858d9284ea2380fa803173ac8864efeb45752b89fc1ab2c45958a1d1d", - "transaction_index": 3, + "transaction_hash": "0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173", + "transaction_index": 1, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": null, - "contract_address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "contract_address": null, "traces": [ { "parent": null, @@ -5579,18 +5621,18 @@ "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "maybe_precompile": false, + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", + "maybe_precompile": null, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CREATE", + "kind": "CALL", "value": "0x0", - "data": "0x6080604052604051610d78380380610d78833981016040819052610022916103e7565b828161003082826000610044565b5061003c905082610070565b50505061050c565b61004d836100de565b60008251118061005a5750805b1561006b57610069838361011e565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100b0600080516020610d31833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100db8161014a565b50565b6100e7816101e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101438383604051806060016040528060278152602001610d516027913961027a565b9392505050565b6001600160a01b0381166101b45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80600080516020610d318339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6102535760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101ab565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c5565b60606001600160a01b0384163b6102e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101ab565b600080856001600160a01b0316856040516102fd91906104bd565b600060405180830381855af49150503d8060008114610338576040519150601f19603f3d011682016040523d82523d6000602084013e61033d565b606091505b50909250905061034e828286610358565b9695505050505050565b60608315610367575081610143565b8251156103775782518084602001fd5b8160405162461bcd60e51b81526004016101ab91906104d9565b80516001600160a01b03811681146103a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103de5781810151838201526020016103c6565b50506000910152565b6000806000606084860312156103fc57600080fd5b61040584610391565b925061041360208501610391565b60408501519092506001600160401b0381111561042f57600080fd5b8401601f8101861361044057600080fd5b80516001600160401b03811115610459576104596103ad565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610487576104876103ad565b60405281815282820160200188101561049f57600080fd5b6104b08260208301602086016103c3565b8093505050509250925092565b600082516104cf8184602087016103c3565b9190910192915050565b60208152600082518060208401526104f88160408501602087016103c3565b601f01601f19169190910160400192915050565b6108168061051b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "output": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "gas_used": 465106, - "gas_limit": 636783, - "status": "Return", + "data": "0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "output": "0x", + "gas_used": 4367, + "gas_limit": 14202, + "status": "Stop", "steps": [], "decoded": { "label": null, @@ -5602,8 +5644,9 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], "data": "0x" }, @@ -5612,128 +5655,68 @@ "params": null }, "position": 0 - }, - { - "raw_log": { - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" - }, - "decoded": { - "name": null, - "params": null - }, - "position": 0 } ], "ordering": [ { "Log": 0 - }, - { - "Log": 1 } ] } ], - "exit": "Return", - "out": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220382403f9f1ed20a5a1d1c5dbd9a1753b13344687a8aec46834674bad6791d34064736f6c634300081c0033", - "nonce": 6, - "gas_used": 573230 + "exit": "Stop", + "out": "0x", + "nonce": 29, + "gas_used": 25799 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x22fcb8", + "cumulativeGasUsed": "0xae183", "logs": [ { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", + "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], "data": "0x" - }, - { - "address": "0x0165878a594ca255338adfa4d48449f69242eb8f", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" } ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x806669b9170c613c24f608ec363f8724c5c2530bb4748ba055f07b753d4fb851", - "block_number": 3 + "block_hash": "0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f", + "block_number": 24 }, { "info": { - "transaction_hash": "0xdbeaad0376d936df8f5bb54707e0b78789158df3505b3401a68e8d7b418ccad3", - "transaction_index": 1, + "transaction_hash": "0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0", + "transaction_index": 0, "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "to": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "contract_address": null, + "to": null, + "contract_address": "0x09635f643e140090a9a8dcd712ed6285858cebef", "traces": [ { "parent": null, - "children": [ - 1 - ], + "children": [], "idx": 0, "trace": { "depth": 0, "success": true, "caller": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "address": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "maybe_precompile": null, - "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "CALL", - "value": "0x0", - "data": "0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 19615, - "gas_limit": 35906, - "status": "Stop", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [], - "ordering": [ - { - "Call": 0 - } - ] - }, - { - "parent": 0, - "children": [ - 2 - ], - "idx": 1, - "trace": { - "depth": 1, - "success": true, - "caller": "0x5fbdb2315678afecb367f032d93f642f64180aa3", - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "maybe_precompile": null, + "address": "0x09635f643e140090a9a8dcd712ed6285858cebef", + "maybe_precompile": false, "selfdestruct_address": null, "selfdestruct_refund_target": null, "selfdestruct_transferred_value": null, - "kind": "CALL", + "kind": "CREATE", "value": "0x0", - "data": "0x4f1ef286000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 13345, - "gas_limit": 29221, - "status": "Stop", + "data": "0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000", + "output": "0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033", + "gas_used": 594640, + "gas_limit": 806048, + "status": "Return", "steps": [], "decoded": { "label": null, @@ -5745,10 +5728,11 @@ { "raw_log": { "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1" + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x" + "data": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff" }, "decoded": { "name": null, @@ -5760,66 +5744,34 @@ "ordering": [ { "Log": 0 - }, - { - "Call": 0 } ] - }, - { - "parent": 1, - "children": [], - "idx": 2, - "trace": { - "depth": 2, - "success": true, - "caller": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", - "address": "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "maybe_precompile": null, - "selfdestruct_address": null, - "selfdestruct_refund_target": null, - "selfdestruct_transferred_value": null, - "kind": "DELEGATECALL", - "value": "0x0", - "data": "0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000000", - "output": "0x", - "gas_used": 456, - "gas_limit": 16294, - "status": "Stop", - "steps": [], - "decoded": { - "label": null, - "return_data": null, - "call_data": null - } - }, - "logs": [], - "ordering": [] } ], - "exit": "Stop", - "out": "0x", - "nonce": 21, - "gas_used": 42735 + "exit": "Return", + "out": "0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033", + "nonce": 27, + "gas_used": 704694 }, "receipt": { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x32a44", + "cumulativeGasUsed": "0xac0b6", "logs": [ { - "address": "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853", + "address": "0x09635f643e140090a9a8dcd712ed6285858cebef", "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1" + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" ], - "data": "0x" + "data": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff" } ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000002000000000010000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000" }, - "block_hash": "0x60216db37c48029a8f153a732e8ce645a284a4bc0c9b52e52db91e73a255b3f4", - "block_number": 10 + "block_hash": "0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19", + "block_number": 23 } ], "historical_states": null diff --git a/contracts/scripts/anvil/state/risc0-deployed-anvil-state.json b/contracts/scripts/anvil/state/risc0-deployed-anvil-state.json new file mode 100644 index 0000000000..7db03bf7db --- /dev/null +++ b/contracts/scripts/anvil/state/risc0-deployed-anvil-state.json @@ -0,0 +1 @@ +{"block":{"number":"0x1","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x68b88d9c","gas_limit":"0x1c9c380","basefee":"0x3b9aca00","difficulty":"0x0","prevrandao":"0x47e787214fec1e52a0e79c2385fa23b005314b4b9959bd7a1ae6d70561dea7c0","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x217ce35","code":"0x","storage":{}},"0x0000000000000000000000000000000000000002":{"nonce":0,"balance":"0x0","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x000000000000000000000000000000000000000000000000000000000000001e","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff","0x0000000000000000000000000000000000000000000000000000000000000003":"0x54657374546f6b656e0000000000000000000000000000000000000000000012","0x0000000000000000000000000000000000000000000000000000000000000004":"0x5445535400000000000000000000000000000000000000000000000000000008","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"}},"0x0b306bf915c4d645ff596e518faf3f9669b97016":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":1,"balance":"0x21e19dcc1358451455c","code":"0x","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x663f3ad617193148711d28f5334ee4ed07016602":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","storage":{}},"0x68b1d87f95878fe05b998f19b66f4baba5de1aed":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788"}},"0xc5a5c42992decbae36851359345fe25997f5c42d":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000032":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","0x0000000000000000000000000000000000000000000000000000000000000064":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x0000000000000000000000000000000000000000000000000000000000000065":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000098":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82","0x3d2729dff03bf559da35a983e55814217363c2a44a7ea59bdf688ab8754ea49d":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":32,"balance":"0x21e19bf369abb666cb7","code":"0x","storage":{}}},"best_block_number":"0x1","blocks":[{"header":{"parentHash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd11edc81769df477541ba906c5be356b0e310e552d66d51ce5f711eadd1b87f9","transactionsRoot":"0x98ae4d0bb6c4baabf6d297530263ce1584a3a8137a459fe6a49443ce1149e8a2","receiptsRoot":"0x4223463caba1338f68d89dd5e9c61433b6e988c5c886294562d1f93362c77fa0","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x19","gasLimit":"0x1c9c380","gasUsed":"0x64c0","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x35214a0","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1e","gas":"0x8b29","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xba35e620fb2e67e4840da54c31385b537bf8cb9aa6ecc8e7e94fad20038204f9","s":"0x176cfd5f089d20eee7efa6909688cad1c012489090f6a4e51c71c10cc7d97469","yParity":"0x1","v":"0x1","hash":"0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcc660d7020a09eee6f153229b728fa56ed083a7166917ff8d87e156acf1f5992","transactionsRoot":"0x87c3f680f05a19792ad28721b0facf62d90a7cf1ffce3d428edc69dee31a9c4a","receiptsRoot":"0x0237366e69bc915931d322ff3a745a35a614ce6220da7c2ef11f9cee6922e50e","logsBloom":"0x00000000001000000000000000000000400000000000000200000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000002000000000000000000000008400000000000000000000000000000000000000000020000000000000000000040000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000","difficulty":"0x0","number":"0x16","gasLimit":"0x1c9c380","gasUsed":"0x149917","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x4d41257","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x19","gas":"0xdf2c","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","r":"0xf409be770fe739b8a2ee8a623ae6bb352923fce56864df9273eedf0bd3991ab6","s":"0x59faad57fbbb66fd1d5bf7a0b084e2f8d065d974fe92e2d88e4d7b248a2bf73d","yParity":"0x0","v":"0x0","hash":"0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1a","gas":"0x1a00a3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x5813b7e66820fb564867f92bd70a203e3c6e80ad44872f6bc5fbb862a5a5bdbb","s":"0x67a92aaaa11bda7ab36fb0c0af49f71681fe1954a73a8a9b94e6c23db8767748","yParity":"0x1","v":"0x1","hash":"0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68238dc4","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0de8add2e06caf903ca6d46dcc01bafa1ad2a2a8d6d718bfd7bda1dd8c591848","transactionsRoot":"0x8bbd69ec40af286b18efcf97864ef61f69618c86bd9a30b5bd766809c14cd40f","receiptsRoot":"0x4abc27cd20735837c724eb015763f975c3b88e5d13444fdaa9c1a314a70e2c21","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1b8e2cc6","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x7","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xbc5b5c680e5693f7e12233b87e6dd4eff0c6481bd1c347f7d1d5aa5a47e897a7","s":"0x5cfe125033c53249d57901cf63173faab03c2326222dc0161311826b6a35abab","yParity":"0x1","v":"0x1","hash":"0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xe2cc5ca9fa3487c496989f0346a8a2665442a7e212a54e45e84286251e1550bb","transactionsRoot":"0x3372c01818e9245ab810af1f59cb4d0cc8989177cfc5342ad3314a826a7a1a5a","receiptsRoot":"0xe4d9f87c2251df5fabdf6908a74e34cbcda0ff6a3fed0c6876a8b0257c193481","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x10","gasLimit":"0x1c9c380","gasUsed":"0x16fb3","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xab1a7b5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x13","gas":"0x219c2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x9e233353b3a57f549b17d147397a126b4709af4f202af934295fa111a4cd0b65","s":"0x6d8fa2e99e9e8bea7f8d4c060cb88af7c7e0a09c59d6ba15c54aba0d31738d5f","yParity":"0x0","v":"0x0","hash":"0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x37977e14f043d7c0313bdf337e8ff324b3028017795da6286bacf0c59dc9ffa2","transactionsRoot":"0x70477c0d59fabbb248f7e17646c3d5a328348dbc15d4428106abe2084f1002a6","receiptsRoot":"0x205ca2480444d24376d9ba2e6e577a68de995c60a2f8f5102510380aa0c61c28","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1554fde5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x9","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x85b7e3b3941d20b6d399fead20007319620283869df3674a6faad28ab0f3a1e4","s":"0x5960ddb83a4133431b104428382259ffcbf973a2a13a496aa45a330255258995","yParity":"0x0","v":"0x0","hash":"0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbfeadcf4bec363c1b607a5e3013f60cb2ec48d42b272e33579978ac1e353459a","transactionsRoot":"0xb7bc23d7786b04ad3152fc9f4d47007e4bdc6a97d736df141db331a1821da99b","receiptsRoot":"0x87ddd41d3932b2565969d12f90fe222e5de689cd83df67c33c10e03cb9bfaf41","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000200000000000040000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0x396666","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x12c4e5e3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xa","gas":"0x44f0fe","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x72ec62b68dadae92c6340b986b6661014856a3ff450f3d9b2bd192e70a490172","s":"0x1d6d6d5a14bb9c4d8f130667da4b0551950d2a03450af4f4091ebd75951e765","yParity":"0x0","v":"0x0","hash":"0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xb","gas":"0x5adb9","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","r":"0x5b5277e8d4dc99191ecf322fdbf3c49e306246d21e0e314c9beab6b6e1c86fec","s":"0x1d3265ce2091b8b6959d77b9aa97db31a4bd927cff6c28cd1c6d47cde84c9c60","yParity":"0x1","v":"0x1","hash":"0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x097246291c63ec89ac732b0971312abb9c0d43047ed0665d0e84180716be15dc","transactionsRoot":"0x232ce2d80081c4dec373c3dc73802eb87f76b68ab38ec539c97ecab12802387c","receiptsRoot":"0x664d1e5c403fe20ed39b792a4ffb6fa283d9c9c7aa04034e1265adb4f5bdffbb","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x12","gasLimit":"0x1c9c380","gasUsed":"0x16c80","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x8343dee","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x15","gas":"0x1f777","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0xcfa3a86407e9b125377e96787848e6fa8ad51ec3c673926c82b462f642722d35","s":"0xa066c8b4d2d4a383eadf8e54015dfcb5451a73ae51b6536f1acc45f2d79c4e7","yParity":"0x1","v":"0x1","hash":"0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0e09d19a5de6c5552ea39fae978c1b998a7e0db7a1bc1a539d8f2e150c821cc1","transactionsRoot":"0x0625a40f3dbf197ade683e0dbbb4fa03437560568849e78c55551069bf942cd2","receiptsRoot":"0xd9aea2498f0b4dcc31cce14880a5dc3174000b41efa1db4e9f5e4d18de81648f","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0x11ca7e","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1f256022","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x5","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xd8c2b63d4ea5678df5a3b3c3a54f2f281a0faf34d84c70fe5733edb1fbcf036","s":"0x3a6cb296c36023894ac7b4fac9d23fcd6ce4235af69b8fd797648976aefe1b5","yParity":"0x1","v":"0x1","hash":"0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x6","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xf5cd16c26b469e91443738f252ed0785fe8e07b610c379acbd5129d580f91c2d","s":"0x64f8f9bfd494992228144fe016fb464d257f82a967c68b17803680d5d65057f1","yParity":"0x0","v":"0x0","hash":"0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x871cd84b9f3adeb3118d803edf9c7c4fb93753fafd3530f415646f483a8b8ef3","transactionsRoot":"0x7b5b5d2531601e38f873cd01be4be50d816c1d079ec5e655c7de3457c19b8125","receiptsRoot":"0x21c202c2917df5a790b4d6f4e42512bafe97690fd8da372d666323274f621126","logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000","difficulty":"0x0","number":"0xf","gasLimit":"0x1c9c380","gasUsed":"0x5df480","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xb8b6f6a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x11","gas":"0x669a30","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xa97a844bd6ac6c5311043b1f79367e1dc25361f3f1abfc48f15ec01094f2ac63","s":"0x1d2277b51fd73467f590340670ea88003725999e4b3facab067c91f2cd8ed0f6","yParity":"0x1","v":"0x1","hash":"0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x12","gas":"0x138a0f","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x7b0b83bf55096027709e3feffbaa64c64a17e671438bbac0ee5ff0903526821b","s":"0x1f4f768a1acf122cd43721f9264e00bcd59b75f3646804355771a16093d5e3fb","yParity":"0x0","v":"0x0","hash":"0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x7874f4a939d9c557f447f6dbae2eeb126466118c85334de819c1e99e54f4422a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5068850e93df3483edd34c07d9cff66027bceba7b3ad7e23d8308f88dc79424b","transactionsRoot":"0x41f35302ef5cf5b6c498c1a81ed10c4d70d5604f52df85ee70a0950fab24e380","receiptsRoot":"0x78b8188d2d51db91c774a3ad0c4af02f42f8cccdcf23ac9382e09e36c9be5caf","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x6890a","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x87ef3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","r":"0xad141f355928da088aeb1c1cd80e579eae7f6e761fd49ba5c913837260e10eaf","s":"0x4d96223d3fe36cea3dfea510c0c4ec09d78112b90b7d04af7f9387f7a6a1aa47","yParity":"0x0","v":"0x0","hash":"0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x69e144742ed002c0ec335a223a318e61e4c628c60a659d8aae445925acbc2744","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x236ea17ebbe7e6e653f253184c5c53784ad98e0edc6924b67f8d67ce0084865b","transactionsRoot":"0x35ab70de576df1c2a96e0aa7636c7869e2792eaa2cbf4b2b943f6bb3c632f494","receiptsRoot":"0xa5b94f5f5820f20993dbeaa2d2060d052b0a7dbc50dccb57be76ea36af431a76","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x1152a4","timestamp":"0x68b88d9c","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x168508","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6101808060405234610c9257604081611f5380380380916100208285610c96565b833981010312610c925780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa15610b11575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e0604051916103068284610c96565b60068352601f19820136602085013760205f604051828101907f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be482527f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4604082015260408152610377606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161039d84610ccd565b5260205f604051828101907f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f82527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642604082015260408152610400606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161042684610cda565b5260205f604051828101907f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34782527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b604082015260408152610489606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160021015610b5257606084015260205f604051828101907f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a782527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6604082015260408152610517606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160031015610b5257608084015260205f604051828101907f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d82527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e826040820152604081526105a5606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160041015610b525760a084015260205f604051828101907f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49382527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809604082015260408152610633606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160051015610b525760c084015260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa15610b11575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526106f8606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526107c460a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261089060a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519760205f604051828101907f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c82527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e033360408201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d03076260608201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d360808201526080815261095c60a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa15610b11575f8051610140526101008190526060610120526020610160525b885180610100511015610b7a575f19810190808211610b66576101005190035f1901908111610b66578951811015610b5257610160519060051b8a0101519060405191610a176101205184610c96565b60028352610160516040903690850137610a3083610ccd565b52610a3a82610cda565b52604051610a4b6101605182610c96565b5f8152601f196101605101366101605183013781519061ffff8211610b3a5791604051928391610140516101605184015260408301815190916101605101905f905b808210610b1c575050509281610ad994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610c96565b5f60405191805180916101605101845e820191818352806101605193039060025afa15610b11575f51610100805160010190526109c7565b6040513d5f823e3d90fd5b82518452610160518896509384019390920191600190910190610a8d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c28352610bbe60e284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a084015260828352610c1860a284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f516001600160e01b03191681526040516112689182610ceb83396080518281816105c50152610dc7015260a0518281816105810152610ded015260c0518281816101690152610e2501525181818160ae0152610d330152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610cb957604052565b634e487b7160e01b5f52604160045260245ffd5b805115610b525760200190565b805160011015610b52576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f0000000000000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f000000000000000000000000000000000000000000000000000000000000000060801c83527f000000000000000000000000000000000000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f0000000000000000000000000000000000000000000000000000000000000000608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033a54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f5604446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0","r":"0xe53caf1ef8f20cc80febec5e4bf35bc017e79351bd230f93b3b42b171897690f","s":"0x29bd204af02965d730d692b958e455660a328984a9c0bd6c1fa0ea6c661dc069","yParity":"0x0","v":"0x0","hash":"0xd09f03bb59663e56394d89f5fb4161ccd056ac94e68cacfdd4df50df4389b35b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x93a5a9a21983cfb2d0d9849a10d74056e3067fce770de838f00ad793bba3b810","transactionsRoot":"0xe1fc3e4ee15e07d06f46cfa389a0dec77fe9ff6261cdcaaca68a3a4e290a889d","receiptsRoot":"0xa0ffc9b392082d5dbea7889d3584cc1f6b59905563e2a26b7c3f99f007b9f626","logsBloom":"0x00000000000000000000000040000000400004000000000000800000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000001000000000000000000000000040000000040000000000000000104000000000000800000000000000000000000440000000200000002000050000000000410000000000080000000000200800000000000000000000000000000000400000000000000000000000000000000000000040060480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x18","gasLimit":"0x1c9c380","gasUsed":"0xae183","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3c4f79b","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1c","gas":"0xda227","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000","r":"0x68b93d78cde6ac2e94aee15e25eb2dde5876a9bc3c590f1982e4ef9e5d946fc3","s":"0x6b642bea701cf5fed80fc04caf6c2c1dfd03ac53676aa84b3673c875ed58675a","yParity":"0x1","v":"0x1","hash":"0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1d","gas":"0x8b32","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x2e5ac093e1dc518caaf2a9314f613b2ca47e74442103a64e688569a67cd6a90e","s":"0x1c5cec4d49ac2619aa60c91c66c755ed5627efb23581a34d0e7f3e312466596b","yParity":"0x0","v":"0x0","hash":"0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x61f96951e009c3faca9e22e668c334f96cf8613f2b96823c4fcefc338c12cef7","transactionsRoot":"0x03d80393ecceed2a0703081585e6bb1140c62d91dacbac962118a9617213b4de","receiptsRoot":"0x37d1079b247362deefb299371a192c8e1e832cf149b0a85714b45eaa1d4e8d69","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x17","gasLimit":"0x1c9c380","gasUsed":"0xac0b6","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x44777b3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1b","gas":"0xdfa86","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000","r":"0xe7ef9e36a49166ecac6f5f20e2aa0ce5d98b16dddcd804c7061202968b356a2","s":"0x44448a124bbb0c10d2cd959bd2fa37b277cb2aa090f77a9c1b3c3c63b6d65ea2","yParity":"0x0","v":"0x0","hash":"0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x960db369a7ac67dfcc0954df2c18383b284faa3d48d8c27c76d32e76c9a258cb","transactionsRoot":"0x82481245456b137bad6f2b803289e4bce00248adada84bbba209a620c29e2232","receiptsRoot":"0x43306daaaf74614d90df27fd1b2c403355aeebf7671b156295b332d0f81425f4","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000","difficulty":"0x0","number":"0xb","gasLimit":"0x1c9c380","gasUsed":"0x51001f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1102e8f2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xc","gas":"0x694cf5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xa1d60978a7f3d46ba661c5965044d122a7c29b20672c94d9f1579da1cf260c41","s":"0x339452a6f75f726b7d587b429b545a5726159c2c846ff9dc0fd109651983a33c","yParity":"0x0","v":"0x0","hash":"0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0510d0890d18539d33f28fc9d338c95b0fdf42c6d71733fee837b25c714418fc","transactionsRoot":"0xda32dd4f2a67c950235982c9dc99650577fd650e5a88d87fc21a865bfdeccda3","receiptsRoot":"0x2fa2efc1cd5d57b505c544a356f63089306cf0752b8d1a6e642cdc6dab9e85f7","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x183eac51","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x8","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x5ffa8667f85c28bc1f36ef1179b97a60ecfc98f1dabe3801419d470132cdafaf","s":"0x60e45209c4f5e81198a887a292ceddce57b7902b5617bbc8bdb712692e15242c","yParity":"0x1","v":"0x1","hash":"0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x819755d440401992f7d746d3bae845d75c443fab504ea2248b5cb8874ca78eb6","transactionsRoot":"0x8a53916f6a4ee035fca0c8e94b8a64c214db1d8ebf695e29c984f340577fa902","receiptsRoot":"0x43eb13d2729197f55fdb1dbfad7317a2c2bba461bfe6e588921ed0466c8072cc","logsBloom":"0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200","difficulty":"0x0","number":"0x14","gasLimit":"0x1c9c380","gasUsed":"0x1db2b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x64b2945","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x17","gas":"0x2b6ee","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","r":"0xca8b2bef1a770b1d34f66e5f3542eab9c87ec05107a2cb674dc669b39f15251f","s":"0x71a047a195d82893fefe346cdfaa383bf00329de8336ac7db73403ce8e80f075","yParity":"0x1","v":"0x1","hash":"0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x113d4e2e12c75dc5dc77e3f843b3ff586a577ff4d510da255d76c1cca38c740d","transactionsRoot":"0x183586121fdd4ee59e4e4cb687bc3bdf57997f9a91bccb50fd024bc3ba3b8e7b","receiptsRoot":"0x98dda837c8d132bfd4039aa4e05ee217f7a23497db5619318147ad978615080c","logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000","difficulty":"0x0","number":"0xd","gasLimit":"0x1c9c380","gasUsed":"0x26429f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xe2ddc73","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xf","gas":"0x31bd01","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xea84ded5f15ebb02432f77cbc867341c788f67dcc07253d308f40758b2ab9990","s":"0x3bc80e23acd0633ed2b6c331e1bd886b2d1f0db80c16a2758a6d2c777e953b2c","yParity":"0x0","v":"0x0","hash":"0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68b88d9a","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x00ff573085e925848f661f83d8f0487f2bf6dc5056ec3df9ae5d889383d1a5d9","transactionsRoot":"0x0a66023981b2bb760e188a49e893bd30541e5ccd332db35e5e19455b31e67d96","receiptsRoot":"0x3f2e168fb3528ba1f6f3ca73cb54735d6d9d339db4b54ba18ccf2e101940baff","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000","difficulty":"0x0","number":"0x11","gasLimit":"0x1c9c380","gasUsed":"0x1ca99","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x95d9880","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x14","gas":"0x29eb2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x3e9ca8eab1c79d16d09d4842f4b3c4cdb557034b3c9466e0e2e9808a44a88b9b","s":"0x4dd644048d69092834e7ef13d50a15243f8793d2013ccf45f057792c855dc505","yParity":"0x1","v":"0x1","hash":"0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbd5494d2b153b9e294bddf1a234aada9c10f35b7c1c98076433df4167fce2b50","transactionsRoot":"0xc366bd69c20423c6e1759d44e28cb849d1edf6c77bcc7d2656a8f9b055b0c2f3","receiptsRoot":"0x61963e6ecc4c0a12560a30265e9dcab7f3aa4f82f1e8f15484b9b2f6f5ec016e","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x23661d70","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x4","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x195ded3e07fbfe4e085babca622696a5913ddb617299f87284d2bf2cfa9c0de4","s":"0x190a3a6f244b2f888f4ed3a82788243aa5bf35015a6e493726a205cef25a46ee","yParity":"0x1","v":"0x1","hash":"0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd1f37ba75ceac5487bd4f035b197f3a11ee309a8c280355b8182f576367152a3","transactionsRoot":"0xbc9be4f5bb5891d1117862fd392dd96b13886fda1804a15cad36d3582d14fdb4","receiptsRoot":"0x79ba9af9e95fe0e30a5ea15632b9e2ec0ee4c8ea1828c7733c617de4539a0750","logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x15","gasLimit":"0x1c9c380","gasUsed":"0x16c6b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x5836638","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x18","gas":"0x214f5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x7645dba25806897f2124f5a883c1bfee4a3522656527c4e04d0543a372813936","s":"0x624a605a813c2b1e89b0292812f73badc67b3f5a64139b8adade61c4a671e514","yParity":"0x1","v":"0x1","hash":"0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd86e5ef52e4886e70fa67640996cb42222e820d51672faacd7f0481826ded844","transactionsRoot":"0xacc68def3d9e61ce6b3d0269243e298b5ed840384efe67618164100af64f189c","receiptsRoot":"0x7682b2b964582de9cef13aa65d025b86fdf8df5a7d01c86e88eb53d8103c05f2","logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000","difficulty":"0x0","number":"0x13","gasLimit":"0x1c9c380","gasUsed":"0x1ba06","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x72f5847","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x16","gas":"0x2628b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","r":"0x5e8286b9de9adbfb089cd99a2220229393e1e7d2650fbca67481e361f0873603","s":"0x478e2acc6420a5a8fdd508a4e3254942769194c5df2201e45456890bb7aa50fd","yParity":"0x1","v":"0x1","hash":"0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x557a45ccbf10c0042bc368d5b9e9261ab119730e3d1bd8238ab410ce49ec9d0b","transactionsRoot":"0x51cc111f3930a241e139b909deaca9e061d655c780591e8c320896084262a6af","receiptsRoot":"0x64fcbf1f14419d9cb04b2c392726da6dfbd58f1b0a35ae979e1c88b8f970eeaf","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x131eb","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2df21af9","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gas":"0x18db1","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","r":"0x834692aa575929c82e8cac73f8a76544f72561dca8706328663a96fc88199372","s":"0x67fa29bd66c480e0eea2edc7f189cc2e3982fba6ce4d67184e2471a57eacb219","yParity":"0x0","v":"0x0","hash":"0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x31bc1819fa24e471c3b4238d13124e03aa0512e947c413da856b85839b7096ca","transactionsRoot":"0x81002360790b630320c7b5882f64fbef65f764107c3608acac461eb8ced201ad","receiptsRoot":"0xed4257cf3242f330e62e6e07ed62f793c3817312e970b82edba27d01cf0f853e","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x283b84b9","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xd1f94bf3ed74bb11a4a36509d9dda373c1e12363a4dcfe24af54aa03511f1c7a","s":"0x27b9ee82d0d5a4302f3965c8a347494c4d9a501500e78bd809b0952bd212ae94","yParity":"0x0","v":"0x0","hash":"0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xeea0cf337f58440d64dde0356dd4ee7b4f65db83b2c7b3bdeb917eca4d7e19cb","transactionsRoot":"0x003cf6847d199fc3a0a7bcc16fe99b5729696eb6e600887622bdcb1fe8555159","receiptsRoot":"0x7d94aad6acf03e3a33f2388fd3aa1536fb20a3e37b2d5c4fb8a9c4c8f880041e","logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x45cdf","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x345de6be","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gas":"0x5abee","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xf03f02f23fb83bbf12c56b7acb7677870073673fe17e05dabbb4de8cfe15d9c","s":"0x72c7ef4fc448b5c732204282a0bd53208e8fb3b5bb9018c9388bc0dab8cc799","yParity":"0x0","v":"0x0","hash":"0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd49cb1e6c4d63abe3eea23ee8214311ec5c783fb0c1ae69c27b84516c3d7d689","transactionsRoot":"0xd3d99613a4add2901dede645f3670036418ee0e11a422d217cd6e902720de8dd","receiptsRoot":"0x2fe61838dff500688c03ba0736cc804e62904b8a776a45fe42cca7e82c23c3b1","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x1a","gasLimit":"0x1c9c380","gasUsed":"0x130b8","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e800d3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1f","gas":"0x13c46","maxFeePerGas":"0x6a42941","maxPriorityFeePerGas":"0x1","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","value":"0x0","accessList":[],"input":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","r":"0x27e0a78db3f7be6c0687bf6bc80939f2e6134a353eb044328ff0b40ab6e8791","s":"0x66db0351bc1a675318695fa6c86cd35c73cf98b013aa4d5330ce52763e41d7e1","yParity":"0x1","v":"0x1","hash":"0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbd09368e8ecc4c96fc1760e7677be02dd27c0c58aa739eaf9244b16347239c50","transactionsRoot":"0x02ea02feae1c7c080f2d1325ea0afc7b27dc67ead8cf7156cc8394674bc9a042","receiptsRoot":"0xa846cf60ed497420ed2569067e2280aa70704a8e2abd2ee3e47d6fe6603a5f6a","logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000","difficulty":"0x0","number":"0xc","gasLimit":"0x1c9c380","gasUsed":"0x3a1ea5","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xfa331d2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xd","gas":"0x31b28a","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x615e45fdd1e541f669ac74f9f28f695014444e83e50031bb026e0ce9a19927e3","s":"0x46c9a9fb5a4606d9dd995ee097ee7c75d8fbaffed22c3ec96b95414fb102e237","yParity":"0x1","v":"0x1","hash":"0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xe","gas":"0x19dbb2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xb95b51d92cbdc531a0cef68b4df15a21ffec7599acf3435df22f8129ca117db6","s":"0x1419604921d9b98927b52ce4ef8ce91e497541de3c79b305323ceb2074815cbf","yParity":"0x0","v":"0x0","hash":"0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x6ecf46a2ae2943565cd6996c1a1d099beb79a7d98c94079a0132d935dcf8c0ed","transactionsRoot":"0x4340b45735d08f706166d4e3abff3a620f0848110ecde7c73b43cbd0b93a35c6","receiptsRoot":"0xf864c8d5281f6ff30ad43286be885f326150528aab26746ec850a58cb5c9d58a","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xe","gasLimit":"0x1c9c380","gasUsed":"0x3de98b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xcb3f9a3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x10","gas":"0x507c67","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x5136a6a740bf17e6223d184d4efdde1204c1fb54056bd41dfb1fff746da3cb10","s":"0x3c6cd137e61015e8cefa66acf793bb3923e1e47e9a3fee9d67a3ab0cb90cd695","yParity":"0x0","v":"0x0","hash":"0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683"}},"impersonated_sender":null}],"ommers":[]}],"transactions":[{"info":{"transaction_hash":"0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70539,"gas_limit":113685,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64602,"gas_limit":106112,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51769,"gas_limit":92271,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":24,"gas_used":93291},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16c6b","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb","block_number":21},{"info":{"transaction_hash":"0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4360,"gas_limit":14193,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":30,"gas_used":25792},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x64c0","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72","block_number":25},{"info":{"transaction_hash":"0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","output":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","gas_used":347700,"gas_limit":476189,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","nonce":0,"gas_used":428298},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x6890a","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea","block_number":1},{"info":{"transaction_hash":"0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4367,"gas_limit":14202,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":29,"gas_used":25799},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xae183","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","block_number":24},{"info":{"transaction_hash":"0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","gas_used":4859861,"gas_limit":6452395,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","nonce":12,"gas_used":5308447},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x51001f","logs":[{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000"},"block_hash":"0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee","block_number":11},{"info":{"transaction_hash":"0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":90394,"gas_limit":133535,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":84457,"gas_limit":125652,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x0165878a594ca255338adfa4d48449f69242eb8f","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e","output":"0x","gas_used":71624,"gas_limit":111506,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x000000000000000000000000000000000000000000000000000000000000001e"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":22,"gas_used":113158},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1ba06","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x000000000000000000000000000000000000000000000000000000000000001e"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000"},"block_hash":"0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded","block_number":19},{"info":{"transaction_hash":"0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","gas_used":2265519,"gas_limit":3017745,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","nonce":15,"gas_used":2507423},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x26429f","logs":[{"address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000"},"block_hash":"0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184","block_number":13},{"info":{"transaction_hash":"0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70703,"gas_limit":114238,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64705,"gas_limit":106596,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51811,"gas_limit":92687,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":19,"gas_used":94131},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16fb3","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728","block_number":16},{"info":{"transaction_hash":"0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":3,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702","block_number":4},{"info":{"transaction_hash":"0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","gas_used":855443,"gas_limit":1150949,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","nonce":18,"gas_used":985021},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5df480","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000"},"block_hash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","block_number":15},{"info":{"transaction_hash":"0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":5,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","block_number":6},{"info":{"transaction_hash":"0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":7,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670","block_number":7},{"info":{"transaction_hash":"0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","gas_used":2263024,"gas_limit":3014632,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","nonce":13,"gas_used":2505362},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x263a92","logs":[{"address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000"},"block_hash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","block_number":12},{"info":{"transaction_hash":"0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","gas_used":207717,"gas_limit":293492,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","nonce":1,"gas_used":285919},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x45cdf","logs":[{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}],"logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000"},"block_hash":"0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96","block_number":2},{"info":{"transaction_hash":"0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":98219,"gas_limit":154478,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":92246,"gas_limit":146232,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e8","output":"0x","gas_used":79377,"gas_limit":131729,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5}]}],"exit":"Stop","out":"0x","nonce":23,"gas_used":121643},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1db2b","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200"},"block_hash":"0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20","block_number":20},{"info":{"transaction_hash":"0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","gas_used":3693659,"gas_limit":4910903,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","nonce":16,"gas_used":4057483},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3de98b","logs":[{"address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000"},"block_hash":"0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2","block_number":14},{"info":{"transaction_hash":"0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":94293,"gas_limit":148590,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":88344,"gas_limit":140460,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":75499,"gas_limit":126070,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Stop","out":"0x","nonce":20,"gas_used":117401},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1ca99","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000"},"block_hash":"0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e","block_number":17},{"info":{"transaction_hash":"0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","gas_used":1156594,"gas_limit":1549847,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","nonce":26,"gas_used":1310846},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x149917","logs":[{"address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","block_number":22},{"info":{"transaction_hash":"0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","gas_used":4731771,"gas_limit":6283496,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","nonce":17,"gas_used":5172419},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x4eecc3","logs":[{"address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","block_number":15},{"info":{"transaction_hash":"0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":9,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c","block_number":9},{"info":{"transaction_hash":"0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","output":"0x","gas_used":17265,"gas_limit":35332,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe600000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","output":"0x","gas_used":11797,"gas_limit":29441,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":25,"gas_used":39065},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x9899","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000"},"block_hash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","block_number":22},{"info":{"transaction_hash":"0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","output":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","gas_used":23073,"gas_limit":46567,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","nonce":2,"gas_used":78315},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x131eb","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1","block_number":3},{"info":{"transaction_hash":"0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","output":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","gas_used":214146,"gas_limit":300027,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","nonce":11,"gas_used":286272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x396666","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","block_number":10},{"info":{"transaction_hash":"0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":8,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91","block_number":8},{"info":{"transaction_hash":"0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a676e781a523b5d0c0e43731313a708cb607508","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","gas_used":1149341,"gas_limit":1540412,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","nonce":14,"gas_used":1303571},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3a1ea5","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","block_number":12},{"info":{"transaction_hash":"0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":4,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10","block_number":5},{"info":{"transaction_hash":"0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x610178da211fef7d417bc0e6fed39f05609ad788","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x610178da211fef7d417bc0e6fed39f05609ad788","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","gas_used":3162610,"gas_limit":4205258,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","nonce":10,"gas_used":3475494},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x350826","logs":[{"address":"0x610178da211fef7d417bc0e6fed39f05609ad788","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","block_number":10},{"info":{"transaction_hash":"0xd09f03bb59663e56394d89f5fb4161ccd056ac94e68cacfdd4df50df4389b35b","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":null,"contract_address":"0x663f3ad617193148711d28f5334ee4ed07016602","traces":[{"parent":null,"children":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x663f3ad617193148711d28f5334ee4ed07016602","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101808060405234610c9257604081611f5380380380916100208285610c96565b833981010312610c925780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa15610b11575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e0604051916103068284610c96565b60068352601f19820136602085013760205f604051828101907f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be482527f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4604082015260408152610377606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161039d84610ccd565b5260205f604051828101907f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f82527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642604082015260408152610400606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161042684610cda565b5260205f604051828101907f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34782527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b604082015260408152610489606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160021015610b5257606084015260205f604051828101907f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a782527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6604082015260408152610517606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160031015610b5257608084015260205f604051828101907f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d82527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e826040820152604081526105a5606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160041015610b525760a084015260205f604051828101907f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49382527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809604082015260408152610633606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160051015610b525760c084015260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa15610b11575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526106f8606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526107c460a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261089060a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519760205f604051828101907f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c82527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e033360408201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d03076260608201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d360808201526080815261095c60a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa15610b11575f8051610140526101008190526060610120526020610160525b885180610100511015610b7a575f19810190808211610b66576101005190035f1901908111610b66578951811015610b5257610160519060051b8a0101519060405191610a176101205184610c96565b60028352610160516040903690850137610a3083610ccd565b52610a3a82610cda565b52604051610a4b6101605182610c96565b5f8152601f196101605101366101605183013781519061ffff8211610b3a5791604051928391610140516101605184015260408301815190916101605101905f905b808210610b1c575050509281610ad994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610c96565b5f60405191805180916101605101845e820191818352806101605193039060025afa15610b11575f51610100805160010190526109c7565b6040513d5f823e3d90fd5b82518452610160518896509384019390920191600190910190610a8d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c28352610bbe60e284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a084015260828352610c1860a284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f516001600160e01b03191681526040516112689182610ceb83396080518281816105c50152610dc7015260a0518281816105810152610ded015260c0518281816101690152610e2501525181818160ae0152610d330152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610cb957604052565b634e487b7160e01b5f52604160045260245ffd5b805115610b525760200190565b805160011015610b52576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f0000000000000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f000000000000000000000000000000000000000000000000000000000000000060801c83527f000000000000000000000000000000000000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f0000000000000000000000000000000000000000000000000000000000000000608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033a54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f5604446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0","output":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","gas_used":960882,"gas_limit":1301462,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0},{"Call":1},{"Call":2},{"Call":3},{"Call":4},{"Call":5},{"Call":6},{"Call":7},{"Call":8},{"Call":9},{"Call":10},{"Call":11},{"Call":12},{"Call":13},{"Call":14},{"Call":15},{"Call":16},{"Call":17},{"Call":18},{"Call":19},{"Call":20}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363302e47726f74683136526563656970745665726966696572506172616d6574657273","output":"0x60b97a2bdc471360c901f58eb3f22679fc24bd6bf6367e14a8a34744f29516aa","gas_used":84,"gas_limit":1280466,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":2,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4","output":"0x1cbeac7cb8d2fac8051651022d2e04174e8412f25dadd52b81453f1794f29c84","gas_used":84,"gas_limit":1279658,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":3,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642","output":"0xb8a9c5e594a6815546fba67ea41bc84dfacd88ce9cce09c5cc83027161f453af","gas_used":84,"gas_limit":1279161,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":4,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc3472ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b","output":"0x4b770f6234b0842dcb437ad35692e05576a9c67f4955552d6a16fd4e9ae421f1","gas_used":84,"gas_limit":1278657,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":5,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a72b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6","output":"0xaf5fe24ca85c070afb433eb954a0ae0d8d305914d3519fd8155af0c83832a4b2","gas_used":84,"gas_limit":1278181,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":6,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e82","output":"0x93335b9e02e32231be09d3a72bd01d1b0ca02e192ebf05bec1008959bb1b1634","gas_used":84,"gas_limit":1277704,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":7,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d493214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809","output":"0x23507fe4ecce8efc902604ea7fa4aff88c13537f07aed7525b572195f4fa8aea","gas_used":84,"gas_limit":1277227,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":8,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363305f67726f746831362e566572696679696e674b6579","output":"0xfa77044bc9f1aec494a3f424cb9104c24149acf58ca6b219b44bd6b1056f9d4c","gas_used":72,"gas_limit":1276958,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":9,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926","output":"0x2298cec17c15c841adbbf8cc6d7e081c861370f45abaaf4129e6d61da0dc90b1","gas_used":84,"gas_limit":1276530,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":10,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8","output":"0xa2f548430941c9296e3ba3bf440c0b1cc2f874864f7e41707725682236b77470","gas_used":108,"gas_limit":1276041,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":11,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa","output":"0xa0de5dc137b285f0d15790d0e0007a26331cafe00d29bdaa0e7e9afa276847aa","gas_used":108,"gas_limit":1275535,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":12,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e0333110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307621e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d3","output":"0xfb875534fd979f0e4a19693f6281a6a1c7079272b38a50541129234003c035a6","gas_used":108,"gas_limit":1275029,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":13,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363305f67726f746831362e566572696679696e674b65792e4943","output":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22","gas_used":72,"gas_limit":1274776,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":14,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f2223507fe4ecce8efc902604ea7fa4aff88c13537f07aed7525b572195f4fa8aea00000000000000000000000000000000000000000000000000000000000000000200","output":"0x6991d2156eb78af12e3e25bfd673e35ea2e9d54bb645837a07ac57d805d2fa58","gas_used":108,"gas_limit":1273245,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":15,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f2293335b9e02e32231be09d3a72bd01d1b0ca02e192ebf05bec1008959bb1b16346991d2156eb78af12e3e25bfd673e35ea2e9d54bb645837a07ac57d805d2fa580200","output":"0x3747e49de54377ce9abbc014ecd7ec4ca788afec8da840eb6ef0176619d0a40e","gas_used":108,"gas_limit":1271685,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":16,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22af5fe24ca85c070afb433eb954a0ae0d8d305914d3519fd8155af0c83832a4b23747e49de54377ce9abbc014ecd7ec4ca788afec8da840eb6ef0176619d0a40e0200","output":"0xf8114d4632ef201dfb01a62d81ccc0e1953e40332de675f240e0dbdacf97d457","gas_used":108,"gas_limit":1270125,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":17,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f224b770f6234b0842dcb437ad35692e05576a9c67f4955552d6a16fd4e9ae421f1f8114d4632ef201dfb01a62d81ccc0e1953e40332de675f240e0dbdacf97d4570200","output":"0xe9e614c65e73f622bc09ca944bf1ab2668f6bbe04076203d5b1915d5b3224833","gas_used":108,"gas_limit":1268565,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":18,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22b8a9c5e594a6815546fba67ea41bc84dfacd88ce9cce09c5cc83027161f453afe9e614c65e73f622bc09ca944bf1ab2668f6bbe04076203d5b1915d5b32248330200","output":"0x9d01ae8a6175af517297a259ee5064b66ee915ec87bb109e91d8385c6f225d7c","gas_used":108,"gas_limit":1267003,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":19,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f221cbeac7cb8d2fac8051651022d2e04174e8412f25dadd52b81453f1794f29c849d01ae8a6175af517297a259ee5064b66ee915ec87bb109e91d8385c6f225d7c0200","output":"0x232e4c620f567460a68696b693b7744030eac5ecb46ca403d5f69a3eb6e59783","gas_used":108,"gas_limit":1265442,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":20,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xfa77044bc9f1aec494a3f424cb9104c24149acf58ca6b219b44bd6b1056f9d4c2298cec17c15c841adbbf8cc6d7e081c861370f45abaaf4129e6d61da0dc90b1a2f548430941c9296e3ba3bf440c0b1cc2f874864f7e41707725682236b77470a0de5dc137b285f0d15790d0e0007a26331cafe00d29bdaa0e7e9afa276847aafb875534fd979f0e4a19693f6281a6a1c7079272b38a50541129234003c035a6232e4c620f567460a68696b693b7744030eac5ecb46ca403d5f69a3eb6e597830500","output":"0x21c5fdd9b4d576b17581f50b755482ba7a2134a3b5186e8e454acfa1f69511ab","gas_used":144,"gas_limit":1264784,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":21,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x60b97a2bdc471360c901f58eb3f22679fc24bd6bf6367e14a8a34744f29516aaa54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f56c07a65145c3cb48b6101962ea607a4dd93c753bb26975cb47feb00d3666e440421c5fdd9b4d576b17581f50b755482ba7a2134a3b5186e8e454acfa1f69511ab0300","output":"0x73c457ba541936f0d907daf0c7253a39a9c5c427c225ba7709e44702d3c6eedc","gas_used":120,"gas_limit":1264217,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","nonce":0,"gas_used":1135268},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1152a4","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x1e09c7d2881e6c3672e7715df0b439c4c782e6d58664ea625acf19ac3091cc2e","block_number":1},{"info":{"transaction_hash":"0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x09635f643e140090a9a8dcd712ed6285858cebef","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","gas_used":594640,"gas_limit":806048,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","nonce":27,"gas_used":704694},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xac0b6","logs":[{"address":"0x09635f643e140090a9a8dcd712ed6285858cebef","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19","block_number":23},{"info":{"transaction_hash":"0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70560,"gas_limit":106135,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64623,"gas_limit":98680,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51790,"gas_limit":84955,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":21,"gas_used":93312},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16c80","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27","block_number":18},{"info":{"transaction_hash":"0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xc5a5c42992decbae36851359345fe25997f5c42d","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xc5a5c42992decbae36851359345fe25997f5c42d","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":576796,"gas_limit":782983,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Log":0},{"Call":0},{"Log":1}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xa6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","output":"0x","gas_used":102007,"gas_limit":743939,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507"],"data":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012"},"decoded":{"name":null,"params":null},"position":1},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Call":0},{"Log":3},{"Log":4}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x313ce567","output":"0x0000000000000000000000000000000000000000000000000000000000000012","gas_used":265,"gas_limit":635006,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":28,"gas_used":687292},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xa7cbc","logs":[{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507"],"data":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000000000000000000000000000000040000000000000000000000000104000000000000800000000000000000000000040000000200000002000050000000000410000000000080000000000000800000000000000000000000000000000400000000000000000000000000000000000000040020480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","block_number":24},{"info":{"transaction_hash":"0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0165878a594ca255338adfa4d48449f69242eb8f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":6,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x11ca7e","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","block_number":6},{"info":{"transaction_hash":"0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","output":"0x","gas_used":56296,"gas_limit":59254,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","output":"0x","gas_used":49162,"gas_limit":51341,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":31,"gas_used":78008},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x130b8","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0x2031601ca07c60213e659cd4a2110fe879d8a03b45e12a778ed377044eac92ee","block_number":26}],"historical_states":null} \ No newline at end of file diff --git a/contracts/scripts/anvil/state/sp1-deployed-anvil-state.json b/contracts/scripts/anvil/state/sp1-deployed-anvil-state.json new file mode 100644 index 0000000000..2f7d2cc27f --- /dev/null +++ b/contracts/scripts/anvil/state/sp1-deployed-anvil-state.json @@ -0,0 +1 @@ +{"block":{"number":"0x4","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x68b88db5","gas_limit":"0x1c9c380","basefee":"0x2e4f5a9a","difficulty":"0x0","prevrandao":"0x086496386e27a17be7b3b3e3087fe40bf78f33b95c184b7a0771d0c9e9502f8c","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x230368a","code":"0x","storage":{}},"0x0000000000000000000000000000000000000002":{"nonce":0,"balance":"0x0","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x000000000000000000000000000000000000000000000000000000000000001e","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x06530dd13afb697b81e2d602a279ebaec8ca2e31":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","0xcaab7b9788e698b855a97db004a643ebe958e7ce2716f8894c26742dd5905ba0":"0x0000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf"}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff","0x0000000000000000000000000000000000000000000000000000000000000003":"0x54657374546f6b656e0000000000000000000000000000000000000000000012","0x0000000000000000000000000000000000000000000000000000000000000004":"0x5445535400000000000000000000000000000000000000000000000000000008","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"}},"0x0b306bf915c4d645ff596e518faf3f9669b97016":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x0d09209634e053e5a243a04ae58095f3083a1fcf":{"nonce":1,"balance":"0x0","code":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","storage":{}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":4,"balance":"0x21e19d79896c0580cf3","code":"0x","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":2,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x663f3ad617193148711d28f5334ee4ed07016602":{"nonce":1,"balance":"0x0","code":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","storage":{}},"0x68b1d87f95878fe05b998f19b66f4baba5de1aed":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x00000000000000000000000000000000000000000000000000000000000000ff"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788"}},"0xc5a5c42992decbae36851359345fe25997f5c42d":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000001":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000032":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","0x0000000000000000000000000000000000000000000000000000000000000064":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x0000000000000000000000000000000000000000000000000000000000000065":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000066":"0x0000000000000000000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000033":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000065":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000098":"0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000000000000000000000000000000000000000000cb":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82","0x3d2729dff03bf559da35a983e55814217363c2a44a7ea59bdf688ab8754ea49d":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512":{"nonce":1,"balance":"0x0","code":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":32,"balance":"0x21e19bf369abb666cb7","code":"0x","storage":{}}},"best_block_number":"0x4","blocks":[{"header":{"parentHash":"0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd49cb1e6c4d63abe3eea23ee8214311ec5c783fb0c1ae69c27b84516c3d7d689","transactionsRoot":"0xd3d99613a4add2901dede645f3670036418ee0e11a422d217cd6e902720de8dd","receiptsRoot":"0x2fe61838dff500688c03ba0736cc804e62904b8a776a45fe42cca7e82c23c3b1","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x1a","gasLimit":"0x1c9c380","gasUsed":"0x130b8","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e800d3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1f","gas":"0x13c46","maxFeePerGas":"0x6a42941","maxPriorityFeePerGas":"0x1","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","value":"0x0","accessList":[],"input":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","r":"0x27e0a78db3f7be6c0687bf6bc80939f2e6134a353eb044328ff0b40ab6e8791","s":"0x66db0351bc1a675318695fa6c86cd35c73cf98b013aa4d5330ce52763e41d7e1","yParity":"0x1","v":"0x1","hash":"0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xeea0cf337f58440d64dde0356dd4ee7b4f65db83b2c7b3bdeb917eca4d7e19cb","transactionsRoot":"0x003cf6847d199fc3a0a7bcc16fe99b5729696eb6e600887622bdcb1fe8555159","receiptsRoot":"0x7d94aad6acf03e3a33f2388fd3aa1536fb20a3e37b2d5c4fb8a9c4c8f880041e","logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x45cdf","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x345de6be","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gas":"0x5abee","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xf03f02f23fb83bbf12c56b7acb7677870073673fe17e05dabbb4de8cfe15d9c","s":"0x72c7ef4fc448b5c732204282a0bd53208e8fb3b5bb9018c9388bc0dab8cc799","yParity":"0x0","v":"0x0","hash":"0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbd09368e8ecc4c96fc1760e7677be02dd27c0c58aa739eaf9244b16347239c50","transactionsRoot":"0x02ea02feae1c7c080f2d1325ea0afc7b27dc67ead8cf7156cc8394674bc9a042","receiptsRoot":"0xa846cf60ed497420ed2569067e2280aa70704a8e2abd2ee3e47d6fe6603a5f6a","logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000","difficulty":"0x0","number":"0xc","gasLimit":"0x1c9c380","gasUsed":"0x3a1ea5","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xfa331d2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xd","gas":"0x31b28a","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x615e45fdd1e541f669ac74f9f28f695014444e83e50031bb026e0ce9a19927e3","s":"0x46c9a9fb5a4606d9dd995ee097ee7c75d8fbaffed22c3ec96b95414fb102e237","yParity":"0x1","v":"0x1","hash":"0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xe","gas":"0x19dbb2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xb95b51d92cbdc531a0cef68b4df15a21ffec7599acf3435df22f8129ca117db6","s":"0x1419604921d9b98927b52ce4ef8ce91e497541de3c79b305323ceb2074815cbf","yParity":"0x0","v":"0x0","hash":"0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68b88d9a","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xe2cc5ca9fa3487c496989f0346a8a2665442a7e212a54e45e84286251e1550bb","transactionsRoot":"0x3372c01818e9245ab810af1f59cb4d0cc8989177cfc5342ad3314a826a7a1a5a","receiptsRoot":"0xe4d9f87c2251df5fabdf6908a74e34cbcda0ff6a3fed0c6876a8b0257c193481","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x10","gasLimit":"0x1c9c380","gasUsed":"0x16fb3","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xab1a7b5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x13","gas":"0x219c2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x9e233353b3a57f549b17d147397a126b4709af4f202af934295fa111a4cd0b65","s":"0x6d8fa2e99e9e8bea7f8d4c060cb88af7c7e0a09c59d6ba15c54aba0d31738d5f","yParity":"0x0","v":"0x0","hash":"0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x00ff573085e925848f661f83d8f0487f2bf6dc5056ec3df9ae5d889383d1a5d9","transactionsRoot":"0x0a66023981b2bb760e188a49e893bd30541e5ccd332db35e5e19455b31e67d96","receiptsRoot":"0x3f2e168fb3528ba1f6f3ca73cb54735d6d9d339db4b54ba18ccf2e101940baff","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000","difficulty":"0x0","number":"0x11","gasLimit":"0x1c9c380","gasUsed":"0x1ca99","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x95d9880","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x14","gas":"0x29eb2","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x3e9ca8eab1c79d16d09d4842f4b3c4cdb557034b3c9466e0e2e9808a44a88b9b","s":"0x4dd644048d69092834e7ef13d50a15243f8793d2013ccf45f057792c855dc505","yParity":"0x1","v":"0x1","hash":"0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd86e5ef52e4886e70fa67640996cb42222e820d51672faacd7f0481826ded844","transactionsRoot":"0xacc68def3d9e61ce6b3d0269243e298b5ed840384efe67618164100af64f189c","receiptsRoot":"0x7682b2b964582de9cef13aa65d025b86fdf8df5a7d01c86e88eb53d8103c05f2","logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000","difficulty":"0x0","number":"0x13","gasLimit":"0x1c9c380","gasUsed":"0x1ba06","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x72f5847","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x16","gas":"0x2628b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","r":"0x5e8286b9de9adbfb089cd99a2220229393e1e7d2650fbca67481e361f0873603","s":"0x478e2acc6420a5a8fdd508a4e3254942769194c5df2201e45456890bb7aa50fd","yParity":"0x1","v":"0x1","hash":"0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x557a45ccbf10c0042bc368d5b9e9261ab119730e3d1bd8238ab410ce49ec9d0b","transactionsRoot":"0x51cc111f3930a241e139b909deaca9e061d655c780591e8c320896084262a6af","receiptsRoot":"0x64fcbf1f14419d9cb04b2c392726da6dfbd58f1b0a35ae979e1c88b8f970eeaf","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x131eb","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2df21af9","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gas":"0x18db1","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","r":"0x834692aa575929c82e8cac73f8a76544f72561dca8706328663a96fc88199372","s":"0x67fa29bd66c480e0eea2edc7f189cc2e3982fba6ce4d67184e2471a57eacb219","yParity":"0x0","v":"0x0","hash":"0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x1e09c7d2881e6c3672e7715df0b439c4c782e6d58664ea625acf19ac3091cc2e","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xf00e5d17aa6d0e2ea59c9e7ea98e9337856c19b71edeaedb209588d0e626498a","transactionsRoot":"0xd7ebb413fbfede29e415ad474bf75bedd5ece9b2108ab3ffc79e146e8be3d800","receiptsRoot":"0xf1c91720c329978d7ea5afe37649862b671977b8a03dc7fa89046e3f84e5939b","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000010440000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x68446","timestamp":"0x68b88db5","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gas":"0x9004d","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x000000000000000000000000000000000000000000000000000000000000000960803460b857601f61071038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361063f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b00330000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","r":"0x7115aa54bc32b924b756808fc90af266b047e0690af2fa4f225d5ea1730f31d5","s":"0x367c4fdf3bd1aaae3cc628a0d529d76869a51739357554d74480d7467fa778bc","yParity":"0x0","v":"0x0","hash":"0x78baa7ffea920bf995412537611f0112a44cfc409fd2a1266e3ea0ca2bd40970"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x69e144742ed002c0ec335a223a318e61e4c628c60a659d8aae445925acbc2744","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x236ea17ebbe7e6e653f253184c5c53784ad98e0edc6924b67f8d67ce0084865b","transactionsRoot":"0x35ab70de576df1c2a96e0aa7636c7869e2792eaa2cbf4b2b943f6bb3c632f494","receiptsRoot":"0xa5b94f5f5820f20993dbeaa2d2060d052b0a7dbc50dccb57be76ea36af431a76","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x1152a4","timestamp":"0x68b88d9c","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x168508","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6101808060405234610c9257604081611f5380380380916100208285610c96565b833981010312610c925780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa15610b11575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e0604051916103068284610c96565b60068352601f19820136602085013760205f604051828101907f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be482527f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4604082015260408152610377606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161039d84610ccd565b5260205f604051828101907f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f82527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642604082015260408152610400606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161042684610cda565b5260205f604051828101907f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34782527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b604082015260408152610489606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160021015610b5257606084015260205f604051828101907f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a782527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6604082015260408152610517606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160031015610b5257608084015260205f604051828101907f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d82527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e826040820152604081526105a5606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160041015610b525760a084015260205f604051828101907f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49382527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809604082015260408152610633606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160051015610b525760c084015260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa15610b11575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526106f8606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526107c460a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261089060a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519760205f604051828101907f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c82527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e033360408201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d03076260608201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d360808201526080815261095c60a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa15610b11575f8051610140526101008190526060610120526020610160525b885180610100511015610b7a575f19810190808211610b66576101005190035f1901908111610b66578951811015610b5257610160519060051b8a0101519060405191610a176101205184610c96565b60028352610160516040903690850137610a3083610ccd565b52610a3a82610cda565b52604051610a4b6101605182610c96565b5f8152601f196101605101366101605183013781519061ffff8211610b3a5791604051928391610140516101605184015260408301815190916101605101905f905b808210610b1c575050509281610ad994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610c96565b5f60405191805180916101605101845e820191818352806101605193039060025afa15610b11575f51610100805160010190526109c7565b6040513d5f823e3d90fd5b82518452610160518896509384019390920191600190910190610a8d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c28352610bbe60e284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a084015260828352610c1860a284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f516001600160e01b03191681526040516112689182610ceb83396080518281816105c50152610dc7015260a0518281816105810152610ded015260c0518281816101690152610e2501525181818160ae0152610d330152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610cb957604052565b634e487b7160e01b5f52604160045260245ffd5b805115610b525760200190565b805160011015610b52576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f0000000000000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f000000000000000000000000000000000000000000000000000000000000000060801c83527f000000000000000000000000000000000000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f0000000000000000000000000000000000000000000000000000000000000000608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033a54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f5604446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0","r":"0xe53caf1ef8f20cc80febec5e4bf35bc017e79351bd230f93b3b42b171897690f","s":"0x29bd204af02965d730d692b958e455660a328984a9c0bd6c1fa0ea6c661dc069","yParity":"0x0","v":"0x0","hash":"0xd09f03bb59663e56394d89f5fb4161ccd056ac94e68cacfdd4df50df4389b35b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x871cd84b9f3adeb3118d803edf9c7c4fb93753fafd3530f415646f483a8b8ef3","transactionsRoot":"0x7b5b5d2531601e38f873cd01be4be50d816c1d079ec5e655c7de3457c19b8125","receiptsRoot":"0x21c202c2917df5a790b4d6f4e42512bafe97690fd8da372d666323274f621126","logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000","difficulty":"0x0","number":"0xf","gasLimit":"0x1c9c380","gasUsed":"0x5df480","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xb8b6f6a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x11","gas":"0x669a30","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xa97a844bd6ac6c5311043b1f79367e1dc25361f3f1abfc48f15ec01094f2ac63","s":"0x1d2277b51fd73467f590340670ea88003725999e4b3facab067c91f2cd8ed0f6","yParity":"0x1","v":"0x1","hash":"0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x12","gas":"0x138a0f","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x7b0b83bf55096027709e3feffbaa64c64a17e671438bbac0ee5ff0903526821b","s":"0x1f4f768a1acf122cd43721f9264e00bcd59b75f3646804355771a16093d5e3fb","yParity":"0x0","v":"0x0","hash":"0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x31bc1819fa24e471c3b4238d13124e03aa0512e947c413da856b85839b7096ca","transactionsRoot":"0x81002360790b630320c7b5882f64fbef65f764107c3608acac461eb8ced201ad","receiptsRoot":"0xed4257cf3242f330e62e6e07ed62f793c3817312e970b82edba27d01cf0f853e","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x283b84b9","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xd1f94bf3ed74bb11a4a36509d9dda373c1e12363a4dcfe24af54aa03511f1c7a","s":"0x27b9ee82d0d5a4302f3965c8a347494c4d9a501500e78bd809b0952bd212ae94","yParity":"0x0","v":"0x0","hash":"0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x61f96951e009c3faca9e22e668c334f96cf8613f2b96823c4fcefc338c12cef7","transactionsRoot":"0x03d80393ecceed2a0703081585e6bb1140c62d91dacbac962118a9617213b4de","receiptsRoot":"0x37d1079b247362deefb299371a192c8e1e832cf149b0a85714b45eaa1d4e8d69","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x17","gasLimit":"0x1c9c380","gasUsed":"0xac0b6","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x44777b3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1b","gas":"0xdfa86","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000","r":"0xe7ef9e36a49166ecac6f5f20e2aa0ce5d98b16dddcd804c7061202968b356a2","s":"0x44448a124bbb0c10d2cd959bd2fa37b277cb2aa090f77a9c1b3c3c63b6d65ea2","yParity":"0x0","v":"0x0","hash":"0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x6ecf46a2ae2943565cd6996c1a1d099beb79a7d98c94079a0132d935dcf8c0ed","transactionsRoot":"0x4340b45735d08f706166d4e3abff3a620f0848110ecde7c73b43cbd0b93a35c6","receiptsRoot":"0xf864c8d5281f6ff30ad43286be885f326150528aab26746ec850a58cb5c9d58a","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xe","gasLimit":"0x1c9c380","gasUsed":"0x3de98b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xcb3f9a3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x10","gas":"0x507c67","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x5136a6a740bf17e6223d184d4efdde1204c1fb54056bd41dfb1fff746da3cb10","s":"0x3c6cd137e61015e8cefa66acf793bb3923e1e47e9a3fee9d67a3ab0cb90cd695","yParity":"0x0","v":"0x0","hash":"0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbd5494d2b153b9e294bddf1a234aada9c10f35b7c1c98076433df4167fce2b50","transactionsRoot":"0xc366bd69c20423c6e1759d44e28cb849d1edf6c77bcc7d2656a8f9b055b0c2f3","receiptsRoot":"0x61963e6ecc4c0a12560a30265e9dcab7f3aa4f82f1e8f15484b9b2f6f5ec016e","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x23661d70","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x4","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x195ded3e07fbfe4e085babca622696a5913ddb617299f87284d2bf2cfa9c0de4","s":"0x190a3a6f244b2f888f4ed3a82788243aa5bf35015a6e493726a205cef25a46ee","yParity":"0x1","v":"0x1","hash":"0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68238dc4","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x93a5a9a21983cfb2d0d9849a10d74056e3067fce770de838f00ad793bba3b810","transactionsRoot":"0xe1fc3e4ee15e07d06f46cfa389a0dec77fe9ff6261cdcaaca68a3a4e290a889d","receiptsRoot":"0xa0ffc9b392082d5dbea7889d3584cc1f6b59905563e2a26b7c3f99f007b9f626","logsBloom":"0x00000000000000000000000040000000400004000000000000800000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000001000000000000000000000000040000000040000000000000000104000000000000800000000000000000000000440000000200000002000050000000000410000000000080000000000200800000000000000000000000000000000400000000000000000000000000000000000000040060480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x18","gasLimit":"0x1c9c380","gasUsed":"0xae183","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3c4f79b","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1c","gas":"0xda227","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000","r":"0x68b93d78cde6ac2e94aee15e25eb2dde5876a9bc3c590f1982e4ef9e5d946fc3","s":"0x6b642bea701cf5fed80fc04caf6c2c1dfd03ac53676aa84b3673c875ed58675a","yParity":"0x1","v":"0x1","hash":"0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1d","gas":"0x8b32","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x2e5ac093e1dc518caaf2a9314f613b2ca47e74442103a64e688569a67cd6a90e","s":"0x1c5cec4d49ac2619aa60c91c66c755ed5627efb23581a34d0e7f3e312466596b","yParity":"0x0","v":"0x0","hash":"0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x819755d440401992f7d746d3bae845d75c443fab504ea2248b5cb8874ca78eb6","transactionsRoot":"0x8a53916f6a4ee035fca0c8e94b8a64c214db1d8ebf695e29c984f340577fa902","receiptsRoot":"0x43eb13d2729197f55fdb1dbfad7317a2c2bba461bfe6e588921ed0466c8072cc","logsBloom":"0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200","difficulty":"0x0","number":"0x14","gasLimit":"0x1c9c380","gasUsed":"0x1db2b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x64b2945","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x17","gas":"0x2b6ee","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","r":"0xca8b2bef1a770b1d34f66e5f3542eab9c87ec05107a2cb674dc669b39f15251f","s":"0x71a047a195d82893fefe346cdfaa383bf00329de8336ac7db73403ce8e80f075","yParity":"0x1","v":"0x1","hash":"0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x68b88db4","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd11edc81769df477541ba906c5be356b0e310e552d66d51ce5f711eadd1b87f9","transactionsRoot":"0x98ae4d0bb6c4baabf6d297530263ce1584a3a8137a459fe6a49443ce1149e8a2","receiptsRoot":"0x4223463caba1338f68d89dd5e9c61433b6e988c5c886294562d1f93362c77fa0","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x19","gasLimit":"0x1c9c380","gasUsed":"0x64c0","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x35214a0","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1e","gas":"0x8b29","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","value":"0x0","accessList":[],"input":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xba35e620fb2e67e4840da54c31385b537bf8cb9aa6ecc8e7e94fad20038204f9","s":"0x176cfd5f089d20eee7efa6909688cad1c012489090f6a4e51c71c10cc7d97469","yParity":"0x1","v":"0x1","hash":"0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0e09d19a5de6c5552ea39fae978c1b998a7e0db7a1bc1a539d8f2e150c821cc1","transactionsRoot":"0x0625a40f3dbf197ade683e0dbbb4fa03437560568849e78c55551069bf942cd2","receiptsRoot":"0xd9aea2498f0b4dcc31cce14880a5dc3174000b41efa1db4e9f5e4d18de81648f","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0x11ca7e","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1f256022","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x5","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xd8c2b63d4ea5678df5a3b3c3a54f2f281a0faf34d84c70fe5733edb1fbcf036","s":"0x3a6cb296c36023894ac7b4fac9d23fcd6ce4235af69b8fd797648976aefe1b5","yParity":"0x1","v":"0x1","hash":"0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x6","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xf5cd16c26b469e91443738f252ed0785fe8e07b610c379acbd5129d580f91c2d","s":"0x64f8f9bfd494992228144fe016fb464d257f82a967c68b17803680d5d65057f1","yParity":"0x0","v":"0x0","hash":"0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x960db369a7ac67dfcc0954df2c18383b284faa3d48d8c27c76d32e76c9a258cb","transactionsRoot":"0x82481245456b137bad6f2b803289e4bce00248adada84bbba209a620c29e2232","receiptsRoot":"0x43306daaaf74614d90df27fd1b2c403355aeebf7671b156295b332d0f81425f4","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000","difficulty":"0x0","number":"0xb","gasLimit":"0x1c9c380","gasUsed":"0x51001f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1102e8f2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xc","gas":"0x694cf5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xa1d60978a7f3d46ba661c5965044d122a7c29b20672c94d9f1579da1cf260c41","s":"0x339452a6f75f726b7d587b429b545a5726159c2c846ff9dc0fd109651983a33c","yParity":"0x0","v":"0x0","hash":"0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0510d0890d18539d33f28fc9d338c95b0fdf42c6d71733fee837b25c714418fc","transactionsRoot":"0xda32dd4f2a67c950235982c9dc99650577fd650e5a88d87fc21a865bfdeccda3","receiptsRoot":"0x2fa2efc1cd5d57b505c544a356f63089306cf0752b8d1a6e642cdc6dab9e85f7","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x183eac51","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x8","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x5ffa8667f85c28bc1f36ef1179b97a60ecfc98f1dabe3801419d470132cdafaf","s":"0x60e45209c4f5e81198a887a292ceddce57b7902b5617bbc8bdb712692e15242c","yParity":"0x1","v":"0x1","hash":"0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x113d4e2e12c75dc5dc77e3f843b3ff586a577ff4d510da255d76c1cca38c740d","transactionsRoot":"0x183586121fdd4ee59e4e4cb687bc3bdf57997f9a91bccb50fd024bc3ba3b8e7b","receiptsRoot":"0x98dda837c8d132bfd4039aa4e05ee217f7a23497db5619318147ad978615080c","logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000","difficulty":"0x0","number":"0xd","gasLimit":"0x1c9c380","gasUsed":"0x26429f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0xe2ddc73","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xf","gas":"0x31bd01","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0xea84ded5f15ebb02432f77cbc867341c788f67dcc07253d308f40758b2ab9990","s":"0x3bc80e23acd0633ed2b6c331e1bd886b2d1f0db80c16a2758a6d2c777e953b2c","yParity":"0x0","v":"0x0","hash":"0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x7874f4a939d9c557f447f6dbae2eeb126466118c85334de819c1e99e54f4422a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5068850e93df3483edd34c07d9cff66027bceba7b3ad7e23d8308f88dc79424b","transactionsRoot":"0x41f35302ef5cf5b6c498c1a81ed10c4d70d5604f52df85ee70a0950fab24e380","receiptsRoot":"0x78b8188d2d51db91c774a3ad0c4af02f42f8cccdcf23ac9382e09e36c9be5caf","logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x6890a","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gas":"0x87ef3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","r":"0xad141f355928da088aeb1c1cd80e579eae7f6e761fd49ba5c913837260e10eaf","s":"0x4d96223d3fe36cea3dfea510c0c4ec09d78112b90b7d04af7f9387f7a6a1aa47","yParity":"0x0","v":"0x0","hash":"0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcc660d7020a09eee6f153229b728fa56ed083a7166917ff8d87e156acf1f5992","transactionsRoot":"0x87c3f680f05a19792ad28721b0facf62d90a7cf1ffce3d428edc69dee31a9c4a","receiptsRoot":"0x0237366e69bc915931d322ff3a745a35a614ce6220da7c2ef11f9cee6922e50e","logsBloom":"0x00000000001000000000000000000000400000000000000200000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000002000000000000000000000008400000000000000000000000000000000000000000020000000000000000000040000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000","difficulty":"0x0","number":"0x16","gasLimit":"0x1c9c380","gasUsed":"0x149917","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x4d41257","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x19","gas":"0xdf2c","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","r":"0xf409be770fe739b8a2ee8a623ae6bb352923fce56864df9273eedf0bd3991ab6","s":"0x59faad57fbbb66fd1d5bf7a0b084e2f8d065d974fe92e2d88e4d7b248a2bf73d","yParity":"0x0","v":"0x0","hash":"0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1a","gas":"0x1a00a3","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x5813b7e66820fb564867f92bd70a203e3c6e80ad44872f6bc5fbb862a5a5bdbb","s":"0x67a92aaaa11bda7ab36fb0c0af49f71681fe1954a73a8a9b94e6c23db8767748","yParity":"0x1","v":"0x1","hash":"0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd1f37ba75ceac5487bd4f035b197f3a11ee309a8c280355b8182f576367152a3","transactionsRoot":"0xbc9be4f5bb5891d1117862fd392dd96b13886fda1804a15cad36d3582d14fdb4","receiptsRoot":"0x79ba9af9e95fe0e30a5ea15632b9e2ec0ee4c8ea1828c7733c617de4539a0750","logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x15","gasLimit":"0x1c9c380","gasUsed":"0x16c6b","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x5836638","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x18","gas":"0x214f5","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x7645dba25806897f2124f5a883c1bfee4a3522656527c4e04d0543a372813936","s":"0x624a605a813c2b1e89b0292812f73badc67b3f5a64139b8adade61c4a671e514","yParity":"0x1","v":"0x1","hash":"0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbfeadcf4bec363c1b607a5e3013f60cb2ec48d42b272e33579978ac1e353459a","transactionsRoot":"0xb7bc23d7786b04ad3152fc9f4d47007e4bdc6a97d736df141db331a1821da99b","receiptsRoot":"0x87ddd41d3932b2565969d12f90fe222e5de689cd83df67c33c10e03cb9bfaf41","logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000020000000000000000020000000000000100000800000000000000000040000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000200000000000040000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0x396666","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x12c4e5e3","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xa","gas":"0x44f0fe","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","r":"0x72ec62b68dadae92c6340b986b6661014856a3ff450f3d9b2bd192e70a490172","s":"0x1d6d6d5a14bb9c4d8f130667da4b0551950d2a03450af4f4091ebd75951e765","yParity":"0x0","v":"0x0","hash":"0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160"}},"impersonated_sender":null},{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0xb","gas":"0x5adb9","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","r":"0x5b5277e8d4dc99191ecf322fdbf3c49e306246d21e0e314c9beab6b6e1c86fec","s":"0x1d3265ce2091b8b6959d77b9aa97db31a4bd927cff6c28cd1c6d47cde84c9c60","yParity":"0x1","v":"0x1","hash":"0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0de8add2e06caf903ca6d46dcc01bafa1ad2a2a8d6d718bfd7bda1dd8c591848","transactionsRoot":"0x8bbd69ec40af286b18efcf97864ef61f69618c86bd9a30b5bd766809c14cd40f","receiptsRoot":"0x4abc27cd20735837c724eb015763f975c3b88e5d13444fdaa9c1a314a70e2c21","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1b8e2cc6","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x7","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0xbc5b5c680e5693f7e12233b87e6dd4eff0c6481bd1c347f7d1d5aa5a47e897a7","s":"0x5cfe125033c53249d57901cf63173faab03c2326222dc0161311826b6a35abab","yParity":"0x1","v":"0x1","hash":"0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x097246291c63ec89ac732b0971312abb9c0d43047ed0665d0e84180716be15dc","transactionsRoot":"0x232ce2d80081c4dec373c3dc73802eb87f76b68ab38ec539c97ecab12802387c","receiptsRoot":"0x664d1e5c403fe20ed39b792a4ffb6fa283d9c9c7aa04034e1265adb4f5bdffbb","logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000","difficulty":"0x0","number":"0x12","gasLimit":"0x1c9c380","gasUsed":"0x16c80","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x8343dee","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x15","gas":"0x1f777","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0xcfa3a86407e9b125377e96787848e6fa8ad51ec3c673926c82b462f642722d35","s":"0xa066c8b4d2d4a383eadf8e54015dfcb5451a73ae51b6536f1acc45f2d79c4e7","yParity":"0x1","v":"0x1","hash":"0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x37977e14f043d7c0313bdf337e8ff324b3028017795da6286bacf0c59dc9ffa2","transactionsRoot":"0x70477c0d59fabbb248f7e17646c3d5a328348dbc15d4428106abe2084f1002a6","receiptsRoot":"0x205ca2480444d24376d9ba2e6e577a68de995c60a2f8f5102510380aa0c61c28","logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0x8e53f","timestamp":"0x68238dc6","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1554fde5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x9","gas":"0xb906b","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":null,"value":"0x0","accessList":[],"input":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","r":"0x85b7e3b3941d20b6d399fead20007319620283869df3674a6faad28ab0f3a1e4","s":"0x5960ddb83a4133431b104428382259ffcbf973a2a13a496aa45a330255258995","yParity":"0x0","v":"0x0","hash":"0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xfc772625e4110b1ff8723b0e7f137319d52ba96dbad0903e970d17a4ba297f40","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x3fe126955a37f5ba645ae2a83d028bc67c4863ea5d947776a7a4a36ad4fe6093","transactionsRoot":"0x129e9cab702a49fb2445e41a9c6c55e7a661562d3ed4a269606b50d997e82088","receiptsRoot":"0x9f749bd3240d4d283383d345258c1a8fc69e909a2aeb438e043f474fe5289973","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x111e31","timestamp":"0x68b88db5","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x345dbf08","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gas":"0x1908f4","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x000000000000000000000000000000000000000000000000000000000000000960808060405234601557611345908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","r":"0x1789084f940487114454c31433f97fdc60ee1e1082d945730ccc29e146dd8ae5","s":"0x984eaaf01e45e5d5b4ac4421ef9445955eece3a4a8746b4485510b529be205f","yParity":"0x0","v":"0x0","hash":"0x279f5cc917c7ca651cb7f411dd683d643b2be343a2a005c359048c35b60cf156"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x266d3dd8903217771ed1ee39602c8a4edc0bedc7ef08635901e1a6794fa2f1d2","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x93d7195ba0b51b6e78ec6a75c7fc623345f1a9873d64236fcdbdef9c947612be","transactionsRoot":"0xb93cdcebd6ef2319ab3aa62b2b119ab41ea90c0750ff70a4fc31b298f27eede1","receiptsRoot":"0x49698dad21f077a7614d8b2f1423c01e99073ac7e0228e9b9a077dd6b82637f2","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0xc5de","timestamp":"0x68b88db5","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e4f5a9a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gas":"0x1114c","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","value":"0x0","accessList":[],"input":"0x8c95ff1e0000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf","r":"0x80809fdbaf93b7a1b16b776d70940f3b60129d34b1c9d554a7620d32af849d96","s":"0x516076d07ebcc22052585309dd3d2eb5731d7db6c8d9e2a3255373c406f5c93","yParity":"0x1","v":"0x1","hash":"0xadf5de66d8fd77344bd236b9ebedc146b7b17d75ee4a7916ec9f12e7b6391ccd"}},"impersonated_sender":null}],"ommers":[]}],"transactions":[{"info":{"transaction_hash":"0x72616fa5684e3af7a545c0ec1446cd6e82cfcf0d36c16b8174b1b71cee468a66","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600e575f5ffd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","output":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","gas_used":347700,"gas_limit":476189,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033","nonce":0,"gas_used":428298},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x6890a","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2487cb8ed2224447332f00e9936963c01da0f5617e11da5ebcc3a7cb00c984ea","block_number":1},{"info":{"transaction_hash":"0x76787cdb65c2839f5a34d2ffd0b6cfd913cc11afd21a2d1854cc01149f151f67","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600e575f5ffd5b50607380601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","output":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","gas_used":23073,"gas_limit":46567,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033","nonce":2,"gas_used":78315},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x131eb","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x3e395010f96d91a0cd8762e64306fed98c59aa45503bbb37e5419040d2731bd1","block_number":3},{"info":{"transaction_hash":"0x32f87a1cd5bdb0bde6fdec22fbf5f3fbb1e746e2226d12bc8281eacc46a70173","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4367,"gas_limit":14202,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":29,"gas_used":25799},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xae183","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000040000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","block_number":24},{"info":{"transaction_hash":"0xb931df6fcc781334a958cffd72f056f8cce9b9771d9fd99b0c4f0fc5390dd0bf","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561000f575f5ffd5b506040516112b73803806112b783398101604081905261002e9161015c565b806100388161004a565b60805250610044610090565b50610267565b5f5f829050601f8151111561007d578260405163305a27a960e01b8152600401610074919061020c565b60405180910390fd5b805161008882610241565b179392505050565b5f54610100900460ff16156100f75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610074565b5f5460ff90811614610146575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561016c575f5ffd5b81516001600160401b03811115610181575f5ffd5b8201601f81018413610191575f5ffd5b80516001600160401b038111156101aa576101aa610148565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d8576101d8610148565b6040528181528282016020018610156101ef575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610261575f198160200360031b1b821691505b50919050565b60805161103861027f5f395f6104d101526110385ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f0000000000000000000000000000000000000000000000000000000000000000610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","gas_used":855443,"gas_limit":1150949,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033","nonce":18,"gas_used":985021},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5df480","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000008000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000"},"block_hash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","block_number":15},{"info":{"transaction_hash":"0x4c9ca849148f1ad6351ef26f8d96981e1e2dda7654d253744bb595d975c800b1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":5,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000240000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000001000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","block_number":6},{"info":{"transaction_hash":"0x5f003ce8816697ac0a4a64c6b1b2049dffc055dd7c2a80175e3a3cec95177160","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x610178da211fef7d417bc0e6fed39f05609ad788","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x610178da211fef7d417bc0e6fed39f05609ad788","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610100604052348015610010575f5ffd5b506040516140a63803806140a683398101604081905261002f91610197565b806100398161006e565b608052506001600160a01b0380851660a052831660c0526001600160401b03821660e0526100656100b4565b505050506102e7565b5f5f829050601f815111156100a1578260405163305a27a960e01b8152600401610098919061028c565b60405180910390fd5b80516100ac826102c1565b179392505050565b5f54610100900460ff161561011b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610098565b5f5460ff9081161461016a575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114610180575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156101aa575f5ffd5b84516101b58161016c565b60208601519094506101c68161016c565b60408601519093506001600160401b03811681146101e2575f5ffd5b60608601519092506001600160401b038111156101fd575f5ffd5b8501601f8101871361020d575f5ffd5b80516001600160401b0381111561022657610226610183565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025457610254610183565b60405281815282820160200189101561026b575f5ffd5b8160208401602083015e5f6020838301015280935050505092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e1575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051613d3861036e5f395f61063f01525f81816102c30152818161067a01528181610722015281816109ef01528181610bba01528181610ec301528181610f6a015281816111a0015281816114ee0152818161162201528181611b0101526129b301525f81816105010152610fd301525f610c260152613d385ff3fe60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000000000000081565b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f000000000000000000000000000000000000000000000000000000000000000061239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f000000000000000000000000000000000000000000000000000000006059f4600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","gas_used":3162610,"gas_limit":4205258,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033","nonce":10,"gas_used":3475494},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x350826","logs":[{"address":"0x610178da211fef7d417bc0e6fed39f05609ad788","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","block_number":10},{"info":{"transaction_hash":"0xb71172ce2acef364056bcea1fc5cc557f6e84829ec3d14dc6a054e916576686e","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0165878a594ca255338adfa4d48449f69242eb8f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":6,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x11ca7e","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000001000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000040000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x41419949b1ccf5e68f29620ace7ceaaecf511dd23218c278966d12697687720c","block_number":6},{"info":{"transaction_hash":"0x8674edb00d2965906cecf54c5c3993fc41271de791559b571af169bf50fbc66b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70703,"gas_limit":114238,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64705,"gas_limit":106596,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51811,"gas_limit":92687,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":19,"gas_used":94131},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16fb3","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000080000000000000000000000000000000001000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100800800000004000000000000040000000000400000000008000000000000000000000000000000000080000000000000000000000000000000040000000002000400000000000000000000000000000000000000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xed4536ae7eca710e011ff6880d23a1912c6ce488dec6241b0d4faf635342e728","block_number":16},{"info":{"transaction_hash":"0xb9fc0e1384f63ccbfa5da5c20d36f29305fd42baf7732c74d6da98b1b0baf818","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":7,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000010000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000010000000010000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x13d220e566b8f8ce10770d306b1e1e64fe0f4fbe3569a291933684e5575eb670","block_number":7},{"info":{"transaction_hash":"0x28ba54edc5d379190aaeb36bb9c376b0c4d253a973002ca97a017e87a4231244","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":90394,"gas_limit":133535,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x0165878a594ca255338adfa4d48449f69242eb8f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000b306bf915c4d645ff596e518faf3f9669b9701600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":84457,"gas_limit":125652,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x0165878a594ca255338adfa4d48449f69242eb8f","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000001e","output":"0x","gas_used":71624,"gas_limit":111506,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x000000000000000000000000000000000000000000000000000000000000001e"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":22,"gas_used":113158},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1ba06","logs":[{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x000000000000000000000000000000000000000000000000000000000000001e"},{"address":"0x0165878a594ca255338adfa4d48449f69242eb8f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000008400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000300800800000004000000000000000000000000440000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000024400000200000000000040000000000002008000000000000000020000000000000000000000000000400000000000000000000000000000000400000"},"block_hash":"0xc6def0c421acf869912d99a766d69967e70fc49635a697526c9e3e2bb1423ded","block_number":19},{"info":{"transaction_hash":"0xce10ef81846ad740f3f36c9cf5c18eee0ba2ff02dcacc88381714f2c1ed7cff3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610160604052348015610010575f5ffd5b506040516162ad3803806162ad83398101604081905261002f916101d9565b808084898989878a6001600160a01b03811661005e576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805293841660a05291831660c052821660e05263ffffffff16610100521661012052610095816100b0565b61014052506100a490506100f6565b50505050505050610364565b5f5f829050601f815111156100e3578260405163305a27a960e01b81526004016100da9190610309565b60405180910390fd5b80516100ee8261033e565b179392505050565b5f54610100900460ff161561015d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100da565b5f5460ff908116146101ac575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101c2575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f5f60e0888a0312156101ef575f5ffd5b87516101fa816101ae565b602089015190975061020b816101ae565b604089015190965061021c816101ae565b606089015190955061022d816101ae565b608089015190945061023e816101ae565b60a089015190935063ffffffff81168114610257575f5ffd5b60c08901519092506001600160401b03811115610272575f5ffd5b88015f601f82018b13610283575f5ffd5b81516001600160401b0381111561029c5761029c6101c5565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ca576102ca6101c5565b6040528181528382016020018d10156102e1575f5ffd5b8160208501602083015e5f602083830101528092508094505050505092959891949750929550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b8051602080830151919081101561035e575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516101205161014051615e5061045d5f395f8181611112015261412c01525f8181610460015261340b01525f818161076a0152818161361b0152818161375d0152613a4001525f81816107ba01528181610e2701528181610fea0152818161136b01528181611584015281816119e6015281816127a0015261435601525f818161048701528181610f68015281816114e3015281816117570152818161300c015281816131ed01526138a301525f81816103bd01528181610f36015281816116ab015261387d01525f818161063801528181610bb70152818161115001526125960152615e505ff3fe608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f000000000000000000000000000000000000000000000000000000000000000081565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f8a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f0000000000000000000000000000000000000000000000000000000000000000613477565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000000000000000000000000000000000000000000016906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000000000000000000000000000000000000000000169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000000000000000000000000000000000000000000000169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000000083608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000000043615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f00000000000000000000000000000000000000000000000000000000000000006119b5565b7f000000000000000000000000000000000000000000000000000000000000000092915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000000008760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f0000000000000000000000000000000000000000000000000000000000000000613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","gas_used":4859861,"gas_limit":6452395,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033","nonce":12,"gas_used":5308447},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x51001f","logs":[{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000400000000000"},"block_hash":"0x9f7451ed4d95f1388d995d9cb67b6e59dffc5b24d326f8fc99c4d7b4ff64efee","block_number":11},{"info":{"transaction_hash":"0xdab349d6358d70cc7dff94f865fe361d673543af1eb71f638609d8b1de254090","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610120604052348015610010575f5ffd5b50604051612f5b380380612f5b83398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051612bb76103a45f395f610b1b01525f818161060c0152818161081601528181610a7101528181610c970152818161105101528181611106015261139a01525f818161028b0152818161119c01526119b501525f61042c01525f81816104730152818161074b01528181610b5901526114ae0152612bb75ff3fe6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f0000000000000000000000000000000000000000000000000000000000000000611879565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","gas_used":2265519,"gas_limit":3017745,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033","nonce":15,"gas_used":2507423},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x26429f","logs":[{"address":"0x0b306bf915c4d645ff596e518faf3f9669b97016","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000"},"block_hash":"0x70ec65ba3b42b2a2196d139c4a7c298263000ae9fc0893392abb8a3875239184","block_number":13},{"info":{"transaction_hash":"0xd0ab89b1e3ca3e34d5a500d3970bc2724167f53c85e38dc1b56f10ed8d0c4c10","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":3,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000080000400000000000000000000000000001000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000008000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x40fee36eb2e65fcf7eec87fc52530b3bf5d3bf8719fbb7762b807ff1b30ff702","block_number":4},{"info":{"transaction_hash":"0xf225e76a59aea868e0761eb2bb506e817fe45be2b7c06b93991c1dd89194b349","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b5060405161195e38038061195e83398101604081905261002e916101bc565b82828280826001600160a01b03811661005a576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b031660805261006f81610093565b60a052506001600160a01b03831660c0526100886100d9565b5050505050506102ed565b5f5f829050601f815111156100c6578260405163305a27a960e01b81526004016100bd9190610292565b60405180910390fd5b80516100d1826102c7565b179392505050565b5f54610100900460ff16156101405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100bd565b5f5460ff9081161461018f575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101a5575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101ce575f5ffd5b83516101d981610191565b60208501519093506101ea81610191565b60408501519092506001600160401b03811115610205575f5ffd5b8401601f81018613610215575f5ffd5b80516001600160401b0381111561022e5761022e6101a8565b604051601f8201601f19908116603f011681016001600160401b038111828210171561025c5761025c6101a8565b604052818152828201602001881015610273575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102e7575f198160200360031b1b821691505b50919050565b60805160a05160c0516116166103485f395f81816101e801528181610578015281816109cb0152610a6801525f61069801525f81816102c5015281816103b701528181610489015281816106e90152610b9601526116165ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000000000000000000000000000000000000000000081565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f0000000000000000000000000000000000000000000000000000000000000000610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","gas_used":1156594,"gas_limit":1549847,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033","nonce":26,"gas_used":1310846},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x149917","logs":[{"address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000001000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000200000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","block_number":22},{"info":{"transaction_hash":"0x9016053c52e5db52ef48490034aff89b2191faacca4bd7f071926f8a0e993967","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":9,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xc9f1c82e8325e9982eedbcd0812ed79c0b3aba865828348ded777daceefc165c","block_number":9},{"info":{"transaction_hash":"0xac9de85a80d853aef4df501fa4e667fc742eae154e7aee8fdb85c2367b4582c0","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x09635f643e140090a9a8dcd712ed6285858cebef","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b50604051610d91380380610d9183398101604081905261002e916101c8565b8383600361003c83826102d8565b50600461004982826102d8565b50505061005c818361006560201b60201c565b505050506103b7565b6001600160a01b0382166100bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546100d09190610392565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261014e575f5ffd5b81516001600160401b038111156101675761016761012b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101955761019561012b565b6040528181528382016020018510156101ac575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f608085870312156101db575f5ffd5b84516001600160401b038111156101f0575f5ffd5b6101fc8782880161013f565b602087015190955090506001600160401b03811115610219575f5ffd5b6102258782880161013f565b60408701516060880151919550935090506001600160a01b038116811461024a575f5ffd5b939692955090935050565b600181811c9082168061026957607f821691505b60208210810361028757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012657805f5260205f20601f840160051c810160208510156102b25750805b601f840160051c820191505b818110156102d1575f81556001016102be565b5050505050565b81516001600160401b038111156102f1576102f161012b565b610305816102ff8454610255565b8461028d565b6020601f821160018114610337575f83156103205750848201515b5f19600385901b1c1916600184901b1784556102d1565b5f84815260208120601f198516915b828110156103665787850151825560209485019460019092019101610346565b508482101561038357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156103b157634e487b7160e01b5f52601160045260245ffd5b92915050565b6109cd806103c45f395ff3fe608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000954657374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045445535400000000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","gas_used":594640,"gas_limit":806048,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033","nonce":27,"gas_used":704694},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xac0b6","logs":[{"address":"0x09635f643e140090a9a8dcd712ed6285858cebef","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000008000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x46b2439a578e4e5bd3bc38bed2d7fcedcf7293071a5669f1215136c2112cff19","block_number":23},{"info":{"transaction_hash":"0xe334e51ee2afab309155c7df74a090eb597fb4ed6c61553248eadd2a7fe9d321","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757070000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70560,"gas_limit":106135,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a676e781a523b5d0c0e43731313a708cb60750800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64623,"gas_limit":98680,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51790,"gas_limit":84955,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":21,"gas_used":93312},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16c80","logs":[{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400080000000000000000002000001000240000000000000000000000000000000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000002020400000200000000000040000000000002008000000000001000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x631938156c6b5bd8a12111e15ed979386e7b2b62f27742c6ffc8e8c6420f2c27","block_number":18},{"info":{"transaction_hash":"0x8012235616e0705297c06d305d82399118db731e235e04dc8cf3ede65f5d4727","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","output":"0x","gas_used":56296,"gas_limit":59254,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x5de08ff200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","output":"0x","gas_used":49162,"gas_limit":51341,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":31,"gas_used":78008},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x130b8","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe"],"data":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0x2031601ca07c60213e659cd4a2110fe879d8a03b45e12a778ed377044eac92ee","block_number":26},{"info":{"transaction_hash":"0xadf5de66d8fd77344bd236b9ebedc146b7b17d75ee4a7916ec9f12e7b6391ccd","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x8c95ff1e0000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf","output":"0x","gas_used":29222,"gas_limit":48532,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee6"],"data":"0xa4594c59000000000000000000000000000000000000000000000000000000000000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Call":0},{"Log":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","address":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2a510436","output":"0xa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e285913","gas_used":153,"gas_limit":42768,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x","nonce":3,"gas_used":50654},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc5de","logs":[{"address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","topics":["0xcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee6"],"data":"0xa4594c59000000000000000000000000000000000000000000000000000000000000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000"},"block_hash":"0x20311dd5af038637ed3fa85a4d62c9b4c1285ce8a0299ebcb7c0ceda0b7794fb","block_number":4},{"info":{"transaction_hash":"0xc1877efc7e1a6f88b830e002e2d01ee9bd35482be0569153b888cd6a186dfa33","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788","output":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","gas_used":214146,"gas_limit":300027,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033","nonce":11,"gas_used":286272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x396666","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000020000000000000100000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x16805cedda9f332db54367b8cc699e2ed3a086456a5366809d6f90c5ff34f056","block_number":10},{"info":{"transaction_hash":"0x0bc654873d39d0a6405a7da7b82db06ff307bb819efc0ccc14ff51fd82ae2ce9","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":70539,"gas_limit":113685,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044cd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":64602,"gas_limit":106112,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xcd6dc687000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":51769,"gas_limit":92271,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2}]}],"exit":"Stop","out":"0x","nonce":24,"gas_used":93291},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x16c6b","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x000000000400000000000000400000004000000000000000008000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000400000001008008000000040000000000000000000000004000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000440000000000000000000000000000000008000000020400000200000000000040000000000002008000000000000000020000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0x8b226293019f3738d9f690fd96ae764f3e35bf41e7b4a263bbd640cc812043eb","block_number":21},{"info":{"transaction_hash":"0x493c3a99987410ca1d74e61262fd5c1d5324b1184e32d21759cbc70c6ce61762","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x99a88ec40000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31800000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","output":"0x","gas_used":17265,"gas_limit":35332,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x3659cfe600000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed","output":"0x","gas_used":11797,"gas_limit":29441,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":25,"gas_used":39065},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x9899","logs":[{"address":"0x8a791620dd6260079bf849dc5567adc3f2fdc318","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000008000000000000000000000000000000000000000000020000000000000000000000000040000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000"},"block_hash":"0xe0f025180a53e0efa9094e2dae0b8f35042e4b3593e90f0e8796e2b848c32d8f","block_number":22},{"info":{"transaction_hash":"0xffc7b36fadd7efd9aa5601d32b49b18ec87e99b1bd2056343e5941a348060138","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf2fde38b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":4360,"gas_limit":14193,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":30,"gas_used":25792},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x64c0","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000100000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x9d63fcb25664d62e81f4ac9855098eb4cd74070fe3c17e3345bf4423449aba72","block_number":25},{"info":{"transaction_hash":"0x78baa7ffea920bf995412537611f0112a44cfc409fd2a1266e3ea0ca2bd40970","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x4e59b44847b379578588920ca78fbf26c0b4956c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x000000000000000000000000000000000000000000000000000000000000000960803460b857601f61071038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361063f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b00330000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","output":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","gas_used":376954,"gas_limit":539777,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4e59b44847b379578588920ca78fbf26c0b4956c","address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x60803460b857601f61071038819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361063f90816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b00330000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc","output":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b0033","gas_used":344055,"gas_limit":499002,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","nonce":1,"gas_used":427078},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x68446","logs":[{"address":"0x06530dd13afb697b81e2d602a279ebaec8ca2e31","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000010440000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xfc772625e4110b1ff8723b0e7f137319d52ba96dbad0903e970d17a4ba297f40","block_number":2},{"info":{"transaction_hash":"0x3bfc34fbe3578aac717134c225bb332678bedefad9f83fb99d92920d6b956e8b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c051612bac61034d5f395f8181610bb90152611c8101525f81816104e70152818161079701528181610b4b01528181610e010152818161128d015261189d01525f81816103bc015281816105a601528181610bf701526114c90152612bac5ff3fe608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f0000000000000000000000000000000000000000000000000000000000000000611ac1565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f0000000000000000000000000000000000000000000000000000000000000000611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","gas_used":2263024,"gas_limit":3014632,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033","nonce":13,"gas_used":2505362},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x263a92","logs":[{"address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000"},"block_hash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","block_number":12},{"info":{"transaction_hash":"0x279f5cc917c7ca651cb7f411dd683d643b2be343a2a005c359048c35b60cf156","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x4e59b44847b379578588920ca78fbf26c0b4956c","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x000000000000000000000000000000000000000000000000000000000000000960808060405234601557611345908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","output":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","gas_used":1021933,"gas_limit":1540784,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4e59b44847b379578588920ca78fbf26c0b4956c","address":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x60808060405234601557611345908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","output":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033","gas_used":987636,"gas_limit":1482992,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x0d09209634e053e5a243a04ae58095f3083a1fcf","nonce":2,"gas_used":1121841},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x111e31","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x266d3dd8903217771ed1ee39602c8a4edc0bedc7ef08635901e1a6794fa2f1d2","block_number":3},{"info":{"transaction_hash":"0xc0fbf0351b0621b26c0c1f59ce5d89767383d6c3ef364269611426cd9a4eac57","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":4,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000001000000000100000000000000"},"block_hash":"0xe558036f9a5871c39ac093608e9cf413b73c63e0ffc994e308c3473e79b11a10","block_number":5},{"info":{"transaction_hash":"0xff02160f770465bb640207f52a3b511202b1ac49bc28470f35ba898f2d0fae39","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561000f575f5ffd5b506040516105c83803806105c883398101604081905261002e916101c2565b5f5b825181101561006b5761006383828151811061004e5761004e61029e565b6020026020010151600161007c60201b60201c565b600101610030565b5061007581610103565b50506102b2565b6001600160a01b0382166100a3576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661012a576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b03811681146101bd575f5ffd5b919050565b5f5f604083850312156101d3575f5ffd5b82516001600160401b038111156101e8575f5ffd5b8301601f810185136101f8575f5ffd5b80516001600160401b0381111561021157610211610193565b604051600582901b90603f8201601f191681016001600160401b038111828210171561023f5761023f610193565b60405291825260208184018101929081018884111561025c575f5ffd5b6020850194505b8385101561028257610274856101a7565b815260209485019401610263565b50945061029592505050602084016101a7565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b610309806102bf5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","gas_used":207717,"gas_limit":293492,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033","nonce":1,"gas_used":285919},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x45cdf","logs":[{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152"],"data":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","topics":["0x06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}],"logsBloom":"0x00000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000004801000000000000000"},"block_hash":"0x70c83cc2d26437e6d5b66bed604de084609d7db0acecb2e4fb0c6837b951fc96","block_number":2},{"info":{"transaction_hash":"0xd09f03bb59663e56394d89f5fb4161ccd056ac94e68cacfdd4df50df4389b35b","transaction_index":0,"from":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","to":null,"contract_address":"0x663f3ad617193148711d28f5334ee4ed07016602","traces":[{"parent":null,"children":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc","address":"0x663f3ad617193148711d28f5334ee4ed07016602","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101808060405234610c9257604081611f5380380380916100208285610c96565b833981010312610c925780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa15610b11575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e0604051916103068284610c96565b60068352601f19820136602085013760205f604051828101907f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be482527f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4604082015260408152610377606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161039d84610ccd565b5260205f604051828101907f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f82527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642604082015260408152610400606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5161042684610cda565b5260205f604051828101907f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34782527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b604082015260408152610489606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160021015610b5257606084015260205f604051828101907f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a782527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6604082015260408152610517606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160031015610b5257608084015260205f604051828101907f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d82527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e826040820152604081526105a5606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160041015610b525760a084015260205f604051828101907f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49382527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809604082015260408152610633606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f51835160051015610b525760c084015260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa15610b11575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526106f8606082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526107c460a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261089060a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f519760205f604051828101907f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c82527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e033360408201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d03076260608201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d360808201526080815261095c60a082610c96565b604051918291518091835e8101838152039060025afa15610b11575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa15610b11575f8051610140526101008190526060610120526020610160525b885180610100511015610b7a575f19810190808211610b66576101005190035f1901908111610b66578951811015610b5257610160519060051b8a0101519060405191610a176101205184610c96565b60028352610160516040903690850137610a3083610ccd565b52610a3a82610cda565b52604051610a4b6101605182610c96565b5f8152601f196101605101366101605183013781519061ffff8211610b3a5791604051928391610140516101605184015260408301815190916101605101905f905b808210610b1c575050509281610ad994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610c96565b5f60405191805180916101605101845e820191818352806101605193039060025afa15610b11575f51610100805160010190526109c7565b6040513d5f823e3d90fd5b82518452610160518896509384019390920191600190910190610a8d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c28352610bbe60e284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a084015260828352610c1860a284610c96565b60405192518091845e820191818352806101605193039060025afa15610b11575f516001600160e01b03191681526040516112689182610ceb83396080518281816105c50152610dc7015260a0518281816105810152610ded015260c0518281816101690152610e2501525181818160ae0152610d330152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610cb957604052565b634e487b7160e01b5f52604160045260245ffd5b805115610b525760200190565b805160011015610b52576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f0000000000000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f000000000000000000000000000000000000000000000000000000000000000060801c83527f000000000000000000000000000000000000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f0000000000000000000000000000000000000000000000000000000000000000608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033a54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f5604446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0","output":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","gas_used":960882,"gas_limit":1301462,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0},{"Call":1},{"Call":2},{"Call":3},{"Call":4},{"Call":5},{"Call":6},{"Call":7},{"Call":8},{"Call":9},{"Call":10},{"Call":11},{"Call":12},{"Call":13},{"Call":14},{"Call":15},{"Call":16},{"Call":17},{"Call":18},{"Call":19},{"Call":20}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363302e47726f74683136526563656970745665726966696572506172616d6574657273","output":"0x60b97a2bdc471360c901f58eb3f22679fc24bd6bf6367e14a8a34744f29516aa","gas_used":84,"gas_limit":1280466,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":2,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd4","output":"0x1cbeac7cb8d2fac8051651022d2e04174e8412f25dadd52b81453f1794f29c84","gas_used":84,"gas_limit":1279658,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":3,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff6642","output":"0xb8a9c5e594a6815546fba67ea41bc84dfacd88ce9cce09c5cc83027161f453af","gas_used":84,"gas_limit":1279161,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":4,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc3472ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b","output":"0x4b770f6234b0842dcb437ad35692e05576a9c67f4955552d6a16fd4e9ae421f1","gas_used":84,"gas_limit":1278657,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":5,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a72b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd6","output":"0xaf5fe24ca85c070afb433eb954a0ae0d8d305914d3519fd8155af0c83832a4b2","gas_used":84,"gas_limit":1278181,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":6,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e82","output":"0x93335b9e02e32231be09d3a72bd01d1b0ca02e192ebf05bec1008959bb1b1634","gas_used":84,"gas_limit":1277704,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":7,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d493214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e809","output":"0x23507fe4ecce8efc902604ea7fa4aff88c13537f07aed7525b572195f4fa8aea","gas_used":84,"gas_limit":1277227,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":8,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363305f67726f746831362e566572696679696e674b6579","output":"0xfa77044bc9f1aec494a3f424cb9104c24149acf58ca6b219b44bd6b1056f9d4c","gas_used":72,"gas_limit":1276958,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":9,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e214bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d1926","output":"0x2298cec17c15c841adbbf8cc6d7e081c861370f45abaaf4129e6d61da0dc90b1","gas_used":84,"gas_limit":1276530,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":10,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a71739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8","output":"0xa2f548430941c9296e3ba3bf440c0b1cc2f874864f7e41707725682236b77470","gas_used":108,"gas_limit":1276041,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":11,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa","output":"0xa0de5dc137b285f0d15790d0e0007a26331cafe00d29bdaa0e7e9afa276847aa","gas_used":108,"gas_limit":1275535,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":12,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e0333110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307621e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d3","output":"0xfb875534fd979f0e4a19693f6281a6a1c7079272b38a50541129234003c035a6","gas_used":108,"gas_limit":1275029,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":13,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x72697363305f67726f746831362e566572696679696e674b65792e4943","output":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22","gas_used":72,"gas_limit":1274776,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":14,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f2223507fe4ecce8efc902604ea7fa4aff88c13537f07aed7525b572195f4fa8aea00000000000000000000000000000000000000000000000000000000000000000200","output":"0x6991d2156eb78af12e3e25bfd673e35ea2e9d54bb645837a07ac57d805d2fa58","gas_used":108,"gas_limit":1273245,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":15,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f2293335b9e02e32231be09d3a72bd01d1b0ca02e192ebf05bec1008959bb1b16346991d2156eb78af12e3e25bfd673e35ea2e9d54bb645837a07ac57d805d2fa580200","output":"0x3747e49de54377ce9abbc014ecd7ec4ca788afec8da840eb6ef0176619d0a40e","gas_used":108,"gas_limit":1271685,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":16,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22af5fe24ca85c070afb433eb954a0ae0d8d305914d3519fd8155af0c83832a4b23747e49de54377ce9abbc014ecd7ec4ca788afec8da840eb6ef0176619d0a40e0200","output":"0xf8114d4632ef201dfb01a62d81ccc0e1953e40332de675f240e0dbdacf97d457","gas_used":108,"gas_limit":1270125,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":17,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f224b770f6234b0842dcb437ad35692e05576a9c67f4955552d6a16fd4e9ae421f1f8114d4632ef201dfb01a62d81ccc0e1953e40332de675f240e0dbdacf97d4570200","output":"0xe9e614c65e73f622bc09ca944bf1ab2668f6bbe04076203d5b1915d5b3224833","gas_used":108,"gas_limit":1268565,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":18,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f22b8a9c5e594a6815546fba67ea41bc84dfacd88ce9cce09c5cc83027161f453afe9e614c65e73f622bc09ca944bf1ab2668f6bbe04076203d5b1915d5b32248330200","output":"0x9d01ae8a6175af517297a259ee5064b66ee915ec87bb109e91d8385c6f225d7c","gas_used":108,"gas_limit":1267003,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":19,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xf776d186bf72b819a595ab1833062ab4bb3592160c10857ebeca9691ce729f221cbeac7cb8d2fac8051651022d2e04174e8412f25dadd52b81453f1794f29c849d01ae8a6175af517297a259ee5064b66ee915ec87bb109e91d8385c6f225d7c0200","output":"0x232e4c620f567460a68696b693b7744030eac5ecb46ca403d5f69a3eb6e59783","gas_used":108,"gas_limit":1265442,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":20,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0xfa77044bc9f1aec494a3f424cb9104c24149acf58ca6b219b44bd6b1056f9d4c2298cec17c15c841adbbf8cc6d7e081c861370f45abaaf4129e6d61da0dc90b1a2f548430941c9296e3ba3bf440c0b1cc2f874864f7e41707725682236b77470a0de5dc137b285f0d15790d0e0007a26331cafe00d29bdaa0e7e9afa276847aafb875534fd979f0e4a19693f6281a6a1c7079272b38a50541129234003c035a6232e4c620f567460a68696b693b7744030eac5ecb46ca403d5f69a3eb6e597830500","output":"0x21c5fdd9b4d576b17581f50b755482ba7a2134a3b5186e8e454acfa1f69511ab","gas_used":144,"gas_limit":1264784,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":0,"children":[],"idx":21,"trace":{"depth":1,"success":true,"caller":"0x663f3ad617193148711d28f5334ee4ed07016602","address":"0x0000000000000000000000000000000000000002","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x60b97a2bdc471360c901f58eb3f22679fc24bd6bf6367e14a8a34744f29516aaa54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f56c07a65145c3cb48b6101962ea607a4dd93c753bb26975cb47feb00d3666e440421c5fdd9b4d576b17581f50b755482ba7a2134a3b5186e8e454acfa1f69511ab0300","output":"0x73c457ba541936f0d907daf0c7253a39a9c5c427c225ba7709e44702d3c6eedc","gas_used":120,"gas_limit":1264217,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033","nonce":0,"gas_used":1135268},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1152a4","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x1e09c7d2881e6c3672e7715df0b439c4c782e6d58664ea625acf19ac3091cc2e","block_number":1},{"info":{"transaction_hash":"0x47376e56a9e5ef62ede21ed9a6959ba0f1e94e1da0bf54495aed5059da85a89b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":98219,"gas_limit":154478,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef286000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a4f6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":92246,"gas_limit":146232,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf6efbb59000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad40000000000000000000000000000000000000000000000000000000000001c2000000000000000000000000000000000000000000000000000000000000003e8","output":"0x","gas_used":79377,"gas_limit":131729,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5}]}],"exit":"Stop","out":"0x","nonce":23,"gas_used":121643},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1db2b","logs":[{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4"],"data":"0x"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xaf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c20"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0xe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e8"},{"address":"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000800000010010000000000000000000000000000000000000000000000000000200000004000000000000000000000000000402000001000010000000010000000000000000020000020000000000000100800800000004000000000000000000000000400000000000000000000000000000000000000800000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000080020400000200000000000040000000000002208002000000000000020000000000000000100400800000000000000000000000000000000000001400200"},"block_hash":"0x2761219ffd0cf07a628b148307fec9bc205ceea80b03a4e76a86f613470b3e20","block_number":20},{"info":{"transaction_hash":"0x92a75c1025d56d97ba11a905c10b4ce839407e05901391e476b858c710e23683","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6101e0604052348015610010575f5ffd5b50604051614d61380380614d6183398101604081905261002f9161034a565b610140810151608082015182516020840151604085015160a086015160c087015160e08801516101008901516101208a015160608b01516001600160a01b03811661008d576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b03166080526100a38582610465565b63ffffffff16156100c757604051630e06bd3160e01b815260040160405180910390fd5b6100d46201518086610465565b63ffffffff16156100f85760405163223c7b3960e11b815260040160405180910390fd5b6001600160a01b0397881660a05295871660c05293861660e05263ffffffff9283166101005290821661012052811661014052908116610160521661018052166101a05261014581610158565b6101c0525061015261019e565b506104f3565b5f5f829050601f8151111561018b578260405163305a27a960e01b81526004016101829190610498565b60405180910390fd5b8051610196826104cd565b179392505050565b5f54610100900460ff16156102055760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401610182565b5f5460ff90811614610254575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561028d5761028d610256565b60405290565b80516001600160a01b03811681146102a9575f5ffd5b919050565b805163ffffffff811681146102a9575f5ffd5b5f82601f8301126102d0575f5ffd5b81516001600160401b038111156102e9576102e9610256565b604051601f8201601f19908116603f011681016001600160401b038111828210171561031757610317610256565b60405281815283820160200185101561032e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f6020828403121561035a575f5ffd5b81516001600160401b0381111561036f575f5ffd5b82016101608185031215610381575f5ffd5b61038961026a565b61039282610293565b81526103a060208301610293565b60208201526103b160408301610293565b60408201526103c260608301610293565b60608201526103d360808301610293565b60808201526103e460a083016102ae565b60a08201526103f560c083016102ae565b60c082015261040660e083016102ae565b60e082015261041861010083016102ae565b61010082015261042b61012083016102ae565b6101208201526101408201516001600160401b0381111561044a575f5ffd5b610456868285016102c1565b61014083015250949350505050565b5f63ffffffff83168061048657634e487b7160e01b5f52601260045260245ffd5b8063ffffffff84160691505092915050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104ed575f198160200360031b1b821691505b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161478c6105d55f395f6114b901525f81816105f001526127d101525f81816104a401526135db01525f81816103f30152612c1301525f8181610552015261359901525f818161087e015261348301525f81816107bf015281816134d3015261354701525f81816108d201528181610afb01528181611e2601526120d201525f8181610579015261367601525f81816109450152611d9601525f818161075101528181610ed90152818161150b01526123b1015261478c5ff3fe608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f000000000000000000000000000000000000000000000000000000000000000081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000000000000000000000000000000000000000000081565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f0000000000000000000000000000000000000000000000000000000000000000612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f00000000000000000000000000000000000000000000000000000000000000001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000000000826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000000000836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3180000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000005c4900000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000065fb78800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","gas_used":3693659,"gas_limit":4910903,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033","nonce":16,"gas_used":4057483},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3de98b","logs":[{"address":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000"},"block_hash":"0x71530d898a1158a0df350f1ec48662a8c33bf8a797785cfa9f572bb2af5541c2","block_number":14},{"info":{"transaction_hash":"0x12f84b299376ebcea727ac4e115f4eb9f436593f9280e940c72bb665f6a998ca","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x9623609d000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":94293,"gas_limit":148590,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x5fbdb2315678afecb367f032d93f642f64180aa3","address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x4f1ef2860000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000641794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":88344,"gas_limit":140460,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":75499,"gas_limit":126070,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3}]}],"exit":"Stop","out":"0x","nonce":20,"gas_used":117401},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1ca99","logs":[{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"},{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000000000000000000000040000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000002000001000000000010000000000000000000000000020000000000000100800808000004000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000008000000000000000000100020400000200000000000040000000000002028000000000000000020000000000000000000000000000000000000000001080000000100000000400000"},"block_hash":"0x6ac4cabe31507496978025a3c8c8bead53f9635b3b6052bed328f0e6dc015b0e","block_number":17},{"info":{"transaction_hash":"0x9f6c909caf5756602a7cc1eff06db450180bf1c076b77a5937b00f2b72e2267a","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x610140604052348015610010575f5ffd5b50604051615fb7380380615fb783398101604081905261002f916101e6565b8084878585896001600160a01b03811661005c576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05263ffffffff91821660c0521660e052166101005261008d816100a5565b610120525061009a6100eb565b50505050505061034a565b5f5f829050601f815111156100d8578260405163305a27a960e01b81526004016100cf91906102ef565b60405180910390fd5b80516100e382610324565b179392505050565b5f54610100900460ff16156101525760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100cf565b5f5460ff908116146101a1575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101b7575f5ffd5b50565b805163ffffffff811681146101cd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156101fb575f5ffd5b8651610206816101a3565b6020880151909650610217816101a3565b6040880151909550610228816101a3565b9350610236606088016101ba565b9250610244608088016101ba565b60a08801519092506001600160401b0381111561025f575f5ffd5b8701601f8101891361026f575f5ffd5b80516001600160401b03811115610288576102886101d2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102b6576102b66101d2565b6040528181528282016020018b10156102cd575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295509295565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610344575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051615bd26103e55f395f611b3701525f818161044f015261356c01525f81816105b30152613dfc01525f818161036101528181611fce01526126d001525f8181610732015281816114d501528181611b6b01528181611bd5015281816129ce015261364b01525f81816105da0152818161085801528181611c7a01526131e30152615bd25ff3fe608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000000000000000000000000000000000000000000081565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f0000000000000000000000000000000000000000000000000000000000000000613d18565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000000004361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000000004361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f00000000000000000000000000000000000000000000000000000000000000009091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000000004361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc318000000000000000000000000000000000000000000000000000000000000038400000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","gas_used":4731771,"gas_limit":6283496,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033","nonce":17,"gas_used":5172419},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x4eecc3","logs":[{"address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6eee608c3bfa7f67219239802a443751f0b5f1e80e934da0dcd4238b6fb08592","block_number":15},{"info":{"transaction_hash":"0xa8d27ecc8b9773b7bb23cbaeb049a34828ab39ac2045fefd35c3a91bd10222a1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":474055,"gas_limit":648947,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0},{"Log":1}]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":8,"gas_used":582975},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8e53f","logs":[{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000400000000000000400000000000000000000000000000000000000000000000000000000002000000000000000000000000000000400000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000040000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x817a863ef6275457c35e65f8c21b510adae967d4a5c550afd4ce741d3c50eb91","block_number":8},{"info":{"transaction_hash":"0x4ffcb6d6858970fc65fedf0a78aaf8e423e29402bb9075791a79a912c37f4df8","transaction_index":1,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a676e781a523b5d0c0e43731313a708cb607508","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60e060405234801561000f575f5ffd5b5060405161192338038061192383398101604081905261002e916101b3565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b5050506102e4565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b49190610289565b60405180910390fd5b80516100c8826102be565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101c5575f5ffd5b83516101d081610188565b60208501519093506101e181610188565b60408501519092506001600160401b038111156101fc575f5ffd5b8401601f8101861361020c575f5ffd5b80516001600160401b038111156102255761022561019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102535761025361019f565b60405281815282820160200188101561026a575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102de575f198160200360031b1b821691505b50919050565b60805160a05160c0516115f26103315f395f81816104bf0152610e9a01525f8181610360015261068d01525f818161023c015281816103f8015281816104fd0152610bc201526115f25ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000000000000000000000000000000000000000000081565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f0000000000000000000000000000000000000000000000000000000000000000610d0c565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f0000000000000000000000000000000000000000000000000000000000000000610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000676302e302e300000000000000000000000000000000000000000000000000000","output":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","gas_used":1149341,"gas_limit":1540412,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"},"decoded":{"name":null,"params":null},"position":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033","nonce":14,"gas_used":1303571},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3a1ea5","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x00000000000000000000000000000000000000000000000000000000000000ff"}],"logsBloom":"0x00000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000800400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6e3af097a8631b0001b61471f6c2af0e8391ade2f295a8f8ae4d01d999fe4310","block_number":12},{"info":{"transaction_hash":"0xab2c9161491e6e8da138f5a17c1b7679d8cce21f851beb211da896a128e61e16","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xc5a5c42992decbae36851359345fe25997f5c42d","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xc5a5c42992decbae36851359345fe25997f5c42d","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052604051610d76380380610d76833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d2f5f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d4f60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d2f5f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156103d5575f5ffd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f5ffd5b8401601f81018613610417575f5ffd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b610843806104ec5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064a6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef00000000000000000000000000000000000000000000000000000000","output":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","gas_used":576796,"gas_limit":782983,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Log":0},{"Call":0},{"Log":1}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xa6ab36f2ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","output":"0x","gas_used":102007,"gas_limit":743939,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null},"position":0},{"raw_log":{"topics":["0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507"],"data":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012"},"decoded":{"name":null,"params":null},"position":1},{"raw_log":{"topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null},"position":1}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Call":0},{"Log":3},{"Log":4}]},{"parent":1,"children":[],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x313ce567","output":"0x0000000000000000000000000000000000000000000000000000000000000012","gas_used":265,"gas_limit":635006,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033","nonce":28,"gas_used":687292},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xa7cbc","logs":[{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f"],"data":"0x"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xf97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af557507"],"data":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef0000000000000000000000000000000000000000000000000000000000000012"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000000000000000000000040000000400004000000000000000000000000000400000000000000000000000000000000000000000100000004000000000000000000000000000000000000000002000000000000000000000000000000040000000000000000000000000104000000000000800000000000000000000000040000000200000002000050000000000410000000000080000000000000800000000000000000000000000000000400000000000000000000000000000000000000040020480000200000000000040000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000400000"},"block_hash":"0xe221023125022c63cb0c8db9a75cf04d616d09bd0a0c9cf035da4aa1a691ba1f","block_number":24}],"historical_states":null} \ No newline at end of file diff --git a/contracts/scripts/deploy_batcher_payment_service.sh b/contracts/scripts/deploy_batcher_payment_service.sh index 5bd1220ace..e7c6c41f01 100755 --- a/contracts/scripts/deploy_batcher_payment_service.sh +++ b/contracts/scripts/deploy_batcher_payment_service.sh @@ -20,7 +20,8 @@ forge script script/deploy/BatcherPaymentServiceDeployer.s.sol \ --legacy \ --verify \ --etherscan-api-key $ETHERSCAN_API_KEY \ - --sig "run(string memory batcherConfigPath, string memory outputPath)" + --sig "run(string memory batcherConfigPath, string memory outputPath)" \ + --slow # Extract the batcher payment service values from the output batcher_payment_service_proxy=$(jq -r '.addresses.batcherPaymentService' $BATCHER_PAYMENT_SERVICE_OUTPUT_PATH) diff --git a/contracts/scripts/deploy_proof_aggregator.sh b/contracts/scripts/deploy_proof_aggregator.sh new file mode 100644 index 0000000000..22db6ab8e5 --- /dev/null +++ b/contracts/scripts/deploy_proof_aggregator.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# ENV VARIABLES +# +# PROOF_AGGREGATOR_DEPLOY_CONFIG_PATH: Path to the proof aggregator deploy config file +# - Holesky Stage: ./script/deploy/config/holesky/proof-aggregator-service.holesky.config.stage.json +# - Holesky Prod: ./script/deploy/config/holesky/proof-aggregator-service.holesky.config.json +# - Sepolia: ./script/deploy/config/sepolia/proof-aggregator-service.sepolia.config.json +# +# PROOF_AGGREGATOR_OUTPUT_PATH: Path to the proof aggregator output file +# - Holesky Stage: ./script/output/holesky/proof_aggregation_service_deployment_output.stage.json +# - Holesky Prod: ./script/output/holesky/proof_aggregation_service_deployment_output.json +# - Sepolia: ./script/output/sepolia/proof_aggregation_service_deployment_output.json +# +# RPC_URL: The RPC URL to connect to the Ethereum network +# +# PRIVATE_KEY: The private key to use for the deployment +# +# ETHERSCAN_API_KEY: The Etherscan API key to use for verification +# + +# cd to the directory of this script so that this can be run from anywhere +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) +# At this point we are in contracts/scripts +cd "$parent_path" + +# At this point we are in contracts +cd ../ + +# Deploy proof aggregation service contract +forge script script/deploy/AlignedProofAggregationServiceDeployer.s.sol \ + $PROOF_AGGREGATOR_DEPLOY_CONFIG_PATH \ + $PROOF_AGGREGATOR_OUTPUT_PATH \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY \ + --broadcast \ + --verify \ + --etherscan-api-key $ETHERSCAN_API_KEY \ + --slow \ + --sig "run(string configPath, string outputPath)" \ + --via-ir diff --git a/contracts/scripts/upgrade_proof_aggregator.sh b/contracts/scripts/upgrade_proof_aggregator.sh new file mode 100644 index 0000000000..8d0c6dc638 --- /dev/null +++ b/contracts/scripts/upgrade_proof_aggregator.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# ENV VARIABLES +# +# MULTISIG=true|false whether the contract is deployed under a multisig account +# +# PROOF_AGGREGATOR_OUTPUT_PATH: Path to the proof aggregator output file +# - Holesky Stage: ./script/output/holesky/proof_aggregation_service_deployment_output.stage.json +# - Holesky Prod: ./script/output/holesky/proof_aggregation_service_deployment_output.json +# +# RPC_URL: The RPC URL to connect to the Ethereum network +# +# PRIVATE_KEY: The private key to use for the deployment +# +# ETHERSCAN_API_KEY: The Etherscan API key to use for verification +# + +if [ -z "$MULTISIG" ]; then + echo "Missing MULTISIG env variable" + exit 1 +fi + +# cd to the directory of this script so that this can be run from anywhere +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) + +cd "$parent_path" + +cd ../ + +# Save the output to a variable to later extract the address of the new deployed contract +forge_output=$(forge script script/upgrade/ProofAggregatorServiceUpgrader.s.sol \ + $PROOF_AGGREGATOR_OUTPUT_PATH \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY \ + --broadcast \ + --verify \ + --etherscan-api-key $ETHERSCAN_API_KEY \ + --sig "run(string memory alignedLayerDeploymentFilePath)") + +echo "$forge_output" + +# Extract the proof aggregator service values from the output +proof_aggregator_service_proxy=$(echo "$forge_output" | awk '/0: address/ {print $3}') +proof_aggregator_service_implementation=$(echo "$forge_output" | awk '/1: address/ {print $3}') + +# Use the extracted value to replace the batcher payment service values in alignedlayer_deployment_output.json and save it to a temporary file +jq --arg proof_aggregator_service_implementation "$proof_aggregator_service_implementation" '.addresses.alignedProofAggregationServiceImplementation = $proof_aggregator_service_implementation' $PROOF_AGGREGATOR_OUTPUT_PATH > "$PROOF_AGGREGATOR_OUTPUT_PATH.temp" + +# Replace the original file with the temporary file +mv "$PROOF_AGGREGATOR_OUTPUT_PATH.temp" $PROOF_AGGREGATOR_OUTPUT_PATH + +# Delete the temporary file +rm -f "$PROOF_AGGREGATOR_OUTPUT_PATH.temp" + +echo "The new Proof Aggregator Service Implementation is $proof_aggregator_service_implementation" + +data=$(cast calldata "upgradeTo(address)" $proof_aggregator_service_implementation) + +echo "The new ProofAggregator Service Implementation is $proof_aggregator_service_implementation" + +if [ "$MULTISIG" = false ]; then + echo "Executing upgrade transaction" + cast send $proof_aggregator_service_proxy $data \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY +else + echo "You can propose the upgrade transaction with the multisig using this calldata" + echo $data +fi diff --git a/contracts/src/core/AlignedLayerServiceManager.sol b/contracts/src/core/AlignedLayerServiceManager.sol index 4a03a47cee..79bd310fed 100644 --- a/contracts/src/core/AlignedLayerServiceManager.sol +++ b/contracts/src/core/AlignedLayerServiceManager.sol @@ -301,6 +301,27 @@ contract AlignedLayerServiceManager is ); } + function verifyBatchInclusion( + bytes32 proofCommitment, + bytes32 pubInputCommitment, + bytes32 provingSystemAuxDataCommitment, + bytes20 proofGeneratorAddr, + bytes32 batchMerkleRoot, + bytes memory merkleProof, + uint256 verificationDataBatchIndex + ) external view onlyWhenNotPaused(2) returns (bool) { + return this.verifyBatchInclusion( + proofCommitment, + pubInputCommitment, + provingSystemAuxDataCommitment, + proofGeneratorAddr, + batchMerkleRoot, + merkleProof, + verificationDataBatchIndex, + address(0) + ); + } + function setAggregator(address _alignedAggregator) public onlyOwner { alignedAggregator = _alignedAggregator; diff --git a/contracts/src/core/AlignedProofAggregationService.sol b/contracts/src/core/AlignedProofAggregationService.sol new file mode 100644 index 0000000000..5647e6c35a --- /dev/null +++ b/contracts/src/core/AlignedProofAggregationService.sol @@ -0,0 +1,176 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.12; + +import {Initializable} from "@openzeppelin-upgrades/contracts/proxy/utils/Initializable.sol"; +import {OwnableUpgradeable} from "@openzeppelin-upgrades/contracts/access/OwnableUpgradeable.sol"; +import {UUPSUpgradeable} from "@openzeppelin-upgrades/contracts/proxy/utils/UUPSUpgradeable.sol"; +import {IAlignedProofAggregationService} from "./IAlignedProofAggregationService.sol"; +import {ISP1Verifier} from "@sp1-contracts/ISP1Verifier.sol"; +import {IRiscZeroVerifier} from "@risc0-contracts/IRiscZeroVerifier.sol"; +import {MerkleProof} from "../../lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol"; + +contract AlignedProofAggregationService is + IAlignedProofAggregationService, + Initializable, + OwnableUpgradeable, + UUPSUpgradeable +{ + /// @notice Map the merkle root to a boolean to indicate it was verified + mapping(bytes32 => bool) public aggregatedProofs; + + /// @notice The address of the SP1 verifier contract. + /// @dev This can either be a specific SP1Verifier for a specific version, or the + /// SP1VerifierGateway which can be used to verify proofs for any version of SP1. + /// For the list of supported verifiers on each chain, see: + /// https://docs.succinct.xyz/onchain-verification/contract-addresses + address public sp1VerifierAddress; + + /// @notice The address of the Wallet that is allowed to call the verify function. + address public alignedAggregatorAddress; + + /// @notice The address of the Risc0 verifier contract + /// @dev See supported verifier here: + /// https://dev.risczero.com/api/blockchain-integration/contracts/verifier#contract-addresses + address public risc0VerifierAddress; + + /// @notice whether we are in dev mode or not + /// if the sp1 verifier address is set to this address, then we skip verification + address public constant VERIFIER_MOCK_ADDRESS = address(0xFF); + + /// The unique identifier (image ID) of the RISC Zero aggregator program. + /// This ensures that only proofs generated by a trusted Risc0 program can be verified. + bytes32 public risc0AggregatorProgramImageId; + + /// The verification key hash for the SP1 aggregator program. + /// This ensures that only proofs generated by a trusted SP1 program can be verified. + bytes32 public sp1AggregatorProgramVKHash; + + constructor() { + _disableInitializers(); + } + + function initialize( + address newOwner, + address _alignedAggregatorAddress, + address _sp1VerifierAddress, + address _risc0VerifierAddress, + bytes32 _risc0AggregatorProgramImageId, + bytes32 _sp1AggregatorProgramVKHash + ) public initializer { + __Ownable_init(); + __UUPSUpgradeable_init(); + _transferOwnership(newOwner); + alignedAggregatorAddress = _alignedAggregatorAddress; + sp1VerifierAddress = _sp1VerifierAddress; + risc0VerifierAddress = _risc0VerifierAddress; + risc0AggregatorProgramImageId = _risc0AggregatorProgramImageId; + sp1AggregatorProgramVKHash = _sp1AggregatorProgramVKHash; + } + + function verifySP1(bytes32 blobVersionedHash, bytes calldata sp1PublicValues, bytes calldata sp1ProofBytes) + public + onlyAlignedAggregator + { + (bytes32 merkleRoot) = abi.decode(sp1PublicValues, (bytes32)); + + // In dev mode, poofs are mocked, so we skip the verification part + if (_isSP1VerificationEnabled()) { + ISP1Verifier(sp1VerifierAddress).verifyProof(sp1AggregatorProgramVKHash, sp1PublicValues, sp1ProofBytes); + } + + aggregatedProofs[merkleRoot] = true; + emit AggregatedProofVerified(merkleRoot, blobVersionedHash); + } + + function verifyRisc0(bytes32 blobVersionedHash, bytes calldata risc0ReceiptSeal, bytes calldata risc0JournalBytes) + public + onlyAlignedAggregator + { + (bytes32 merkleRoot) = abi.decode(risc0JournalBytes, (bytes32)); + + // In dev mode, poofs are mocked, so we skip the verification part + if (_isRisc0VerificationEnabled()) { + bytes32 risc0JournalDigest = sha256(risc0JournalBytes); + IRiscZeroVerifier(risc0VerifierAddress).verify( + risc0ReceiptSeal, risc0AggregatorProgramImageId, risc0JournalDigest + ); + } + + aggregatedProofs[merkleRoot] = true; + emit AggregatedProofVerified(merkleRoot, blobVersionedHash); + } + + /// @notice Verifies the inclusion of proof in an aggregated proof via Merkle tree proof. + /// + /// @dev + /// - The `programId` parameter represents the unique identifier for the vm program: + /// - In RISC Zero, this corresponds to the `image_id`. + /// - In SP1, this corresponds to the `vk` (verification key) hash. + /// - The proof commitment is derived by hashing together the `programId` and the `publicInputs`. + /// - The `merklePath` is then used to compute the Merkle root from this commitment. + /// - The function returns `true` if this Merkle root is known to correspond to a valid aggregated proof. + /// + /// @param merklePath The Merkle proof (sibling hashes) needed to reconstruct the Merkle root. + /// @param programId The identifier for the ZK program (image_id in RISC0 or vk hash in SP1). + /// @param publicInputs The public inputs bytes of the proof. + /// + /// @return bool Returns true if the computed Merkle root is a recognized valid aggregated proof. + function verifyProofInclusion(bytes32[] calldata merklePath, bytes32 programId, bytes calldata publicInputs) + public + view + returns (bool) + { + bytes32 proofCommitment = keccak256(abi.encodePacked(programId, publicInputs)); + bytes32 merkleRoot = MerkleProof.processProofCalldata(merklePath, proofCommitment); + return aggregatedProofs[merkleRoot]; + } + + function _isSP1VerificationEnabled() internal view returns (bool) { + return sp1VerifierAddress != VERIFIER_MOCK_ADDRESS; + } + + function _isRisc0VerificationEnabled() internal view returns (bool) { + return risc0VerifierAddress != VERIFIER_MOCK_ADDRESS; + } + + function _authorizeUpgrade(address newImplementation) + internal + override + onlyOwner // solhint-disable-next-line no-empty-blocks + {} + + modifier onlyAlignedAggregator() { + if (msg.sender != alignedAggregatorAddress) { + revert OnlyAlignedAggregator(msg.sender); + } + _; + } + + /// @notice Sets the address of the Risc0 verifier contract + /// @param _risc0VerifierAddress The new address for the Risc0 verifier contract + function setRisc0VerifierAddress(address _risc0VerifierAddress) external onlyOwner { + risc0VerifierAddress = _risc0VerifierAddress; + emit Risc0VerifierAddressUpdated(_risc0VerifierAddress); + } + + /// @notice Sets the image id of the Risc0 program + /// @param _risc0AggregatorProgramImageId The new imageid for the Risc0 aggregator program + function setRisc0AggregatorProgramImageId(bytes32 _risc0AggregatorProgramImageId) external onlyOwner { + risc0AggregatorProgramImageId = _risc0AggregatorProgramImageId; + emit Risc0AggregatorProgramImageIdUpdated(_risc0AggregatorProgramImageId); + } + + /// @notice Sets the address of the SP1 verifier contract + /// @param _sp1VerifierAddress The new address for the SP1 verifier contract + function setSP1VerifierAddress(address _sp1VerifierAddress) external onlyOwner { + sp1VerifierAddress = _sp1VerifierAddress; + emit SP1VerifierAddressUpdated(_sp1VerifierAddress); + } + + /// @notice Sets the vk hash of the sp1 program + /// @param _sp1AggregatorProgramVKHash The new vk hash for the sp1 aggregator program + function setSP1AggregatorProgramVKHash(bytes32 _sp1AggregatorProgramVKHash) external onlyOwner { + sp1AggregatorProgramVKHash = _sp1AggregatorProgramVKHash; + emit SP1AggregatorProgramVKHashUpdated(_sp1AggregatorProgramVKHash); + } +} diff --git a/contracts/src/core/IAlignedLayerServiceManager.sol b/contracts/src/core/IAlignedLayerServiceManager.sol index 55ce1bc980..72c3cff5ff 100644 --- a/contracts/src/core/IAlignedLayerServiceManager.sol +++ b/contracts/src/core/IAlignedLayerServiceManager.sol @@ -61,6 +61,16 @@ interface IAlignedLayerServiceManager { address senderAddress ) external view returns (bool); + function verifyBatchInclusion( + bytes32 proofCommitment, + bytes32 pubInputCommitment, + bytes32 provingSystemAuxDataCommitment, + bytes20 proofGeneratorAddr, + bytes32 batchMerkleRoot, + bytes memory merkleProof, + uint256 verificationDataBatchIndex + ) external view returns (bool); + function balanceOf(address account) external view returns (uint256); function setAggregator(address _aggregator) external; diff --git a/contracts/src/core/IAlignedProofAggregationService.sol b/contracts/src/core/IAlignedProofAggregationService.sol new file mode 100644 index 0000000000..52897dc443 --- /dev/null +++ b/contracts/src/core/IAlignedProofAggregationService.sol @@ -0,0 +1,54 @@ +pragma solidity ^0.8.12; + +interface IAlignedProofAggregationService { + + /// @notice event that gets emitted after a successful aggregated proof verification + event AggregatedProofVerified(bytes32 indexed merkleRoot, bytes32 blobVersionedHash); + + /// @notice Event emitted when the Risc0 verifier address is updated + event Risc0VerifierAddressUpdated(address indexed newAddress); + + /// @notice Event emitted when the SP1 verifier address is updated + event SP1VerifierAddressUpdated(address indexed newAddress); + + /// @notice Event emitted when the Risc0 aggregator program image ID is updated + event Risc0AggregatorProgramImageIdUpdated(bytes32 indexed newImageId); + + /// @notice Event emitted when the SP1 aggregator program VK hash is updated + event SP1AggregatorProgramVKHashUpdated(bytes32 indexed newVKHash); + + /// @notice Method to verify an aggregated proof from aligned + /// @dev This function is called by the aligned proof aggregator after collecting the proofs and aggregating them + /// to be verified on-chain. We expect the blobTransactionHash to be called before + /// @param blobVersionedHash the versioned hash of the blob transaction that contains the leaves that compose the merkle root. + /// @param sp1PublicValues Values used to perform the execution + /// @param sp1ProofBytes Groth16 proof + function verifySP1(bytes32 blobVersionedHash, bytes calldata sp1PublicValues, bytes calldata sp1ProofBytes) + external; + + function verifyRisc0(bytes32 blobVersionedHash, bytes calldata risc0ReceiptSeal, bytes calldata risc0JournalBytes) + external; + + function verifyProofInclusion(bytes32[] calldata merklePath, bytes32 programId, bytes calldata publicInputs) + external + view + returns (bool); + + /// @notice Sets the address of the Risc0 verifier contract + /// @param _risc0VerifierAddress The new address for the Risc0 verifier contract + function setRisc0VerifierAddress(address _risc0VerifierAddress) external; + + /// @notice Sets the image id of the Risc0 program + /// @param _risc0AggregatorProgramImageId The new imageid for the Risc0 aggregator program + function setRisc0AggregatorProgramImageId(bytes32 _risc0AggregatorProgramImageId) external; + + /// @notice Sets the address of the SP1 verifier contract + /// @param _sp1VerifierAddress The new address for the SP1 verifier contract + function setSP1VerifierAddress(address _sp1VerifierAddress) external; + + /// @notice Sets the vk hash of the sp1 program + /// @param _sp1AggregatorProgramVKHash The new vk hash for the sp1 aggregator program + function setSP1AggregatorProgramVKHash(bytes32 _sp1AggregatorProgramVKHash) external; + + error OnlyAlignedAggregator(address sender); +} diff --git a/core/chainio/avs_reader.go b/core/chainio/avs_reader.go index ae2ea0a9da..a198d27676 100644 --- a/core/chainio/avs_reader.go +++ b/core/chainio/avs_reader.go @@ -72,7 +72,15 @@ func (r *AvsReader) IsOperatorRegistered(address ethcommon.Address) (bool, error } func (r *AvsReader) DisabledVerifiers() (*big.Int, error) { - return r.AvsContractBindings.ServiceManager.ContractAlignedLayerServiceManagerCaller.DisabledVerifiers(&bind.CallOpts{}) + num, err := r.AvsContractBindings.ServiceManager.DisabledVerifiers(&bind.CallOpts{}) + if err != nil { + // Retry with fallback client + num, err = r.AvsContractBindings.ServiceManagerFallback.DisabledVerifiers(&bind.CallOpts{}) + if err != nil { + r.logger.Error("Failed to fetch DisabledVerifiers", "err", err) + } + } + return num, err } // Returns all the "NewBatchV3" logs that have not been responded starting from the given block number @@ -94,7 +102,7 @@ func (r *AvsReader) GetNotRespondedTasksFrom(fromBlock uint64) ([]servicemanager // now check if its finalized or not before appending batchIdentifier := append(task.BatchMerkleRoot[:], task.SenderAddress[:]...) batchIdentifierHash := *(*[32]byte)(crypto.Keccak256(batchIdentifier)) - state, err := r.AvsContractBindings.ServiceManager.ContractAlignedLayerServiceManagerCaller.BatchesState(nil, batchIdentifierHash) + state, err := r.AvsContractBindings.ServiceManager.BatchesState(nil, batchIdentifierHash) if err != nil { return nil, err diff --git a/core/chainio/avs_subscriber.go b/core/chainio/avs_subscriber.go index c408020582..0c1ad05923 100644 --- a/core/chainio/avs_subscriber.go +++ b/core/chainio/avs_subscriber.go @@ -8,12 +8,14 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" ethcommon "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/core/types" servicemanager "github.com/yetanotherco/aligned_layer/contracts/bindings/AlignedLayerServiceManager" retry "github.com/yetanotherco/aligned_layer/core" "github.com/yetanotherco/aligned_layer/core/config" + "fmt" sdklogging "github.com/Layr-Labs/eigensdk-go/logging" "github.com/ethereum/go-ethereum/crypto" ) @@ -22,7 +24,6 @@ const ( MaxRetries = 100 RetryInterval = 1 * time.Second BlockInterval uint64 = 1000 - PollLatestBatchInterval = 5 * time.Second RemoveBatchFromSetInterval = 5 * time.Minute ) @@ -43,6 +44,11 @@ type AvsSubscriber struct { logger sdklogging.Logger } +type ErrorPair struct { + ErrorMainRPC error + ErrorFallbackRPC error +} + func NewAvsSubscriberFromConfig(baseConfig *config.BaseConfig) (*AvsSubscriber, error) { avsContractBindings, err := NewAvsServiceBindings( baseConfig.AlignedLayerDeploymentConfig.AlignedLayerServiceManagerAddr, @@ -61,99 +67,30 @@ func NewAvsSubscriberFromConfig(baseConfig *config.BaseConfig) (*AvsSubscriber, }, nil } -func (s *AvsSubscriber) SubscribeToNewTasksV2(newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) (chan error, error) { +func (s *AvsSubscriber) SubscribeToNewTasksV3(newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3, errorPairChannel chan ErrorPair, pollInterval time.Duration) *ErrorPair { // Create a new channel to receive new tasks - internalChannel := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) + internalChannel := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) + s.logger.Info("Starting subscription to new AlignedLayer V3 tasks") // Subscribe to new tasks - sub, err := SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - s.logger.Error("Primary failed to subscribe to new AlignedLayer V2 tasks after %d retries", retry.NetworkNumRetries, "err", err) - return nil, err + sub, errMain := SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams()) + if errMain != nil { + s.logger.Error(fmt.Sprintf("Fallback failed to subscribe to new AlignedLayer V3 tasks after %d retries", MaxRetries), "err", fmt.Sprintf("%v", errMain)) } - subFallback, err := SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - s.logger.Error("Fallback failed to subscribe to new AlignedLayer V2 tasks after %d retries", retry.NetworkNumRetries, "err", err) - return nil, err + subFallback, errFallback := SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams()) + if errFallback != nil { + s.logger.Error(fmt.Sprintf("Fallback failed to subscribe to new AlignedLayer V3 tasks after %d retries", MaxRetries), "err", fmt.Sprintf("%v", errFallback)) } - s.logger.Info("Subscribed to new AlignedLayer V2 tasks") - - // create a new channel to foward errors - errorChannel := make(chan error) - - pollLatestBatchTicker := time.NewTicker(PollLatestBatchInterval) - - // Forward the new tasks to the provided channel - go func() { - defer pollLatestBatchTicker.Stop() - newBatchMutex := &sync.Mutex{} - batchesSet := make(map[[32]byte]struct{}) - for { - select { - case newBatch := <-internalChannel: - s.processNewBatchV2(newBatch, batchesSet, newBatchMutex, newTaskCreatedChan) - case <-pollLatestBatchTicker.C: - latestBatch, err := s.getLatestNotRespondedTaskFromEthereumV2() - if err != nil { - s.logger.Debug("Failed to get latest task from blockchain", "err", err) - continue - } - if latestBatch != nil { - s.processNewBatchV2(latestBatch, batchesSet, newBatchMutex, newTaskCreatedChan) - } - } - } - - }() - // Handle errors and resubscribe - go func() { - for { - select { - case err := <-sub.Err(): - s.logger.Warn("Error in new task subscription", "err", err) - sub.Unsubscribe() - sub, err = SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - errorChannel <- err - } - case err := <-subFallback.Err(): - s.logger.Warn("Error in fallback new task subscription", "err", err) - subFallback.Unsubscribe() - subFallback, err = SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - errorChannel <- err - } - } - } - }() - - return errorChannel, nil -} - -func (s *AvsSubscriber) SubscribeToNewTasksV3(newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) (chan error, error) { - // Create a new channel to receive new tasks - internalChannel := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) - - // Subscribe to new tasks - sub, err := SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - s.logger.Error("Primary failed to subscribe to new AlignedLayer V3 tasks after %d retries", MaxRetries, "err", err) - return nil, err + if errMain != nil && errFallback != nil { + s.logger.Error("Failed to subscribe to new AlignedLayer V3 tasks with both RPCs", "errMain", errMain, "errFallback", errFallback) + return &ErrorPair{ErrorMainRPC: errMain, ErrorFallbackRPC: errFallback} } - subFallback, err := SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - s.logger.Error("Fallback failed to subscribe to new AlignedLayer V3 tasks after %d retries", MaxRetries, "err", err) - return nil, err - } s.logger.Info("Subscribed to new AlignedLayer V3 tasks") - // create a new channel to foward errors - errorChannel := make(chan error) - - pollLatestBatchTicker := time.NewTicker(PollLatestBatchInterval) + pollLatestBatchTicker := time.NewTicker(pollInterval) // Forward the new tasks to the provided channel go func() { @@ -180,53 +117,33 @@ func (s *AvsSubscriber) SubscribeToNewTasksV3(newTaskCreatedChan chan *servicema // Handle errors and resubscribe go func() { - for { + s.logger.Info("Starting error handling goroutine") + var errMain, errFallback error + var auxSub, auxSubFallback event.Subscription + for errMain == nil || errFallback == nil { //while one is active select { case err := <-sub.Err(): - s.logger.Warn("Error in new task subscription", "err", err) - sub.Unsubscribe() - sub, err = SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - errorChannel <- err + s.logger.Warn("Error in new task subscription of main connection", "err", err) + + auxSub, errMain = SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams()) + if errMain == nil { + sub = auxSub // update the subscription only if it was successful + s.logger.Info("Resubscribed to fallback new task subscription") } case err := <-subFallback.Err(): - s.logger.Warn("Error in fallback new task subscription", "err", err) - subFallback.Unsubscribe() - subFallback, err = SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams()) - if err != nil { - errorChannel <- err + s.logger.Warn("Error in new task subscription of fallback connection", "err", err) + + auxSubFallback, errFallback = SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams()) + if errFallback == nil { + subFallback = auxSubFallback // update the subscription only if it was successful + s.logger.Info("Resubscribed to fallback new task subscription") } } } + errorPairChannel <- ErrorPair{ErrorMainRPC: errMain, ErrorFallbackRPC: errFallback} }() - return errorChannel, nil -} - -func (s *AvsSubscriber) processNewBatchV2(batch *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2, batchesSet map[[32]byte]struct{}, newBatchMutex *sync.Mutex, newTaskCreatedChan chan<- *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) { - newBatchMutex.Lock() - defer newBatchMutex.Unlock() - - batchIdentifier := append(batch.BatchMerkleRoot[:], batch.SenderAddress[:]...) - var batchIdentifierHash = *(*[32]byte)(crypto.Keccak256(batchIdentifier)) - - if _, ok := batchesSet[batchIdentifierHash]; !ok { - s.logger.Info("Received new task", - "batchMerkleRoot", hex.EncodeToString(batch.BatchMerkleRoot[:]), - "senderAddress", hex.EncodeToString(batch.SenderAddress[:]), - "batchIdentifierHash", hex.EncodeToString(batchIdentifierHash[:])) - - batchesSet[batchIdentifierHash] = struct{}{} - newTaskCreatedChan <- batch - - // Remove the batch from the set after RemoveBatchFromSetInterval time - go func() { - time.Sleep(RemoveBatchFromSetInterval) - newBatchMutex.Lock() - delete(batchesSet, batchIdentifierHash) - newBatchMutex.Unlock() - }() - } + return nil } func (s *AvsSubscriber) processNewBatchV3(batch *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3, batchesSet map[[32]byte]struct{}, newBatchMutex *sync.Mutex, newTaskCreatedChan chan<- *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) { @@ -255,56 +172,6 @@ func (s *AvsSubscriber) processNewBatchV3(batch *servicemanager.ContractAlignedL } } -// getLatestNotRespondedTaskFromEthereum queries the blockchain for the latest not responded task using the FilterNewBatch method. -func (s *AvsSubscriber) getLatestNotRespondedTaskFromEthereumV2() (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV2, error) { - - latestBlock, err := s.BlockNumberRetryable(context.Background(), retry.NetworkRetryParams()) - if err != nil { - return nil, err - } - - var fromBlock uint64 - - if latestBlock < BlockInterval { - fromBlock = 0 - } else { - fromBlock = latestBlock - BlockInterval - } - - logs, err := s.FilterBatchV2Retryable(&bind.FilterOpts{Start: fromBlock, End: nil, Context: context.Background()}, nil, retry.NetworkRetryParams()) - if err != nil { - return nil, err - } - - var lastLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2 - - // Iterate over the logs until the end - for logs.Next() { - lastLog = logs.Event - } - - if err := logs.Error(); err != nil { - return nil, err - } - - if lastLog == nil { - return nil, nil - } - - batchIdentifier := append(lastLog.BatchMerkleRoot[:], lastLog.SenderAddress[:]...) - batchIdentifierHash := *(*[32]byte)(crypto.Keccak256(batchIdentifier)) - state, err := s.BatchesStateRetryable(nil, batchIdentifierHash, retry.NetworkRetryParams()) - if err != nil { - return nil, err - } - - if state.Responded { - return nil, nil - } - - return lastLog, nil -} - // getLatestNotRespondedTaskFromEthereum queries the blockchain for the latest not responded task using the FilterNewBatch method. func (s *AvsSubscriber) getLatestNotRespondedTaskFromEthereumV3() (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV3, error) { latestBlock, err := s.BlockNumberRetryable(context.Background(), retry.NetworkRetryParams()) diff --git a/core/chainio/retryable.go b/core/chainio/retryable.go index bf4724e2f2..0e60d08496 100644 --- a/core/chainio/retryable.go +++ b/core/chainio/retryable.go @@ -2,6 +2,7 @@ package chainio import ( "context" + "github.com/rs/zerolog/log" "math/big" "github.com/ethereum/go-ethereum" @@ -125,19 +126,6 @@ func (s *AvsSubscriber) BlockNumberRetryable(ctx context.Context, config *retry. return retry.RetryWithData(latestBlock_func, config) } -/* -FilterBatchV2Retryable -Get NewBatchV2 logs from the AVS contract. -- All errors are considered Transient Errors -- Retry times (3 retries): 1 sec, 2 sec, 4 sec. -*/ -func (s *AvsSubscriber) FilterBatchV2Retryable(opts *bind.FilterOpts, batchMerkleRoot [][32]byte, config *retry.RetryParams) (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV2Iterator, error) { - filterNewBatchV2_func := func() (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV2Iterator, error) { - return s.AvsContractBindings.ServiceManager.FilterNewBatchV2(opts, batchMerkleRoot) - } - return retry.RetryWithData(filterNewBatchV2_func, config) -} - /* FilterBatchV3Retryable Get NewBatchV3 logs from the AVS contract. @@ -145,10 +133,10 @@ Get NewBatchV3 logs from the AVS contract. - Retry times (3 retries): 1 sec, 2 sec, 4 sec. */ func (s *AvsSubscriber) FilterBatchV3Retryable(opts *bind.FilterOpts, batchMerkleRoot [][32]byte, config *retry.RetryParams) (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV3Iterator, error) { - filterNewBatchV2_func := func() (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV3Iterator, error) { + filterNewBatchV3_func := func() (*servicemanager.ContractAlignedLayerServiceManagerNewBatchV3Iterator, error) { return s.AvsContractBindings.ServiceManager.FilterNewBatchV3(opts, batchMerkleRoot) } - return retry.RetryWithData(filterNewBatchV2_func, config) + return retry.RetryWithData(filterNewBatchV3_func, config) } /* @@ -167,7 +155,7 @@ func (s *AvsSubscriber) BatchesStateRetryable(opts *bind.CallOpts, arg0 [32]byte Responded bool RespondToTaskFeeLimit *big.Int }, error) { - return s.AvsContractBindings.ServiceManager.ContractAlignedLayerServiceManagerCaller.BatchesState(opts, arg0) + return s.AvsContractBindings.ServiceManager.BatchesState(opts, arg0) } return retry.RetryWithData(batchState_func, config) @@ -192,25 +180,6 @@ func (s *AvsSubscriber) SubscribeNewHeadRetryable(ctx context.Context, c chan<- return retry.RetryWithData(subscribeNewHead_func, config) } -/* -SubscribeToNewTasksV2Retryable -Subscribe to NewBatchV2 logs from the AVS contract. -- All errors are considered Transient Errors -- Retry times (3 retries): 1 sec, 2 sec, 4 sec. -*/ -func SubscribeToNewTasksV2Retryable( - opts *bind.WatchOpts, - serviceManager *servicemanager.ContractAlignedLayerServiceManager, - newTaskCreatedChan chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2, - batchMerkleRoot [][32]byte, - config *retry.RetryParams, -) (event.Subscription, error) { - subscribe_func := func() (event.Subscription, error) { - return serviceManager.WatchNewBatchV2(opts, newTaskCreatedChan, batchMerkleRoot) - } - return retry.RetryWithData(subscribe_func, config) -} - /* SubscribeToNewTasksV3Retryable Subscribe to NewBatchV3 logs from the AVS contract. @@ -225,6 +194,7 @@ func SubscribeToNewTasksV3Retryable( config *retry.RetryParams, ) (event.Subscription, error) { subscribe_func := func() (event.Subscription, error) { + log.Info().Msg("Subscribing to NewBatchV3") return serviceManager.WatchNewBatchV3(opts, newTaskCreatedChan, batchMerkleRoot) } return retry.RetryWithData(subscribe_func, config) diff --git a/core/config/aggregator.go b/core/config/aggregator.go index 3d38982e05..3766f80cd2 100644 --- a/core/config/aggregator.go +++ b/core/config/aggregator.go @@ -29,6 +29,7 @@ type AggregatorConfig struct { GasBumpIncrementalPercentage uint GasBumpPercentageLimit uint TimeToWaitBeforeBump time.Duration + PollLatestBatchInterval time.Duration } } @@ -48,6 +49,7 @@ type AggregatorConfigFromYaml struct { GasBumpIncrementalPercentage uint `yaml:"gas_bump_incremental_percentage"` GasBumpPercentageLimit uint `yaml:"gas_bump_percentage_limit"` TimeToWaitBeforeBump time.Duration `yaml:"time_to_wait_before_bump"` + PollLatestBatchInterval time.Duration `yaml:"poll_latest_batch_interval"` } `yaml:"aggregator"` } @@ -97,6 +99,7 @@ func NewAggregatorConfig(configFilePath string) *AggregatorConfig { GasBumpIncrementalPercentage uint GasBumpPercentageLimit uint TimeToWaitBeforeBump time.Duration + PollLatestBatchInterval time.Duration }(aggregatorConfigFromYaml.Aggregator), } } diff --git a/core/config/eigen_layer_deployment.go b/core/config/eigen_layer_deployment.go index ba64748418..1ba41c8e8f 100644 --- a/core/config/eigen_layer_deployment.go +++ b/core/config/eigen_layer_deployment.go @@ -12,14 +12,12 @@ import ( type EigenLayerDeploymentConfig struct { DelegationManagerAddr common.Address AVSDirectoryAddr common.Address - SlasherAddr common.Address } type EigenLayerDeploymentConfigFromJson struct { Addresses struct { DelegationManagerAddr common.Address `json:"delegationManager"` AVSDirectoryAddr common.Address `json:"avsDirectory"` - SlasherAddr common.Address `json:"slasher"` } `json:"addresses"` } @@ -44,13 +42,8 @@ func NewEigenLayerDeploymentConfig(eigenLayerDeploymentFilePath string) *EigenLa log.Fatal("AVS directory address is empty") } - if eigenLayerDeploymentConfigFromJson.Addresses.SlasherAddr == common.HexToAddress("") { - log.Fatal("Slasher address is empty") - } - return &EigenLayerDeploymentConfig{ DelegationManagerAddr: eigenLayerDeploymentConfigFromJson.Addresses.DelegationManagerAddr, AVSDirectoryAddr: eigenLayerDeploymentConfigFromJson.Addresses.AVSDirectoryAddr, - SlasherAddr: eigenLayerDeploymentConfigFromJson.Addresses.SlasherAddr, } } diff --git a/core/config/operator.go b/core/config/operator.go index 6c3ed1ddcf..12f47c2b8f 100644 --- a/core/config/operator.go +++ b/core/config/operator.go @@ -4,6 +4,7 @@ import ( "errors" "log" "os" + "time" "github.com/ethereum/go-ethereum/common" "github.com/yetanotherco/aligned_layer/core/utils" @@ -27,6 +28,7 @@ type OperatorConfig struct { MetricsIpPortAddress string MaxBatchSize int64 LastProcessedBatchFilePath string + PollLatestBatchInterval time.Duration } } @@ -44,8 +46,9 @@ type OperatorConfigFromYaml struct { MetricsIpPortAddress string `yaml:"metrics_ip_port_address"` MaxBatchSize int64 `yaml:"max_batch_size"` LastProcessedBatchFilePath string `yaml:"last_processed_batch_filepath"` + PollLatestBatchInterval string `yaml:"poll_latest_batch_interval"` } `yaml:"operator"` - BlsConfigFromYaml BlsConfigFromYaml `yaml:"bls"` + BlsConfigFromYaml BlsConfigFromYaml `yaml:"bls"` } func NewOperatorConfig(configFilePath string) *OperatorConfig { @@ -70,6 +73,13 @@ func NewOperatorConfig(configFilePath string) *OperatorConfig { log.Fatal("Error reading operator config: ", err) } + pollInterval := 20 * time.Second + if operatorConfigFromYaml.Operator.PollLatestBatchInterval != "" { + if parsed, err := time.ParseDuration(operatorConfigFromYaml.Operator.PollLatestBatchInterval); err == nil { + pollInterval = parsed + } + } + return &OperatorConfig{ BaseConfig: baseConfig, BlsConfig: blsConfig, @@ -87,6 +97,21 @@ func NewOperatorConfig(configFilePath string) *OperatorConfig { MetricsIpPortAddress string MaxBatchSize int64 LastProcessedBatchFilePath string - }(operatorConfigFromYaml.Operator), + PollLatestBatchInterval time.Duration + }{ + AggregatorServerIpPortAddress: operatorConfigFromYaml.Operator.AggregatorServerIpPortAddress, + OperatorTrackerIpPortAddress: operatorConfigFromYaml.Operator.OperatorTrackerIpPortAddress, + Address: operatorConfigFromYaml.Operator.Address, + EarningsReceiverAddress: operatorConfigFromYaml.Operator.EarningsReceiverAddress, + DelegationApproverAddress: operatorConfigFromYaml.Operator.DelegationApproverAddress, + StakerOptOutWindowBlocks: operatorConfigFromYaml.Operator.StakerOptOutWindowBlocks, + MetadataUrl: operatorConfigFromYaml.Operator.MetadataUrl, + RegisterOperatorOnStartup: operatorConfigFromYaml.Operator.RegisterOperatorOnStartup, + EnableMetrics: operatorConfigFromYaml.Operator.EnableMetrics, + MetricsIpPortAddress: operatorConfigFromYaml.Operator.MetricsIpPortAddress, + MaxBatchSize: operatorConfigFromYaml.Operator.MaxBatchSize, + LastProcessedBatchFilePath: operatorConfigFromYaml.Operator.LastProcessedBatchFilePath, + PollLatestBatchInterval: pollInterval, + }, } } diff --git a/batcher/Cargo.lock b/crates/Cargo.lock similarity index 69% rename from batcher/Cargo.lock rename to crates/Cargo.lock index fe8352d815..3aa59749a3 100644 --- a/batcher/Cargo.lock +++ b/crates/Cargo.lock @@ -25,18 +25,18 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -55,16 +55,16 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.16", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -74,23 +74,23 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] [[package]] name = "aligned" -version = "0.14.0" +version = "0.20.0" dependencies = [ "aligned-sdk 0.1.0", "clap", "env_logger", "ethers", "futures-util", - "lambdaworks-crypto", + "lambdaworks-crypto 0.10.0", "log", "rpassword", "serde", @@ -121,16 +121,15 @@ dependencies = [ "ethers", "futures-util", "hex", - "lambdaworks-crypto", + "lambdaworks-crypto 0.12.0", "lazy_static", "log", "mina-account-verifier-ffi", "mina-state-verifier-ffi", - "mina_bridge_core", "once_cell", "priority-queue", "prometheus", - "reqwest 0.12.8", + "reqwest 0.12.24", "risc0-zkvm", "serde", "serde_json", @@ -151,9 +150,11 @@ dependencies = [ "ethers", "futures-util", "hex", - "lambdaworks-crypto", + "lambdaworks-crypto 0.12.0", "log", + "reqwest 0.12.24", "serde", + "serde_bytes", "serde_json", "serde_repr", "sha3", @@ -165,14 +166,14 @@ dependencies = [ [[package]] name = "aligned-sdk" version = "0.1.0" -source = "git+https://github.com/lambdaclass/aligned_layer.git?rev=cebeee7b86de0fcd3fd6f97bcd8a1096d7708bc5#cebeee7b86de0fcd3fd6f97bcd8a1096d7708bc5" +source = "git+https://github.com/lambdaclass/aligned_layer.git?rev=220546afa12c035a508529224f5148cd6af4ca78#220546afa12c035a508529224f5148cd6af4ca78" dependencies = [ "ciborium", "dialoguer", "ethers", "futures-util", "hex", - "lambdaworks-crypto", + "lambdaworks-crypto 0.10.0", "log", "serde", "serde_json", @@ -185,9 +186,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" @@ -216,13 +217,13 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.40" +version = "0.1.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4932d790c723181807738cf1ac68198ab581cd699545b155601332541ee47bd" +checksum = "28e2652684758b0d9b389d248b209ed9fd9989ef489a550265fe4bb8454fe7eb" dependencies = [ - "alloy-primitives 0.8.9", - "num_enum 0.7.3", - "strum 0.26.3", + "alloy-primitives 0.8.26", + "num_enum 0.7.5", + "strum 0.27.2", ] [[package]] @@ -232,7 +233,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" dependencies = [ "alloy-eips", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rlp", "alloy-serde", "c-kzg", @@ -249,40 +250,40 @@ dependencies = [ "alloy-json-abi", "alloy-network", "alloy-network-primitives", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-provider", "alloy-pubsub", "alloy-rpc-types-eth", - "alloy-sol-types 0.8.9", + "alloy-sol-types", "alloy-transport", "futures", "futures-util", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "alloy-core" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cce174ca699ddee3bfb2ec1fbd99ad7efd05eca20c5c888d8320db41f7e8f04" +checksum = "05f1ab91967646311bb7dd32db4fee380c69fe624319dcd176b89fb2a420c6b5" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rlp", - "alloy-sol-types 0.8.9", + "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5647fce5a168f9630f935bf7821c4207b1755184edaeba783cb4e11d35058484" +checksum = "cf69d3061e2e908a4370bda5d8d6529d5080232776975489eec0b49ce971027e" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-sol-type-parser", - "alloy-sol-types 0.8.9", + "alloy-sol-types", "const-hex", "itoa", "serde", @@ -296,7 +297,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rlp", "serde", ] @@ -307,7 +308,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" dependencies = [ - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rlp", "k256", "serde", @@ -321,14 +322,14 @@ checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" dependencies = [ "alloy-eip2930", "alloy-eip7702", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rlp", "alloy-serde", "c-kzg", "derive_more 1.0.0", "once_cell", "serde", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -337,18 +338,18 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" dependencies = [ - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-serde", "serde", ] [[package]] name = "alloy-json-abi" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b5671117c38b1c2306891f97ad3828d85487087f54ebe2c7591a055ea5bcea7" +checksum = "4584e3641181ff073e9d5bec5b3b8f78f9749d9fb108a1cfbc4399a4a139c72a" dependencies = [ - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-sol-type-parser", "serde", "serde_json", @@ -360,11 +361,11 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" dependencies = [ - "alloy-primitives 0.8.9", - "alloy-sol-types 0.8.9", + "alloy-primitives 0.8.26", + "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -378,15 +379,15 @@ dependencies = [ "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", - "alloy-sol-types 0.8.9", + "alloy-sol-types", "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -396,58 +397,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" dependencies = [ "alloy-eips", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-serde", "serde", ] [[package]] name = "alloy-primitives" -version = "0.7.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +checksum = "777d58b30eb9a4db0e5f59bc30e8c2caef877fee7dc8734cf242a51a60f22e05" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more 0.99.18", - "hex-literal", + "derive_more 2.0.1", + "foldhash 0.1.5", + "hashbrown 0.15.5", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", + "paste", "proptest", - "rand", + "rand 0.8.5", "ruint", + "rustc-hash 2.1.1", "serde", + "sha3", "tiny-keccak", ] [[package]] name = "alloy-primitives" -version = "0.8.9" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71738eb20c42c5fb149571e76536a0f309d142f3957c28791662b96baf77a3d" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ - "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more 1.0.0", - "foldhash", - "hashbrown 0.15.0", - "hex-literal", - "indexmap 2.6.0", + "derive_more 2.0.1", + "hashbrown 0.16.0", + "indexmap 2.12.0", "itoa", "k256", - "keccak-asm", "paste", - "proptest", - "rand", + "rand 0.9.2", "ruint", - "rustc-hash 2.0.0", "serde", - "sha3", "tiny-keccak", ] @@ -463,7 +462,7 @@ dependencies = [ "alloy-json-rpc", "alloy-network", "alloy-network-primitives", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-eth", @@ -479,10 +478,10 @@ dependencies = [ "futures-utils-wasm", "lru", "pin-project", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "url", @@ -495,7 +494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d05f63677e210d758cd5d6d1ce10f20c980c3560ccfbe79ba1997791862a04f" dependencies = [ "alloy-json-rpc", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-transport", "bimap", "futures", @@ -503,15 +502,15 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.1", + "tower 0.5.2", "tracing", ] [[package]] name = "alloy-rlp" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -520,13 +519,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -536,7 +535,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" dependencies = [ "alloy-json-rpc", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-pubsub", "alloy-transport", "alloy-transport-http", @@ -544,12 +543,12 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", "serde_json", "tokio", "tokio-stream", - "tower 0.5.1", + "tower 0.5.2", "tracing", "url", ] @@ -574,7 +573,7 @@ checksum = "1464c4dd646e1bdfde86ae65ce5ba168dbb29180b478011fe87117ae46b1629b" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rlp", "derive_more 1.0.0", ] @@ -588,10 +587,10 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-network-primitives", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-rlp", "alloy-serde", - "alloy-sol-types 0.8.9", + "alloy-sol-types", "cfg-if", "derive_more 1.0.0", "hashbrown 0.14.5", @@ -606,7 +605,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" dependencies = [ - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "serde", "serde_json", ] @@ -617,12 +616,12 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" dependencies = [ - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "async-trait", "auto_impl", "elliptic-curve 0.13.8", "k256", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -633,118 +632,72 @@ checksum = "9fabe917ab1778e760b4701628d1cae8e028ee9d52ac6307de4e1e9286ab6b5f" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 0.8.9", + "alloy-primitives 0.8.26", "alloy-signer", "async-trait", "elliptic-curve 0.13.8", "eth-keystore", "k256", - "rand", - "thiserror", -] - -[[package]] -name = "alloy-sol-macro" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" -dependencies = [ - "alloy-sol-macro-expander 0.7.7", - "alloy-sol-macro-input 0.7.7", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.82", + "rand 0.8.5", + "thiserror 1.0.69", ] [[package]] name = "alloy-sol-macro" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0900b83f4ee1f45c640ceee596afbc118051921b9438fdb5a3175c1a7e05f8b" +checksum = "e68b32b6fa0d09bb74b4cefe35ccc8269d711c26629bc7cd98a47eeb12fe353f" dependencies = [ - "alloy-sol-macro-expander 0.8.9", - "alloy-sol-macro-input 0.8.9", + "alloy-sol-macro-expander", + "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.82", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" -dependencies = [ - "alloy-sol-macro-input 0.7.7", - "const-hex", - "heck 0.5.0", - "indexmap 2.6.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.82", - "syn-solidity 0.7.7", - "tiny-keccak", + "syn 2.0.108", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41b1e78dde06b5e12e6702fa8c1d30621bf07728ba75b801fb801c9c6a0ba10" +checksum = "2afe6879ac373e58fd53581636f2cce843998ae0b058ebe1e4f649195e2bd23c" dependencies = [ "alloy-json-abi", - "alloy-sol-macro-input 0.8.9", + "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.6.0", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.82", - "syn-solidity 0.8.9", + "syn 2.0.108", + "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" -dependencies = [ - "const-hex", - "dunce", - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.82", - "syn-solidity 0.7.7", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91dc311a561a306664393407b88d3e53ae58581624128afd8a15faa5de3627dc" +checksum = "c3ba01aee235a8c699d07e5be97ba215607564e71be72f433665329bec307d28" dependencies = [ "alloy-json-abi", "const-hex", "dunce", "heck 0.5.0", + "macro-string", "proc-macro2", "quote", "serde_json", - "syn 2.0.82", - "syn-solidity 0.8.9", + "syn 2.0.108", + "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45d1fbee9e698f3ba176b6e7a145f4aefe6d2b746b611e8bb246fe11a0e9f6c4" +checksum = "4c13fc168b97411e04465f03e632f31ef94cad1c7c8951bf799237fd7870d535" dependencies = [ "serde", "winnow", @@ -752,25 +705,13 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" -dependencies = [ - "alloy-primitives 0.7.7", - "alloy-sol-macro 0.7.7", - "const-hex", - "serde", -] - -[[package]] -name = "alloy-sol-types" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "086f41bc6ebcd8cb15f38ba20e47be38dd03692149681ce8061c35d960dbf850" +checksum = "6e960c4b52508ef2ae1e37cae5058e905e9ae099b107900067a503f8c454036f" dependencies = [ "alloy-json-abi", - "alloy-primitives 0.8.9", - "alloy-sol-macro 0.8.9", + "alloy-primitives 0.8.26", + "alloy-sol-macro", "const-hex", "serde", ] @@ -787,9 +728,9 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", - "tower 0.5.1", + "tower 0.5.2", "tracing", "url", ] @@ -802,9 +743,9 @@ checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde_json", - "tower 0.5.1", + "tower 0.5.2", "tracing", "url", ] @@ -837,8 +778,8 @@ dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http 1.1.0", - "rustls 0.23.15", + "http 1.3.1", + "rustls 0.23.34", "serde_json", "tokio", "tokio-tungstenite 0.23.1", @@ -846,12 +787,6 @@ dependencies = [ "ws_stream_wasm", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -872,9 +807,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -887,71 +822,88 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "ark-bn254" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-std 0.4.0", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-r1cs-std", + "ark-std 0.5.0", ] [[package]] name = "ark-crypto-primitives" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3a13b34da09176a8baba701233fdffbaa7c1b1192ce031a3da4e55ce1f1a56" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" dependencies = [ - "ark-ec 0.4.2", - "ark-ff 0.4.2", + "ahash 0.8.12", + "ark-crypto-primitives-macros", + "ark-ec 0.5.0", + "ark-ff 0.5.0", "ark-relations", - "ark-serialize 0.4.2", + "ark-serialize 0.5.0", "ark-snark", - "ark-std 0.4.0", + "ark-std 0.5.0", "blake2", "derivative", "digest 0.10.7", - "sha2 0.10.8", + "fnv", + "merlin", + "sha2 0.10.9", +] + +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -970,17 +922,21 @@ dependencies = [ [[package]] name = "ark-ec" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" dependencies = [ - "ark-ff 0.4.2", - "ark-poly 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", "num-traits", "zeroize", ] @@ -1023,6 +979,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.3.0" @@ -1042,6 +1018,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-ff-macros" version = "0.3.0" @@ -1066,19 +1052,32 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-groth16" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ceafa83848c3e390f1cbf124bc3193b3e639b3f02009e0e290809a501b95fc" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" dependencies = [ "ark-crypto-primitives", - "ark-ec 0.4.2", - "ark-ff 0.4.2", - "ark-poly 0.4.2", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-poly 0.5.0", "ark-relations", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", ] [[package]] @@ -1096,25 +1095,44 @@ dependencies = [ [[package]] name = "ark-poly" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "hashbrown 0.13.2", + "ahash 0.8.12", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-relations", + "ark-std 0.5.0", + "educe", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "tracing", ] [[package]] name = "ark-relations" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00796b6efc05a3f48225e59cb6a2cda78881e7c390872d5786aaf112f31fb4f0" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" dependencies = [ - "ark-ff 0.4.2", - "ark-std 0.4.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", "tracing", "tracing-subscriber 0.2.25", ] @@ -1135,12 +1153,24 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "ark-serialize-derive 0.4.2", "ark-std 0.4.0", "digest 0.10.7", "num-bigint 0.4.6", ] +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + [[package]] name = "ark-serialize-derive" version = "0.3.0" @@ -1153,25 +1183,25 @@ dependencies = [ [[package]] name = "ark-serialize-derive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] name = "ark-snark" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d3cc6833a335bb8a600241889ead68ee89a3cf8448081fb7694c0fe503da63" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" dependencies = [ - "ark-ff 0.4.2", + "ark-ff 0.5.0", "ark-relations", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", ] [[package]] @@ -1181,7 +1211,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", "rayon", ] @@ -1192,9 +1222,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", ] +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + [[package]] name = "arrayref" version = "0.3.9" @@ -1207,12 +1253,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - [[package]] name = "ascii-canvas" version = "3.0.0" @@ -1252,18 +1292,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -1294,26 +1334,26 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.5.8" +version = "1.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7198e6f03240fdceba36656d8be440297b6b82270325908c7381f37d826a74f6" +checksum = "37cf2b6af2a95a20e266782b4f76f1a5e12bf412a9db2de9c1e9123b9d8c0ad8" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1330,8 +1370,8 @@ dependencies = [ "bytes", "fastrand", "hex", - "http 0.2.12", - "ring 0.17.8", + "http 1.3.1", + "ring 0.17.14", "time", "tokio", "tracing", @@ -1341,9 +1381,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.1" +version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e8f6b615cb5fc60a98132268508ad104310f0cfb25a1c22eee76efdf9154da" +checksum = "faf26925f4a5b59eb76722b63c2892b1d70d06fa053c72e4a100ec308c1d47bc" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1351,11 +1391,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "aws-lc-rs" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" +dependencies = [ + "bindgen 0.72.1", + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "aws-runtime" -version = "1.4.3" +version = "1.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a10d5c055aa540164d9561a0e2e74ad30f0dcf7393c3a92f6733ddf9c5762468" +checksum = "bfa006bb32360ed90ac51203feafb9d02e3d21046e1fd3a450a404b90ea73e5d" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1370,20 +1433,18 @@ dependencies = [ "fastrand", "http 0.2.12", "http-body 0.4.6", - "once_cell", "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.11.0", + "uuid 1.18.1", ] [[package]] name = "aws-sdk-s3" -version = "1.57.0" +version = "1.109.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8888c238bf93c77c5df8274b3999fd7fc1bb3fb658616f40dfde9e4fcd9efd94" +checksum = "3c6d81b75f8ff78882e70c5909804b44553d56136899fb4015a0a68ecc870e0e" dependencies = [ - "ahash 0.8.11", "aws-credential-types", "aws-runtime", "aws-sigv4", @@ -1402,21 +1463,21 @@ dependencies = [ "hex", "hmac", "http 0.2.12", + "http 1.3.1", "http-body 0.4.6", "lru", - "once_cell", "percent-encoding", "regex-lite", - "sha2 0.10.8", + "sha2 0.10.9", "tracing", "url", ] [[package]] name = "aws-sdk-sso" -version = "1.46.0" +version = "1.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc2faec3205d496c7e57eff685dd944203df7ce16a4116d0281c44021788a7b" +checksum = "f4af747ffcb5aa8da8be8f0679ef6940f1afdb8c2e10c36738c9ebeb8d17b95e" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1428,17 +1489,17 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", + "fastrand", "http 0.2.12", - "once_cell", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-ssooidc" -version = "1.47.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c93c241f52bc5e0476e259c953234dab7e2a35ee207ee202e86c0095ec4951dc" +checksum = "695dc67bb861ccb8426c9129b91c30e266a0e3d85650cafdf62fcca14c8fd338" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1450,17 +1511,17 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", + "fastrand", "http 0.2.12", - "once_cell", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sts" -version = "1.46.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b259429be94a3459fa1b00c5684faee118d74f9577cc50aebadc36e507c63b5f" +checksum = "928e87698cd916cf1efd5268148347269e6d2911028742c0061ff6261e639e3c" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1473,17 +1534,17 @@ dependencies = [ "aws-smithy-types", "aws-smithy-xml", "aws-types", + "fastrand", "http 0.2.12", - "once_cell", "regex-lite", "tracing", ] [[package]] name = "aws-sigv4" -version = "1.2.4" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8db6904450bafe7473c6ca9123f88cc11089e41a025408f992db4e22d3be68" +checksum = "bffc03068fbb9c8dd5ce1c6fb240678a5cffb86fb2b7b1985c999c4b83c8df68" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -1496,12 +1557,11 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.1.0", - "once_cell", - "p256", + "http 1.3.1", + "p256 0.11.1", "percent-encoding", - "ring 0.17.8", - "sha2 0.10.8", + "ring 0.17.14", + "sha2 0.10.9", "subtle", "time", "tracing", @@ -1510,9 +1570,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.1" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c" +checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c" dependencies = [ "futures-util", "pin-project-lite", @@ -1521,30 +1581,29 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.60.12" +version = "0.63.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598b1689d001c4d4dc3cb386adb07d37786783aee3ac4b324bcadac116bf3d23" +checksum = "bb9a26b2831e728924ec0089e92697a78a2f9cdcf90d81e8cfcc6a6c85080369" dependencies = [ "aws-smithy-http", "aws-smithy-types", "bytes", - "crc32c", - "crc32fast", + "crc-fast", "hex", "http 0.2.12", "http-body 0.4.6", "md-5", "pin-project-lite", "sha1", - "sha2 0.10.8", + "sha2 0.10.9", "tracing", ] [[package]] name = "aws-smithy-eventstream" -version = "0.60.5" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef7d0a272725f87e51ba2bf89f8c21e4df61b9e49ae1ac367a6d69916ef7c90" +checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" dependencies = [ "aws-smithy-types", "bytes", @@ -1553,9 +1612,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.11" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -1563,29 +1622,69 @@ dependencies = [ "bytes", "bytes-utils", "futures-core", + "futures-util", "http 0.2.12", + "http 1.3.1", "http-body 0.4.6", - "once_cell", "percent-encoding", "pin-project-lite", "pin-utils", "tracing", ] +[[package]] +name = "aws-smithy-http-client" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "h2 0.3.27", + "h2 0.4.12", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper 1.7.0", + "hyper-rustls 0.24.2", + "hyper-rustls 0.27.7", + "hyper-util", + "pin-project-lite", + "rustls 0.21.12", + "rustls 0.23.34", + "rustls-native-certs 0.8.2", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower 0.5.2", + "tracing", +] + [[package]] name = "aws-smithy-json" -version = "0.60.7" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] +[[package]] +name = "aws-smithy-observability" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc" +dependencies = [ + "aws-smithy-runtime-api", +] + [[package]] name = "aws-smithy-query" -version = "0.60.7" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9" dependencies = [ "aws-smithy-types", "urlencoding", @@ -1593,42 +1692,39 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.2" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a065c0fe6fdbdf9f11817eb68582b2ab4aff9e9c39e986ae48f7ec576c6322db" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", + "aws-smithy-http-client", + "aws-smithy-observability", "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "fastrand", - "h2 0.3.26", "http 0.2.12", + "http 1.3.1", "http-body 0.4.6", "http-body 1.0.1", - "httparse", - "hyper 0.14.31", - "hyper-rustls 0.24.2", - "once_cell", "pin-project-lite", "pin-utils", - "rustls 0.21.12", "tokio", "tracing", ] [[package]] name = "aws-smithy-runtime-api" -version = "1.7.2" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.1.0", + "http 1.3.1", "pin-project-lite", "tokio", "tracing", @@ -1637,16 +1733,16 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.7" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147100a7bea70fa20ef224a6bad700358305f5dc0f84649c53769761395b355b" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes", "bytes-utils", "futures-core", "http 0.2.12", - "http 1.1.0", + "http 1.3.1", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -1663,18 +1759,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.9" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0b0166827aa700d3dc519f72f8b3a91c35d0b8d042dc5d643a91e6f80648fc" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.3" +version = "1.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef" +checksum = "e2fd329bf0e901ff3f60425691410c69094dc2a1f34b331f37bfc4e9ac1565a1" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1686,18 +1782,18 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.4" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", "bytes", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.5.0", + "hyper 1.7.0", "hyper-util", "itoa", "matchit", @@ -1710,9 +1806,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", "tokio", - "tower 0.4.13", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -1727,23 +1823,37 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.16", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", +] + [[package]] name = "backon" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5289ec98f68f28dd809fd601059e6aa908bb8f6108620930828283d4ee23d7" +checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" dependencies = [ "fastrand", "gloo-timers 0.3.0", @@ -1752,9 +1862,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -1763,7 +1873,7 @@ dependencies = [ "object", "rustc-demangle", "serde", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -1808,9 +1918,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bcs" @@ -1819,7 +1929,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b6598a2f5d564fb7855dc6b06fd1c38cff5a72bd8b863a4d021938497b440a" dependencies = [ "serde", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1849,7 +1959,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1860,7 +1970,27 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.82", + "syn 2.0.108", +] + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.10.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn 2.0.108", ] [[package]] @@ -1888,7 +2018,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -1897,6 +2036,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -1905,9 +2050,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitvec" @@ -1932,9 +2077,9 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", @@ -1943,9 +2088,9 @@ dependencies = [ [[package]] name = "blake2s_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" +checksum = "e90f7deecfac93095eb874a40febd69427776e24e1bd7f87f33ac62d6f0174df" dependencies = [ "arrayref", "arrayvec", @@ -1954,9 +2099,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -1977,7 +2122,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -1986,7 +2131,16 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", ] [[package]] @@ -1998,15 +2152,15 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pairing", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "blst" -version = "0.3.13" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -2016,21 +2170,21 @@ dependencies = [ [[package]] name = "bonsai-sdk" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "1.4.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "duplicate", "maybe-async", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", - "thiserror", + "thiserror 2.0.17", ] [[package]] name = "borsh" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" dependencies = [ "borsh-derive", "cfg_aliases", @@ -2038,15 +2192,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b668d39970baad5356d7c83a86fee3a539e6f93bf6764c97368243e17a0487" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -2064,40 +2218,40 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ - "sha2 0.10.8", + "sha2 0.10.9", "tinyvec", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -2108,9 +2262,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -2137,12 +2291,11 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -2163,18 +2316,18 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.9" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -2187,18 +2340,52 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.27", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.27", + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.12.0", + "log", + "proc-macro2", + "quote", "serde", "serde_json", - "thiserror", + "syn 2.0.108", + "tempfile", + "toml 0.8.23", ] [[package]] name = "cc" -version = "1.1.31" +version = "1.2.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -2215,9 +2402,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2227,17 +2414,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2290,9 +2476,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -2300,9 +2486,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -2312,27 +2498,39 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" + +[[package]] +name = "cmake" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] [[package]] name = "cobs" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.17", +] [[package]] name = "coins-bip32" @@ -2346,8 +2544,8 @@ dependencies = [ "hmac", "k256", "serde", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -2361,9 +2559,9 @@ dependencies = [ "hmac", "once_cell", "pbkdf2 0.12.2", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -2376,33 +2574,30 @@ dependencies = [ "bech32", "bs58 0.5.1", "digest 0.10.7", - "generic-array 0.14.7", + "generic-array 0.14.9", "hex", "ripemd", "serde", "serde_derive", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "combine" -version = "3.8.1" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "ascii", - "byteorder", - "either", + "bytes", "memchr", - "unreachable", ] [[package]] @@ -2416,28 +2611,27 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", "unicode-width", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "const-hex" -version = "1.13.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -2446,6 +2640,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -2474,6 +2688,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -2487,7 +2711,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "libc", ] @@ -2502,27 +2726,46 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] -name = "crc32c" -version = "0.6.8" +name = "crc" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ - "rustc_version 0.4.1", + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc-fast" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f" +dependencies = [ + "crc", + "digest 0.10.7", + "libc", + "rand 0.9.2", + "regex", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] @@ -2533,11 +2776,20 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -2554,15 +2806,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -2570,8 +2822,8 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ - "generic-array 0.14.7", - "rand_core", + "generic-array 0.14.9", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -2582,8 +2834,8 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array 0.14.7", - "rand_core", + "generic-array 0.14.9", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -2594,7 +2846,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", "typenum", ] @@ -2608,49 +2860,44 @@ dependencies = [ ] [[package]] -name = "curve25519-dalek" -version = "4.1.3" +name = "ctrlc" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790" dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", + "dispatch2", + "nix", + "windows-sys 0.61.2", ] [[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" +name = "darling" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.82", + "darling_core 0.13.4", + "darling_macro 0.13.4", ] [[package]] name = "darling" -version = "0.13.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core 0.13.4", - "darling_macro 0.13.4", + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] name = "darling" -version = "0.20.10" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -2669,16 +2916,30 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.108", +] + +[[package]] +name = "darling_core" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -2694,13 +2955,24 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core 0.20.11", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.20.10", + "darling_core 0.21.3", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -2714,7 +2986,7 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.12", ] [[package]] @@ -2797,9 +3069,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "der" @@ -2813,22 +3085,23 @@ dependencies = [ [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -2842,17 +3115,48 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.108", +] + [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -2861,7 +3165,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -2872,7 +3185,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", "unicode-xid", ] @@ -2885,7 +3210,7 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -2895,7 +3220,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -2916,7 +3241,16 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys", + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", ] [[package]] @@ -2937,18 +3271,30 @@ checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.4.6", "windows-sys 0.48.0", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users", + "redox_users 0.4.6", "winapi", ] @@ -2958,6 +3304,29 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d102f1a462fdcdddce88d6d46c06c074a2d2749b262230333726b06c52bb7585" +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.10.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "docker-generate" version = "0.1.3" @@ -2988,6 +3357,20 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand 0.8.5", + "reqwest 0.12.24", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "dunce" version = "1.0.5" @@ -2996,14 +3379,21 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "duplicate" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de78e66ac9061e030587b2a2e75cc88f22304913c907b11307bca737141230cb" +checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" dependencies = [ - "heck 0.4.1", - "proc-macro-error", + "heck 0.5.0", + "proc-macro2", + "proc-macro2-diagnostics", ] +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "ecdsa" version = "0.14.8" @@ -3022,19 +3412,32 @@ version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der 0.7.9", + "der 0.7.10", "digest 0.10.7", "elliptic-curve 0.13.8", "rfc6979 0.4.0", + "serdect", "signature 2.2.0", "spki 0.7.3", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elf" @@ -3053,10 +3456,10 @@ dependencies = [ "der 0.6.1", "digest 0.10.7", "ff 0.12.1", - "generic-array 0.14.7", + "generic-array 0.14.9", "group 0.12.1", "pkcs8 0.9.0", - "rand_core", + "rand_core 0.6.4", "sec1 0.3.0", "subtle", "zeroize", @@ -3071,12 +3474,14 @@ dependencies = [ "base16ct 0.2.0", "crypto-bigint 0.5.5", "digest 0.10.7", - "ff 0.13.0", - "generic-array 0.14.7", + "ff 0.13.1", + "generic-array 0.14.9", "group 0.13.0", + "pem-rfc7468", "pkcs8 0.10.2", - "rand_core", + "rand_core 0.6.4", "sec1 0.7.3", + "serdect", "subtle", "zeroize", ] @@ -3104,15 +3509,15 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -3128,7 +3533,7 @@ dependencies = [ "hex", "k256", "log", - "rand", + "rand 0.8.5", "rlp", "serde", "sha3", @@ -3153,7 +3558,27 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -3165,14 +3590,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -3180,31 +3605,31 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3219,13 +3644,13 @@ dependencies = [ "hex", "hmac", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid 0.8.2", ] @@ -3242,7 +3667,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -3321,7 +3746,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3343,8 +3768,8 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.82", - "toml 0.8.19", + "syn 2.0.108", + "toml 0.8.23", "walkdir", ] @@ -3361,7 +3786,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -3372,24 +3797,24 @@ checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec", "bytes", - "cargo_metadata", + "cargo_metadata 0.18.1", "chrono", "const-hex", "elliptic-curve 0.13.8", "ethabi", - "generic-array 0.14.7", + "generic-array 0.14.9", "k256", - "num_enum 0.7.3", + "num_enum 0.7.5", "once_cell", "open-fastrlp", - "rand", + "rand 0.8.5", "rlp", "serde", "serde_json", "strum 0.26.3", - "syn 2.0.82", + "syn 2.0.108", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -3403,10 +3828,10 @@ dependencies = [ "chrono", "ethers-core", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -3430,7 +3855,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -3463,7 +3888,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite 0.20.1", "tracing", @@ -3488,9 +3913,9 @@ dependencies = [ "elliptic-curve 0.13.8", "eth-keystore", "ethers-core", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", "tracing", ] @@ -3502,7 +3927,7 @@ checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" dependencies = [ "cfg-if", "const-hex", - "dirs", + "dirs 5.0.1", "dunce", "ethers-core", "glob", @@ -3513,17 +3938,17 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", "solang-parser", "svm-rs", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "tokio", "tracing", "walkdir", - "yansi", + "yansi 0.5.1", ] [[package]] @@ -3532,6 +3957,17 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "eventsource-stream" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" +dependencies = [ + "futures-core", + "nom", + "pin-project-lite", +] + [[package]] name = "eyre" version = "0.6.12" @@ -3544,9 +3980,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fastrlp" @@ -3559,6 +3995,17 @@ dependencies = [ "bytes", ] +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "ff" version = "0.12.1" @@ -3566,31 +4013,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ "bitvec", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "bitvec", "byteorder", "ff_derive", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff_derive" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" dependencies = [ "addchain", - "cfg-if", "num-bigint 0.3.3", "num-integer", "num-traits", @@ -3600,10 +4046,10 @@ dependencies = [ ] [[package]] -name = "fiat-crypto" -version = "0.2.9" +name = "find-msvc-tools" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "fixed-hash" @@ -3612,7 +4058,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -3625,9 +4071,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -3641,9 +4087,15 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "foreign-types" @@ -3672,7 +4124,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -3689,9 +4141,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -3706,6 +4158,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "funty" version = "2.0.0" @@ -3778,7 +4236,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -3842,11 +4300,17 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -3865,9 +4329,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", @@ -3877,29 +4341,30 @@ dependencies = [ ] [[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "git2" -version = "0.19.0" +name = "getrandom" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ - "bitflags 2.6.0", + "cfg-if", + "js-sys", "libc", - "libgit2-sys", - "log", - "url", + "r-efi", + "wasip2", + "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gloo-timers" @@ -3936,12 +4401,12 @@ dependencies = [ [[package]] name = "graphql-parser" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" +checksum = "7a818c0d883d7c0801df27be910917750932be279c7bc82dc541b8769425f409" dependencies = [ "combine", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3992,7 +4457,7 @@ checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", "memuse", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -4002,8 +4467,8 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", - "rand_core", + "ff 0.13.1", + "rand_core 0.6.4", "subtle", ] @@ -4014,14 +4479,14 @@ source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b9 dependencies = [ "ark-ec 0.3.0", "ark-ff 0.3.0", - "rand", + "rand 0.8.5", ] [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -4029,7 +4494,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4038,17 +4503,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.6.0", + "http 1.3.1", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4057,12 +4522,13 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", ] [[package]] @@ -4084,7 +4550,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pasta_curves 0.4.1", - "rand_core", + "rand_core 0.6.4", "rayon", ] @@ -4114,33 +4580,34 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", + "allocator-api2", + "serde", ] [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "ahash 0.8.11", "allocator-api2", + "equivalent", + "foldhash 0.1.5", "serde", ] [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", + "foldhash 0.2.0", "serde", ] @@ -4153,6 +4620,15 @@ dependencies = [ "fxhash", ] +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + [[package]] name = "headers" version = "0.3.9" @@ -4205,9 +4681,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -4235,11 +4711,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4255,9 +4731,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -4282,27 +4758,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -4310,30 +4786,24 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -4342,20 +4812,22 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", - "h2 0.4.6", - "http 1.1.0", + "futures-core", + "h2 0.4.12", + "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -4369,30 +4841,43 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.32", "log", "rustls 0.21.12", - "rustls-native-certs", + "rustls-native-certs 0.6.3", "tokio", "tokio-rustls 0.24.1", ] [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", - "http 1.1.0", - "hyper 1.5.0", + "http 1.3.1", + "hyper 1.7.0", "hyper-util", - "rustls 0.23.15", + "rustls 0.23.34", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.3", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper 1.7.0", + "hyper-util", + "pin-project-lite", + "tokio", "tower-service", - "webpki-roots 0.26.6", ] [[package]] @@ -4402,7 +4887,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.31", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -4416,7 +4901,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.0", + "hyper 1.7.0", "hyper-util", "native-tls", "tokio", @@ -4426,35 +4911,43 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", - "hyper 1.5.0", + "hyper 1.7.0", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.1", + "system-configuration 0.6.1", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -4466,6 +4959,87 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -4474,12 +5048,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -4511,20 +5096,26 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] +[[package]] +name = "include_bytes_aligned" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" + [[package]] name = "indenter" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" @@ -4539,35 +5130,36 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "unicode-width", + "web-time", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ - "generic-array 0.14.7", + "generic-array 0.14.9", ] [[package]] @@ -4581,9 +5173,9 @@ dependencies = [ [[package]] name = "interprocess" -version = "2.2.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f4e4a06d42fab3e85ab1b419ad32b09eab58b901d40c57935ff92db3287a13" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" dependencies = [ "doctest-file", "futures-core", @@ -4596,15 +5188,25 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -4642,27 +5244,62 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -4690,7 +5327,7 @@ dependencies = [ "bls12_381", "ff 0.12.1", "group 0.12.1", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -4704,7 +5341,8 @@ dependencies = [ "ecdsa 0.16.9", "elliptic-curve 0.13.8", "once_cell", - "sha2 0.10.8", + "serdect", + "sha2 0.10.9", "signature 2.2.0", ] @@ -4750,15 +5388,15 @@ dependencies = [ "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", "poly-commitment", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "rmp-serde", "serde", "serde_with 1.14.0", "strum 0.24.1", "strum_macros 0.24.3", - "thiserror", + "thiserror 1.0.69", "turshi", ] @@ -4769,13 +5407,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", - "bit-set", + "bit-set 0.5.3", "ena", "itertools 0.11.0", "lalrpop-util", "petgraph", "regex", - "regex-syntax 0.8.5", + "regex-syntax", "string_cache", "term", "tiny-keccak", @@ -4789,7 +5427,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata 0.4.8", + "regex-automata", ] [[package]] @@ -4797,9 +5435,22 @@ name = "lambdaworks-crypto" version = "0.10.0" source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa95d94bba7de86cb96611b40d3#efd46f0b0aea3aa95d94bba7de86cb96611b40d3" dependencies = [ - "lambdaworks-math", + "lambdaworks-math 0.10.0", + "serde", + "sha2 0.10.9", + "sha3", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math 0.12.0", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", ] @@ -4812,11 +5463,22 @@ dependencies = [ "serde_json", ] +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom 0.2.16", + "rand 0.8.5", + "serde", + "serde_json", +] + [[package]] name = "lazy-regex" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +checksum = "191898e17ddee19e60bccb3945aa02339e81edd4a8c50e21fd4d48cdecda7b29" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4825,14 +5487,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -4846,101 +5508,88 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.161" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" - -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.6.0", - "libc", -] - -[[package]] -name = "libz-sys" -version = "1.1.20" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "cc", + "bitflags 2.10.0", "libc", - "pkg-config", - "vcpkg", ] [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "5e3283ed2d0e50c06dd8602e0ab319bb048b6325d0bba739db64ed8205179898" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "e5cec0ec4228b4853bb129c84dbf093a27e6c7a20526da046defc334a1b017f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.22" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru" @@ -4948,7 +5597,24 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.0", + "hashbrown 0.15.5", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -4962,11 +5628,11 @@ dependencies = [ [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -4983,7 +5649,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -5004,15 +5670,27 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memuse" -version = "0.2.1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" + +[[package]] +name = "merlin" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2145869435ace5ea6ea3d35f59be559317ec9a0d04e1812d5f185a87b6d36f1a" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] [[package]] name = "metal" @@ -5020,7 +5698,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -5100,7 +5778,7 @@ dependencies = [ [[package]] name = "mina-p2p-messages" version = "0.6.4" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "ark-ff 0.3.0", "base64 0.13.1", @@ -5108,7 +5786,7 @@ dependencies = [ "binprot_derive", "blake2", "bs58 0.4.0", - "derive_more 0.99.18", + "derive_more 0.99.20", "hex", "mina-curves", "mina-hasher", @@ -5118,8 +5796,8 @@ dependencies = [ "rsexp", "serde", "serde_json", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", "time", ] @@ -5134,7 +5812,7 @@ dependencies = [ "mina-curves", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", - "rand", + "rand 0.8.5", "rayon", "serde", "serde_with 1.14.0", @@ -5154,9 +5832,9 @@ dependencies = [ "mina-curves", "mina-hasher", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -5190,7 +5868,7 @@ dependencies = [ [[package]] name = "mina-tree" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "anyhow", "ark-ec 0.3.0", @@ -5204,8 +5882,8 @@ dependencies = [ "bs58 0.4.0", "chrono", "crc32fast", - "derive_more 0.99.18", - "getrandom", + "derive_more 0.99.20", + "getrandom 0.2.16", "hex", "itertools 0.10.5", "kimchi", @@ -5222,18 +5900,18 @@ dependencies = [ "openmina-core", "poly-commitment", "postcard", - "rand", + "rand 0.8.5", "rand_pcg", "rand_seeder", "rayon", "serde", "serde_json", - "serde_with 3.11.0", - "sha2 0.10.8", + "serde_with 3.15.1", + "sha2 0.10.9", "static_assertions", - "thiserror", + "thiserror 1.0.69", "tuple-map", - "uuid 1.11.0", + "uuid 1.18.1", "wasm-bindgen", "wasm_thread", ] @@ -5241,12 +5919,12 @@ dependencies = [ [[package]] name = "mina_bridge_core" version = "0.1.0" -source = "git+https://github.com/lambdaclass/mina_bridge.git?rev=a4498abb345d68dbb699ff38ef698800879231f8#a4498abb345d68dbb699ff38ef698800879231f8" +source = "git+https://github.com/lambdaclass/mina_bridge?rev=82830aff612217da11502cfaae0f1fc49083b28d#82830aff612217da11502cfaae0f1fc49083b28d" dependencies = [ - "aligned-sdk 0.1.0 (git+https://github.com/lambdaclass/aligned_layer.git?rev=cebeee7b86de0fcd3fd6f97bcd8a1096d7708bc5)", + "aligned-sdk 0.1.0 (git+https://github.com/lambdaclass/aligned_layer.git?rev=220546afa12c035a508529224f5148cd6af4ca78)", "alloy", "alloy-contract", - "alloy-sol-types 0.8.9", + "alloy-sol-types", "ark-ec 0.3.0", "ark-ff 0.3.0", "ark-poly 0.3.0", @@ -5275,7 +5953,7 @@ dependencies = [ "rpassword", "serde", "serde_json", - "serde_with 3.11.0", + "serde_with 3.15.1", "sha3", "tokio", "zeroize", @@ -5289,23 +5967,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ - "hermit-abi", "libc", "wasi", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5338,7 +6016,7 @@ dependencies = [ "core2", "digest 0.10.7", "multihash-derive", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", "unsigned-varint", ] @@ -5354,14 +6032,14 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -5369,7 +6047,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -5380,6 +6058,24 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "no_std_strings" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" + [[package]] name = "nohash-hasher" version = "0.2.0" @@ -5407,12 +6103,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -5448,10 +6143,27 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand", + "rand 0.8.5", "serde", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -5536,9 +6248,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -5555,11 +6267,12 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ - "num_enum_derive 0.7.3", + "num_enum_derive 0.7.5", + "rustversion", ] [[package]] @@ -5576,23 +6289,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.82", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", + "syn 2.0.108", ] [[package]] @@ -5615,13 +6319,13 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", "serde_with 1.14.0", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -5638,13 +6342,13 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", - "serde_with 3.11.0", - "sha2 0.10.8", - "thiserror", + "serde_with 3.15.1", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -5656,20 +6360,41 @@ dependencies = [ "malloc_buf", ] +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + [[package]] name = "object" -version = "0.36.5" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "opaque-debug" @@ -5705,7 +6430,7 @@ dependencies = [ [[package]] name = "openmina-core" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "ark-ff 0.3.0", "binprot", @@ -5719,7 +6444,7 @@ dependencies = [ "openmina-macros", "redux", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "slab", "time", "tokio", @@ -5729,20 +6454,20 @@ dependencies = [ [[package]] name = "openmina-macros" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5759,20 +6484,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", @@ -5788,15 +6513,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "outref" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" - -[[package]] -name = "overload" -version = "0.1.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "p256" @@ -5806,14 +6525,26 @@ checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" dependencies = [ "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.8", + "sha2 0.10.9", +] + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder", + "sha2 0.10.9", ] [[package]] name = "p3-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066f571b2e645505ed5972dd0e1e252ba03352150830c9566769ca711c0f1e9b" +checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" dependencies = [ "p3-field", "p3-matrix", @@ -5821,49 +6552,39 @@ dependencies = [ [[package]] name = "p3-baby-bear" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff00f571044d299310d9659c6e51c98422de3bf94b8577f7f30cf59cf2043e40" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" dependencies = [ "num-bigint 0.4.6", "p3-field", "p3-mds", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] -[[package]] -name = "p3-blake3" -version = "0.1.4-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4cb69ae54a279bbbd477566d1bdb71aa879b528fd658d0fcfc36f54b00217c" -dependencies = [ - "blake3", - "p3-symmetric", -] - [[package]] name = "p3-bn254-fr" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf19917f986d45e9abb6d177e875824ced6eed096480d574fce16f2c45c721ea" +checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" dependencies = [ - "ff 0.13.0", + "ff 0.13.1", "num-bigint 0.4.6", "p3-field", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-challenger" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be7e4fbce4566a93091107eadfafa0b5374bd1ffd3e0f6b850da3ff72eb183f" +checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" dependencies = [ "p3-field", "p3-maybe-rayon", @@ -5875,13 +6596,12 @@ dependencies = [ [[package]] name = "p3-commit" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a03eb0f99d68a712c41e658e9a7782a0705d4ffcfb6232a43bd3f1ef9591002" +checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" dependencies = [ "itertools 0.12.1", "p3-challenger", - "p3-dft", "p3-field", "p3-matrix", "p3-util", @@ -5890,9 +6610,9 @@ dependencies = [ [[package]] name = "p3-dft" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1556de968523fbe5d804ab50600ea306fcceea3500cfd7601e40882480524664" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" dependencies = [ "p3-field", "p3-matrix", @@ -5903,23 +6623,23 @@ dependencies = [ [[package]] name = "p3-field" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec2af6e1ac47a2035af5165e668d64612c4b9ccabd06df37fc1fd381fdf8a71" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" dependencies = [ "itertools 0.12.1", "num-bigint 0.4.6", "num-traits", "p3-util", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-fri" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f351ee9f9d4256455164565cd91e3e6d2487cc2a5355515fa2b6d479269188dd" +checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" dependencies = [ "itertools 0.12.1", "p3-challenger", @@ -5936,9 +6656,9 @@ dependencies = [ [[package]] name = "p3-interpolation" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24d0f2907a374ebe4545fcff3120d6376d9630cf0bef30feedcfc5908ea2c37" +checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" dependencies = [ "p3-field", "p3-matrix", @@ -5947,9 +6667,9 @@ dependencies = [ [[package]] name = "p3-keccak-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e66badd47cedf6570e91a0cabc389b80dfd53ba1a6e9a45a3923fd54b86122ff" +checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" dependencies = [ "p3-air", "p3-field", @@ -5961,33 +6681,33 @@ dependencies = [ [[package]] name = "p3-matrix" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa272f3ae77ed8d73478aa7c89e712efb15bda3ff4aff10fadfe11a012cd5389" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" dependencies = [ "itertools 0.12.1", "p3-field", "p3-maybe-rayon", "p3-util", - "rand", + "rand 0.8.5", "serde", "tracing", ] [[package]] name = "p3-maybe-rayon" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eecad6292021858f282d643d9d1284ab112a200494d589863a9c4080e578ef0" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" dependencies = [ "rayon", ] [[package]] name = "p3-mds" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716c4dbe68a02f1541eb09149d07b8663a3a5951b1864a31cd67ff3bb0826e57" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" dependencies = [ "itertools 0.12.1", "p3-dft", @@ -5995,14 +6715,14 @@ dependencies = [ "p3-matrix", "p3-symmetric", "p3-util", - "rand", + "rand 0.8.5", ] [[package]] name = "p3-merkle-tree" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7ebab52a03c26025988663a135aed62f5084a2e2ea262176dc8748efb593e5" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" dependencies = [ "itertools 0.12.1", "p3-commit", @@ -6017,23 +6737,23 @@ dependencies = [ [[package]] name = "p3-poseidon2" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c042efa15beab7a8c4d0ca9b9e4cbda7582be0c08e121e830fec45f082935b" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" dependencies = [ "gcd", "p3-field", "p3-mds", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-symmetric" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9896a831f5b688adc13f6fbe1dcf66ecfaa4622a500f81aa745610e777acb72" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" dependencies = [ "itertools 0.12.1", "p3-field", @@ -6042,9 +6762,9 @@ dependencies = [ [[package]] name = "p3-uni-stark" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437ebcd060c8a5479898030b114a93da8a86eb4c2e5f313d9eeaaf40c6e6f61" +checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" dependencies = [ "itertools 0.12.1", "p3-air", @@ -6061,9 +6781,9 @@ dependencies = [ [[package]] name = "p3-util" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dedb9d27ba47ac314c6fac4ca54e55c3e486c864d51ec5ba55dbe47b75121157" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" dependencies = [ "serde", ] @@ -6079,28 +6799,30 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] @@ -6116,12 +6838,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.12", ] [[package]] @@ -6140,15 +6862,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -6158,7 +6880,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -6172,7 +6894,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -6184,10 +6906,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" dependencies = [ "blake2b_simd", - "ff 0.13.0", + "ff 0.13.1", "group 0.13.0", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -6204,6 +6926,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pbkdf2" version = "0.11.0" @@ -6213,7 +6941,7 @@ dependencies = [ "digest 0.10.7", "hmac", "password-hash", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -6235,20 +6963,28 @@ dependencies = [ "base64 0.13.1", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.7.14" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror", "ucd-trie", ] @@ -6259,7 +6995,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.12.0", ] [[package]] @@ -6274,80 +7010,71 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", - "rand", + "phf_shared", + "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared 0.11.2", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.82", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", + "syn 2.0.108", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -6355,6 +7082,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der 0.7.10", + "pkcs8 0.10.2", + "spki 0.7.3", +] + [[package]] name = "pkcs8" version = "0.9.0" @@ -6371,15 +7109,15 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.9", + "der 0.7.10", "spki 0.7.3", ] [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "poly-commitment" @@ -6397,25 +7135,34 @@ dependencies = [ "mina-poseidon", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", "serde_with 1.14.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] [[package]] name = "postcard" -version = "1.0.10" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -6424,6 +7171,15 @@ dependencies = [ "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -6432,9 +7188,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] @@ -6447,12 +7203,21 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.24" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910d41a655dac3b764f1ade94821093d3610248694320cd072303a8eedcf221d" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.82", + "syn 2.0.108", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve 0.13.8", ] [[package]] @@ -6471,13 +7236,13 @@ dependencies = [ [[package]] name = "priority-queue" -version = "2.1.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714c75db297bc88a63783ffc6ab9f830698a6705aa0201416931759ef4c8183d" +checksum = "93980406f12d9f8140ed5abe7155acb10bb1e69ea55c88960b9c2f117445ef96" dependencies = [ - "autocfg", "equivalent", - "indexmap 2.6.0", + "indexmap 2.12.0", + "serde", ] [[package]] @@ -6486,17 +7251,17 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "thiserror", + "thiserror 1.0.69", "toml 0.5.11", ] [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.7", ] [[package]] @@ -6542,29 +7307,42 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "version_check", + "yansi 1.0.1", +] + [[package]] name = "procfs" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "hex", "lazy_static", "procfs-core", - "rustix", + "rustix 0.38.44", ] [[package]] @@ -6573,7 +7351,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "hex", ] @@ -6588,27 +7366,26 @@ dependencies = [ "lazy_static", "libc", "memchr", - "parking_lot 0.12.3", + "parking_lot 0.12.5", "procfs", "protobuf", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.10.0", "num-traits", - "rand", - "rand_chacha", + "rand 0.9.2", + "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax 0.8.5", + "regex-syntax", "rusty-fork", "tempfile", "unarray", @@ -6616,9 +7393,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -6626,15 +7403,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -6651,61 +7428,74 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", - "rustls 0.23.15", - "socket2", - "thiserror", + "rustc-hash 2.1.1", + "rustls 0.23.34", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "rand", - "ring 0.17.8", - "rustc-hash 2.0.0", - "rustls 0.23.15", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring 0.17.14", + "rustc-hash 2.1.1", + "rustls 0.23.34", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.17", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ + "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.6.1", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -6719,8 +7509,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", "serde", ] @@ -6731,7 +7532,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -6740,7 +7551,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", + "serde", ] [[package]] @@ -6749,7 +7570,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -6758,23 +7579,35 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core", + "rand_core 0.9.3", +] + +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", ] [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -6782,9 +7615,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -6816,11 +7649,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", ] [[package]] @@ -6829,9 +7662,20 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 2.0.17", ] [[package]] @@ -6847,54 +7691,59 @@ dependencies = [ ] [[package]] -name = "regex" -version = "1.11.0" +name = "ref-cast" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", + "ref-cast-impl", ] [[package]] -name = "regex-automata" -version = "0.1.10" +name = "ref-cast-impl" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ - "regex-syntax 0.6.29", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] -name = "regex-automata" -version = "0.4.8" +name = "regex" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] -name = "regex-lite" -version = "0.1.6" +name = "regex-automata" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] [[package]] -name = "regex-syntax" -version = "0.6.29" +name = "regex-lite" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "reqwest" @@ -6907,10 +7756,10 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.26", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-rustls 0.24.2", "hyper-tls 0.5.0", "ipnet", @@ -6942,9 +7791,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -6952,43 +7801,40 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.6", - "http 1.1.0", + "h2 0.4.12", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.5.0", - "hyper-rustls 0.27.3", + "hyper 1.7.0", + "hyper-rustls 0.27.7", "hyper-tls 0.6.0", "hyper-util", - "ipnet", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.15", - "rustls-pemfile 2.2.0", + "rustls 0.23.34", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", - "system-configuration 0.6.1", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.4", "tokio-util", + "tower 0.5.2", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.26.6", - "windows-registry", + "webpki-roots 1.0.3", ] [[package]] @@ -6999,10 +7845,10 @@ checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" dependencies = [ "anyhow", "async-trait", - "http 1.1.0", - "reqwest 0.12.8", + "http 1.3.1", + "reqwest 0.12.24", "serde", - "thiserror", + "thiserror 1.0.69", "tower-service", ] @@ -7044,15 +7890,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -7068,40 +7913,67 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "borsh", + "bytemuck", + "derive_more 2.0.1", "elf", + "lazy_static", + "postcard", + "rand 0.9.2", "risc0-zkp", "risc0-zkvm-platform", + "ruint", + "semver 1.0.27", "serde", "tracing", ] [[package]] name = "risc0-build" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", - "cargo_metadata", - "dirs", + "cargo_metadata 0.19.2", + "derive_builder", + "dirs 6.0.0", "docker-generate", "hex", "risc0-binfmt", + "risc0-zkos-v1compat", "risc0-zkp", "risc0-zkvm-platform", + "rzup", + "semver 1.0.27", "serde", "serde_json", + "stability", "tempfile", ] +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-zkp", + "tracing", +] + [[package]] name = "risc0-circuit-recursion" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "bytemuck", @@ -7114,38 +7986,41 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", - "metal", + "bit-vec 0.8.0", + "bytemuck", + "derive_more 2.0.1", + "paste", "risc0-binfmt", "risc0-core", "risc0-zkp", - "risc0-zkvm-platform", "serde", "tracing", ] [[package]] name = "risc0-core" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", - "rand_core", + "rand_core 0.9.3", ] [[package]] name = "risc0-groth16" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "ark-bn254", - "ark-ec 0.4.2", + "ark-ec 0.5.0", + "ark-ff 0.5.0", "ark-groth16", - "ark-serialize 0.4.2", + "ark-serialize 0.5.0", "bytemuck", "hex", "num-bigint 0.4.6", @@ -7155,10 +8030,20 @@ dependencies = [ "serde", ] +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform", +] + [[package]] name = "risc0-zkp" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "blake2", @@ -7170,18 +8055,19 @@ dependencies = [ "hex-literal", "metal", "paste", - "rand_core", + "rand_core 0.9.3", "risc0-core", "risc0-zkvm-platform", "serde", - "sha2 0.10.8", + "sha2 0.10.9", + "stability", "tracing", ] [[package]] name = "risc0-zkvm" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "bincode", @@ -7189,22 +8075,25 @@ dependencies = [ "borsh", "bytemuck", "bytes", - "getrandom", + "derive_more 2.0.1", "hex", "lazy-regex", "prost", "risc0-binfmt", "risc0-build", + "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", "risc0-core", "risc0-groth16", + "risc0-zkos-v1compat", "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.23", + "rzup", + "semver 1.0.27", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "stability", "tempfile", "tracing", @@ -7212,12 +8101,16 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", - "getrandom", + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.4", "libm", + "num_enum 0.7.5", + "paste", "stability", ] @@ -7267,13 +8160,13 @@ dependencies = [ [[package]] name = "rpassword" -version = "7.3.1" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -7297,6 +8190,26 @@ dependencies = [ "paste", ] +[[package]] +name = "rsa" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "signature 2.2.0", + "spki 0.7.3", + "subtle", + "zeroize", +] + [[package]] name = "rsexp" version = "0.2.3" @@ -7305,34 +8218,39 @@ checksum = "c3df9a9b6491d42c0fc527e92a87525c17e45c6b9c22345702a6dc0400320bf1" [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "ruint" -version = "1.12.3" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", + "borsh", "bytes", - "fastrlp", + "fastrlp 0.3.1", + "fastrlp 0.4.0", "num-bigint 0.4.6", + "num-integer", "num-traits", "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", + "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -7345,9 +8263,9 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -7357,9 +8275,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -7382,20 +8300,33 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.27", ] [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] @@ -7405,21 +8336,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring 0.17.14", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" dependencies = [ + "aws-lc-rs", + "log", "once_cell", - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -7433,7 +8366,19 @@ dependencies = [ "openssl-probe", "rustls-pemfile 1.0.4", "schannel", - "security-framework", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.5.1", ] [[package]] @@ -7456,9 +8401,13 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +dependencies = [ + "web-time", + "zeroize", +] [[package]] name = "rustls-webpki" @@ -7466,32 +8415,33 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ - "ring 0.17.8", + "aws-lc-rs", + "ring 0.17.14", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -7501,9 +8451,27 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "rzup" +version = "0.5.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "hex", + "rsa", + "semver 1.0.27", + "serde", + "serde_with 3.15.1", + "sha2 0.10.9", + "strum 0.27.2", + "tempfile", + "thiserror 2.0.17", + "toml 0.8.23", + "yaml-rust2", +] [[package]] name = "salsa20" @@ -7525,44 +8493,68 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", - "derive_more 0.99.18", + "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", ] [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] name = "scc" -version = "2.2.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c1f7fc6deb21665a9060dfc7d271be784669295a31babdcd4dd2c79ae8cbfb" +checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", ] [[package]] @@ -7586,7 +8578,7 @@ dependencies = [ "hmac", "pbkdf2 0.11.0", "salsa20", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -7595,15 +8587,15 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "sdd" -version = "3.0.4" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" +checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" [[package]] name = "sec1" @@ -7613,7 +8605,7 @@ checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ "base16ct 0.1.1", "der 0.6.1", - "generic-array 0.14.7", + "generic-array 0.14.9", "pkcs8 0.9.0", "subtle", "zeroize", @@ -7626,9 +8618,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct 0.2.0", - "der 0.7.9", - "generic-array 0.14.7", + "der 0.7.10", + "generic-array 0.14.9", "pkcs8 0.10.2", + "serdect", "subtle", "zeroize", ] @@ -7639,8 +8632,21 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", - "core-foundation", + "bitflags 2.10.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -7648,9 +8654,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -7667,18 +8673,19 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "semver-parser" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" dependencies = [ "pest", ] @@ -7697,62 +8704,84 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] [[package]] -name = "serde_derive" -version = "1.0.210" +name = "serde_bytes" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.82", + "serde", + "serde_core", ] [[package]] -name = "serde_json" -version = "1.0.132" +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", + "serde_derive", ] [[package]] -name = "serde_path_to_error" -version = "0.1.16" +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -7781,19 +8810,20 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.6.0", - "serde", - "serde_derive", + "indexmap 2.12.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde_core", "serde_json", - "serde_with_macros 3.11.0", + "serde_with_macros 3.15.1", "time", ] @@ -7811,14 +8841,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ - "darling 0.20.10", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -7827,36 +8857,46 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.12.0", "itoa", "ryu", "serde", "unsafe-libyaml", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct 0.2.0", + "serde", +] + [[package]] name = "serial_test" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" dependencies = [ "futures", "log", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.5", "scc", "serial_test_derive", ] [[package]] name = "serial_test_derive" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -7885,9 +8925,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -7937,9 +8977,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -7951,7 +8991,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -7961,26 +9001,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror", + "thiserror 2.0.17", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "size" @@ -7990,19 +9036,18 @@ checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" dependencies = [ - "autocfg", "serde", ] [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "snowbridge-amcl" @@ -8016,14 +9061,24 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "solang-parser" version = "0.3.3" @@ -8034,37 +9089,55 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] +[[package]] +name = "sp1-build" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "anyhow", + "cargo_metadata 0.18.1", + "chrono", + "clap", + "dirs 5.0.1", + "sp1-prover", +] + [[package]] name = "sp1-core-executor" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", "bytemuck", + "clap", "elf", "enum-map", "eyre", "hashbrown 0.14.5", "hex", "itertools 0.13.0", - "log", "nohash-hasher", "num", + "p3-baby-bear", "p3-field", "p3-maybe-rayon", - "rand", + "p3-util", + "rand 0.8.5", + "range-set-blaze", "rrs-succinct", "serde", + "serde_json", "sp1-curves", "sp1-primitives", "sp1-stark", "strum 0.26.3", "strum_macros 0.26.4", - "thiserror", + "subenum", + "thiserror 1.0.69", "tiny-keccak", "tracing", "typenum", @@ -8073,32 +9146,40 @@ dependencies = [ [[package]] name = "sp1-core-machine" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "cbindgen", + "cc", "cfg-if", "elliptic-curve 0.13.8", "generic-array 1.1.0", + "glob", "hashbrown 0.14.5", "hex", "itertools 0.13.0", "k256", - "log", "num", "num_cpus", + "p256 0.13.2", "p3-air", "p3-baby-bear", - "p3-blake3", "p3-challenger", "p3-field", "p3-keccak-air", "p3-matrix", "p3-maybe-rayon", + "p3-poseidon2", + "p3-symmetric", "p3-uni-stark", "p3-util", - "rand", + "pathdiff", + "rand 0.8.5", + "rayon", + "rayon-scan", "serde", + "serde_json", "size", "snowbridge-amcl", "sp1-core-executor", @@ -8110,27 +9191,43 @@ dependencies = [ "strum 0.26.3", "strum_macros 0.26.4", "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", "tracing-forest", - "tracing-subscriber 0.3.18", + "tracing-subscriber 0.3.20", "typenum", "web-time", ] +[[package]] +name = "sp1-cuda" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + [[package]] name = "sp1-curves" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "cfg-if", - "curve25519-dalek", "dashu", "elliptic-curve 0.13.8", "generic-array 1.1.0", "itertools 0.13.0", "k256", "num", + "p256 0.13.2", "p3-field", "serde", "snowbridge-amcl", @@ -8141,8 +9238,8 @@ dependencies = [ [[package]] name = "sp1-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -8150,10 +9247,12 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "blake3", + "cfg-if", "hex", "lazy_static", "num-bigint 0.4.6", @@ -8162,21 +9261,24 @@ dependencies = [ "p3-poseidon2", "p3-symmetric", "serde", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] name = "sp1-prover" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.1" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", "clap", - "dirs", + "dirs 5.0.1", + "downloader", + "enum-map", "eyre", + "hashbrown 0.14.5", + "hex", "itertools 0.13.0", - "lazy_static", "lru", "num-bigint 0.4.6", "p3-baby-bear", @@ -8186,11 +9288,12 @@ dependencies = [ "p3-field", "p3-matrix", "p3-symmetric", + "p3-util", "rayon", - "reqwest 0.11.27", "serde", "serde_json", "serial_test", + "sha2 0.10.9", "sp1-core-executor", "sp1-core-machine", "sp1-primitives", @@ -8199,17 +9302,16 @@ dependencies = [ "sp1-recursion-core", "sp1-recursion-gnark-ffi", "sp1-stark", - "subtle-encoding", - "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", - "tracing-subscriber 0.3.18", + "tracing-appender", + "tracing-subscriber 0.3.20", ] [[package]] name = "sp1-recursion-circuit" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", @@ -8224,8 +9326,9 @@ dependencies = [ "p3-fri", "p3-matrix", "p3-symmetric", + "p3-uni-stark", "p3-util", - "rand", + "rand 0.8.5", "rayon", "serde", "sp1-core-executor", @@ -8241,8 +9344,8 @@ dependencies = [ [[package]] name = "sp1-recursion-compiler" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", "itertools 0.13.0", @@ -8262,13 +9365,18 @@ dependencies = [ [[package]] name = "sp1-recursion-core" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", - "ff 0.13.0", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", "hashbrown 0.14.5", "itertools 0.13.0", + "num_cpus", "p3-air", "p3-baby-bear", "p3-bn254-fr", @@ -8283,13 +9391,15 @@ dependencies = [ "p3-poseidon2", "p3-symmetric", "p3-util", + "pathdiff", + "rand 0.8.5", "serde", "sp1-core-machine", "sp1-derive", "sp1-primitives", "sp1-stark", "static_assertions", - "thiserror", + "thiserror 1.0.69", "tracing", "vec_map", "zkhash", @@ -8297,8 +9407,8 @@ dependencies = [ [[package]] name = "sp1-recursion-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -8306,78 +9416,82 @@ dependencies = [ [[package]] name = "sp1-recursion-gnark-ffi" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", - "bindgen", + "bindgen 0.70.1", "cc", "cfg-if", "hex", - "log", "num-bigint 0.4.6", "p3-baby-bear", "p3-field", "p3-symmetric", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.10.9", "sp1-core-machine", "sp1-recursion-compiler", "sp1-stark", "tempfile", + "tracing", ] [[package]] name = "sp1-sdk" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.2" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ - "alloy-sol-types 0.7.7", + "alloy-primitives 1.4.1", "anyhow", "async-trait", + "backoff", "bincode", "cfg-if", - "dirs", - "ethers", + "dirs 5.0.1", + "eventsource-stream", "futures", "hashbrown 0.14.5", "hex", "indicatif", "itertools 0.13.0", - "log", + "k256", "p3-baby-bear", "p3-field", "p3-fri", "prost", - "reqwest 0.12.8", + "reqwest 0.12.24", "reqwest-middleware", "serde", + "serde_json", + "sp1-build", "sp1-core-executor", "sp1-core-machine", + "sp1-cuda", "sp1-primitives", "sp1-prover", "sp1-stark", "strum 0.26.3", "strum_macros 0.26.4", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", + "tonic", "tracing", "twirp-rs", - "vergen", ] [[package]] name = "sp1-stark" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "arrayref", - "getrandom", "hashbrown 0.14.5", "itertools 0.13.0", + "num-bigint 0.4.6", "num-traits", "p3-air", "p3-baby-bear", @@ -8400,7 +9514,6 @@ dependencies = [ "strum 0.26.3", "strum_macros 0.26.4", "sysinfo", - "thiserror", "tracing", ] @@ -8436,7 +9549,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der 0.7.9", + "der 0.7.10", ] [[package]] @@ -8446,14 +9559,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -8463,14 +9576,13 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.3", - "phf_shared 0.10.0", + "parking_lot 0.12.5", + "phf_shared", "precomputed-hash", ] @@ -8501,6 +9613,15 @@ dependencies = [ "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + [[package]] name = "strum_macros" version = "0.24.3" @@ -8524,40 +9645,55 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "strum_macros" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.108", +] [[package]] -name = "subtle-encoding" -version = "0.5.1" +name = "subenum" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +checksum = "ec3d08fe7078c57309d5c3d938e50eba95ba1d33b9c3a101a8465fc6861a5416" dependencies = [ - "zeroize", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.108", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "svm-rs" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" dependencies = [ - "dirs", + "dirs 5.0.1", "fs2", "hex", "once_cell", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", "url", "zip", ] @@ -8575,9 +9711,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" dependencies = [ "proc-macro2", "quote", @@ -8586,26 +9722,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.82", -] - -[[package]] -name = "syn-solidity" -version = "0.8.9" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5e0c2ea8db64b2898b62ea2fbd60204ca95e0b2c6bdf53ff768bbe916fbe4d" +checksum = "ab4e6eed052a117409a1a744c8bda9c3ea6934597cf7419f791cb7d590871c4c" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -8616,9 +9740,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -8635,6 +9759,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "sysinfo" version = "0.30.13" @@ -8657,7 +9792,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys 0.5.0", ] @@ -8667,8 +9802,8 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.6.0", - "core-foundation", + "bitflags 2.10.0", + "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -8719,15 +9854,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.13.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.4", "once_cell", - "rustix", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -8743,32 +9878,51 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -8782,15 +9936,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -8799,15 +9951,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -8822,11 +9974,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -8839,31 +10001,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", "libc", "mio", - "parking_lot 0.12.3", + "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] @@ -8888,20 +10049,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.15", - "rustls-pki-types", + "rustls 0.23.34", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -8945,13 +10105,13 @@ dependencies = [ "futures-util", "log", "native-tls", - "rustls 0.23.15", + "rustls 0.23.34", "rustls-pki-types", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.4", "tungstenite 0.23.0", - "webpki-roots 0.26.6", + "webpki-roots 0.26.11", ] [[package]] @@ -8963,20 +10123,20 @@ dependencies = [ "futures-util", "log", "native-tls", - "rustls 0.23.15", + "rustls 0.23.34", "rustls-pki-types", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.4", "tungstenite 0.24.0", - "webpki-roots 0.26.6", + "webpki-roots 0.26.11", ] [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -8996,108 +10156,214 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.12.0", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", + "toml_write", "winnow", ] [[package]] -name = "tower" -version = "0.4.13" +name = "toml_edit" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", + "indexmap 2.12.0", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", ] [[package]] -name = "tower" -version = "0.5.1" +name = "toml_parser" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 0.1.2", - "tower-layer", - "tower-service", + "winnow", ] [[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" +name = "toml_write" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] -name = "tracing" -version = "0.1.40" +name = "tonic" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs 0.8.2", + "rustls-pemfile 2.2.0", + "socket2 0.5.10", + "tokio", + "tokio-rustls 0.26.4", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.10.0", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber 0.3.20", +] [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -9111,9 +10377,9 @@ checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" dependencies = [ "ansi_term", "smallvec", - "thiserror", + "thiserror 1.0.69", "tracing", - "tracing-subscriber 0.3.18", + "tracing-subscriber 0.3.20", ] [[package]] @@ -9148,14 +10414,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -9182,10 +10448,10 @@ dependencies = [ "http 0.2.12", "httparse", "log", - "rand", + "rand 0.8.5", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -9199,12 +10465,12 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.3.1", "httparse", "log", - "rand", + "rand 0.8.5", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -9218,15 +10484,15 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.3.1", "httparse", "log", "native-tls", - "rand", - "rustls 0.23.15", + "rand 0.8.5", + "rustls 0.23.34", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -9239,15 +10505,15 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.3.1", "httparse", "log", "native-tls", - "rand", - "rustls 0.23.15", + "rand 0.8.5", + "rustls 0.23.34", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -9276,24 +10542,24 @@ dependencies = [ "async-trait", "axum", "futures", - "http 1.1.0", + "http 1.3.1", "http-body-util", - "hyper 1.5.0", + "hyper 1.7.0", "prost", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", - "tower 0.5.1", + "tower 0.5.2", "url", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -9321,36 +10587,21 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" - -[[package]] -name = "unicode-bidi" -version = "0.3.17" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-width" -version = "0.1.14" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -9358,15 +10609,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - [[package]] name = "unsafe-libyaml" version = "0.2.11" @@ -9393,13 +10635,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -9414,6 +10657,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -9426,24 +10675,26 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.16", "serde", ] [[package]] name = "uuid" -version = "1.11.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom", + "getrandom 0.3.4", + "js-sys", + "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -9460,31 +10711,12 @@ dependencies = [ "serde", ] -[[package]] -name = "vergen" -version = "8.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" -dependencies = [ - "anyhow", - "cfg-if", - "git2", - "rustversion", - "time", -] - [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "vsimd" version = "0.8.0" @@ -9493,9 +10725,9 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -9530,7 +10762,7 @@ dependencies = [ "futures-util", "headers", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.32", "log", "mime", "mime_guess", @@ -9550,53 +10782,50 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasm-bindgen" -version = "0.2.95" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.95" +name = "wasm-bindgen" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "bumpalo", - "log", + "cfg-if", "once_cell", - "proc-macro2", - "quote", - "syn 2.0.82", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9604,28 +10833,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.82", - "wasm-bindgen-backend", + "syn 2.0.108", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -9663,9 +10895,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -9689,18 +10921,27 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.3", +] + +[[package]] +name = "webpki-roots" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] [[package]] name = "widestring" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -9720,11 +10961,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -9739,7 +10980,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core", + "windows-core 0.52.0", "windows-targets 0.52.6", ] @@ -9752,34 +10993,98 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -9809,6 +11114,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -9833,13 +11156,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -9852,6 +11192,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -9864,6 +11210,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -9876,12 +11228,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -9894,6 +11258,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -9906,6 +11276,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -9918,6 +11294,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -9930,11 +11312,17 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -9949,11 +11337,23 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + [[package]] name = "ws_stream_wasm" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" dependencies = [ "async_io_stream", "futures", @@ -9962,7 +11362,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper 0.6.0", - "thiserror", + "thiserror 2.0.17", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -9983,38 +11383,98 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "yaml-rust2" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + [[package]] name = "yansi" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure 0.13.2", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", + "synstructure 0.13.2", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -10027,7 +11487,40 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.108", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -10070,9 +11563,9 @@ dependencies = [ "jubjub", "lazy_static", "pasta_curves 0.5.1", - "rand", + "rand 0.8.5", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", "subtle", ] @@ -10098,9 +11591,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/batcher/Cargo.toml b/crates/Cargo.toml similarity index 93% rename from batcher/Cargo.toml rename to crates/Cargo.toml index 55aa358c19..c75c16ef90 100644 --- a/batcher/Cargo.toml +++ b/crates/Cargo.toml @@ -1,6 +1,6 @@ [workspace] -members = ["aligned-batcher", "aligned-sdk", "aligned", "aligned-task-sender"] resolver = "2" +members = ["./batcher", "./sdk", "./cli", "./task-sender"] [patch.crates-io] ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } diff --git a/crates/batcher/.env.dev b/crates/batcher/.env.dev new file mode 100644 index 0000000000..f03eb7677c --- /dev/null +++ b/crates/batcher/.env.dev @@ -0,0 +1,18 @@ +# Main S3 bucket configuration +AWS_SECRET_ACCESS_KEY=test +AWS_REGION=us-east-2 +AWS_ACCESS_KEY_ID=test +AWS_BUCKET_NAME=aligned.storage +UPLOAD_ENDPOINT=http://localhost:4566 +DOWNLOAD_ENDPOINT=http://localhost:4566/aligned.storage + +# Secondary S3 bucket configuration +AWS_SECRET_ACCESS_KEY_SECONDARY=test2 +AWS_REGION_SECONDARY=us-west-1 +AWS_ACCESS_KEY_ID_SECONDARY=test2 +AWS_BUCKET_NAME_SECONDARY=aligned.storage +UPLOAD_ENDPOINT_SECONDARY=http://localhost:4567 +DOWNLOAD_ENDPOINT_SECONDARY=http://localhost:4567/aligned.storage + +RUST_LOG=info +RUST_BACKTRACE=1 diff --git a/crates/batcher/.env.docker b/crates/batcher/.env.docker new file mode 100644 index 0000000000..d3b6b4e559 --- /dev/null +++ b/crates/batcher/.env.docker @@ -0,0 +1,18 @@ +# Main S3 bucket configuration +AWS_SECRET_ACCESS_KEY=test +AWS_REGION=us-east-2 +AWS_ACCESS_KEY_ID=test +AWS_BUCKET_NAME=aligned.storage +UPLOAD_ENDPOINT=http://localstack:4566 +DOWNLOAD_ENDPOINT=http://localstack:4566/aligned.storage + +# Secondary S3 bucket configuration +AWS_SECRET_ACCESS_KEY_SECONDARY=test2 +AWS_REGION_SECONDARY=us-west-1 +AWS_ACCESS_KEY_ID_SECONDARY=test2 +AWS_BUCKET_NAME_SECONDARY=aligned.storage +UPLOAD_ENDPOINT_SECONDARY=http://localstack2:4567 +DOWNLOAD_ENDPOINT_SECONDARY=http://localstack2:4567/aligned.storage + +RUST_LOG=info +RUST_BACKTRACE=1 diff --git a/crates/batcher/.env.example b/crates/batcher/.env.example new file mode 100644 index 0000000000..5cc4c00fa2 --- /dev/null +++ b/crates/batcher/.env.example @@ -0,0 +1,17 @@ +# Main S3 bucket configuration +AWS_SECRET_ACCESS_KEY= +AWS_REGION= +AWS_ACCESS_KEY_ID= +AWS_BUCKET_NAME= +UPLOAD_ENDPOINT= +DOWNLOAD_ENDPOINT= + +# Secondary S3 bucket configuration +AWS_SECRET_ACCESS_KEY_SECONDARY= +AWS_REGION_SECONDARY= +AWS_ACCESS_KEY_ID_SECONDARY= +AWS_BUCKET_NAME_SECONDARY= +UPLOAD_ENDPOINT_SECONDARY= +DOWNLOAD_ENDPOINT_SECONDARY= + +RUST_LOG= # info, debug, error, warn, etc. diff --git a/crates/batcher/Cargo.toml b/crates/batcher/Cargo.toml new file mode 100644 index 0000000000..5d655ae26a --- /dev/null +++ b/crates/batcher/Cargo.toml @@ -0,0 +1,53 @@ +[package] +name = "aligned-batcher" +version = "0.1.0" +edition = "2021" + +[dependencies] +tokio-tungstenite = "0.21.0" +futures-util = "0.3.30" +tokio = { version = "1.45.1", features = ["rt", "rt-multi-thread", "macros"] } +log = "0.4.21" +env_logger = "0.11.3" +serde_json = "1.0.117" +serde = { version = "1.0.201", features = ["derive"] } +clap = { version = "4.5.4", features = ["derive"] } +sha3 = "0.10.8" +aws-config = "1.4.0" +aws-sdk-s3 = "1.29.0" +bytes = "1.7.1" +hex = "0.4.3" +dotenvy = "0.15.0" +anyhow = "1.0.83" +ethers = { version = "2.0", features = ["ws", "rustls"] } +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"] } +serde_yaml = "0.9.34" +sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } +risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v3.0.3" } +bincode = "1.3.3" +lazy_static = "1.4.0" +aligned-sdk = { path = "../sdk" } +ciborium = "=0.2.2" +base64 = "0.22.1" +bs58 = "0.5.1" +priority-queue = "2.1.0" +mina-state-verifier-ffi = { path = "../../operator/mina/lib" } +mina-account-verifier-ffi = { path = "../../operator/mina_account/lib" } +reqwest = { version = "0.12", features = ["json"] } + +once_cell = "1.20.2" +warp = "0.3.7" +prometheus = { version = "0.13.4", features = ["process"] } +backon = "1.2.0" + +[patch.crates-io] +ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-ec = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-poly = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-serialize = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } + +[patch.'https://github.com/openmina/algebra'] +ark-ff = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-ec = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-poly = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } +ark-serialize = { git = "https://github.com/lambdaclass/openmina_algebra", rev = "017531e7aaa15a2c856532b0843876e371b01122" } diff --git a/batcher/aligned-batcher/build.rs b/crates/batcher/build.rs similarity index 70% rename from batcher/aligned-batcher/build.rs rename to crates/batcher/build.rs index 2af5b138b9..3e6267b85a 100644 --- a/batcher/aligned-batcher/build.rs +++ b/crates/batcher/build.rs @@ -1,11 +1,21 @@ use std::{env, path::PathBuf, process::Command}; -const GO_SRC: &str = "./gnark/verifier.go"; +const GO_SRC: &str = "./go_verifiers_lib/verifier.go"; const GO_OUT: &str = "libverifier.a"; const GO_LIB: &str = "verifier"; fn main() { let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + + // Fix the missing dependency issue + let mut get_cmd = Command::new("go"); + get_cmd + .arg("get") + .arg("github.com/iden3/go-rapidsnark/verifier@v0.0.5"); + + let _ = get_cmd.output(); // Run but don't fail if it has issues + + // Build library let mut go_build = Command::new("go"); go_build .arg("build") diff --git a/crates/batcher/go_verifiers_lib/go.mod b/crates/batcher/go_verifiers_lib/go.mod new file mode 100644 index 0000000000..fd5331ba36 --- /dev/null +++ b/crates/batcher/go_verifiers_lib/go.mod @@ -0,0 +1,38 @@ +module verifier + +go 1.22.3 + +replace github.com/iden3/go-rapidsnark => github.com/yetanotherco/go-rapidsnark v0.0.0-20250829135025-99f9f6b11ecc + +replace github.com/iden3/go-rapidsnark/types => github.com/yetanotherco/go-rapidsnark/types v0.0.0-20250829135025-99f9f6b11ecc + +replace github.com/iden3/go-rapidsnark/verifier => github.com/yetanotherco/go-rapidsnark/verifier v0.0.0-20250829135025-99f9f6b11ecc + +replace github.com/consensys/gnark-crypto => github.com/yetanotherco/gnark-crypto v0.0.0-20251017181549-3ba17da18479 + +require ( + github.com/consensys/gnark v0.12.0 + github.com/consensys/gnark-crypto v0.17.0 + github.com/iden3/go-rapidsnark/types v0.0.3 + github.com/iden3/go-rapidsnark/verifier v0.0.5 +) + +require ( + github.com/bits-and-blooms/bitset v1.20.0 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/consensys/bavard v0.1.29 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect + github.com/iden3/go-iden3-crypto v0.0.17 // indirect + github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/ronanh/intcomp v1.1.0 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/x448/float16 v0.8.4 // indirect + golang.org/x/crypto v0.33.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect +) diff --git a/crates/batcher/go_verifiers_lib/go.sum b/crates/batcher/go_verifiers_lib/go.sum new file mode 100644 index 0000000000..eb5e7daf84 --- /dev/null +++ b/crates/batcher/go_verifiers_lib/go.sum @@ -0,0 +1,67 @@ +github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= +github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/consensys/bavard v0.1.29 h1:fobxIYksIQ+ZSrTJUuQgu+HIJwclrAPcdXqd7H2hh1k= +github.com/consensys/bavard v0.1.29/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark v0.12.0 h1:XgQ1kh2R6fHuf5fBYl+i7TxR+QTbGQuZaaqqkk5nLO0= +github.com/consensys/gnark v0.12.0/go.mod h1:WDvuIQ8qrRvWT9NhTrib84WeLVBSGhSTrbQBXs1yR5w= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +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/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +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/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/iden3/go-iden3-crypto v0.0.17 h1:NdkceRLJo/pI4UpcjVah4lN/a3yzxRUGXqxbWcYh9mY= +github.com/iden3/go-iden3-crypto v0.0.17/go.mod h1:dLpM4vEPJ3nDHzhWFXDjzkn1qHoBeOT/3UEhXsEsP3E= +github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b h1:AvQTK7l0PTHODD06PVQX1Tn2o29sRIaKIDOvTJmKurY= +github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b/go.mod h1:e0JHb27/P6WorCJS3YolbY5XffS4PGBuoW38OthLkDs= +github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= +github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= +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.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/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +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/ronanh/intcomp v1.1.0 h1:i54kxmpmSoOZFcWPMWryuakN0vLxLswASsGa07zkvLU= +github.com/ronanh/intcomp v1.1.0/go.mod h1:7FOLy3P3Zj3er/kVrU/pl+Ql7JFZj7bwliMGketo0IU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/yetanotherco/gnark-crypto v0.0.0-20251017181549-3ba17da18479 h1:ub1gPwChjJVt7Sw8zkxlVp2ES2cxLylrp+pjRnePkYk= +github.com/yetanotherco/gnark-crypto v0.0.0-20251017181549-3ba17da18479/go.mod h1:A2URlMHUT81ifJ0UlLzSlm7TmnE3t7VxEThApdMukJw= +github.com/yetanotherco/go-rapidsnark/types v0.0.0-20250829135025-99f9f6b11ecc h1:9d0e1bmYz6pv0p1V8zrx7jALDdgAIZ8bZWSCDxemgE4= +github.com/yetanotherco/go-rapidsnark/types v0.0.0-20250829135025-99f9f6b11ecc/go.mod h1:ApgcaUxKIgSRA6fAeFxK7p+lgXXfG4oA2HN5DhFlfF4= +github.com/yetanotherco/go-rapidsnark/verifier v0.0.0-20250829135025-99f9f6b11ecc h1:JLSkcXpSuKb4fzYMF1qNM0nO2oysvOkpNeCSQunTtUA= +github.com/yetanotherco/go-rapidsnark/verifier v0.0.0-20250829135025-99f9f6b11ecc/go.mod h1:KgL3Yr9NehlFDI4EIWVLE3UDUi8ulyjbp7HcXSBfiGI= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/crates/batcher/go_verifiers_lib/verifier.go b/crates/batcher/go_verifiers_lib/verifier.go new file mode 100644 index 0000000000..5c4762f2b9 --- /dev/null +++ b/crates/batcher/go_verifiers_lib/verifier.go @@ -0,0 +1,186 @@ +package main + +/* +#include +#include + +typedef struct ListRef { + const uint8_t *ptr; + uintptr_t len; +} ListRef; +*/ +import "C" + +import ( + "bytes" + "encoding/json" + "fmt" + "math/big" + + "log" + "unsafe" + + "github.com/consensys/gnark-crypto/ecc" + "github.com/consensys/gnark/backend/groth16" + "github.com/consensys/gnark/backend/plonk" + "github.com/consensys/gnark/backend/witness" + "github.com/iden3/go-rapidsnark/types" + "github.com/iden3/go-rapidsnark/verifier" +) + +func listRefToBytes(listRef C.ListRef) []byte { + + if listRef.len == 0 { + return []byte{} + } + + return C.GoBytes(unsafe.Pointer(listRef.ptr), C.int(listRef.len)) +} + +func main() {} + +//export VerifyGnarkPlonkProofBLS12_381 +func VerifyGnarkPlonkProofBLS12_381(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool { + return verifyGnarkPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BLS12_381) +} + +//export VerifyGnarkPlonkProofBN254 +func VerifyGnarkPlonkProofBN254(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool { + return verifyGnarkPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) +} + +//export VerifyGnarkGroth16ProofBN254 +func VerifyGnarkGroth16ProofBN254(proofBytes C.ListRef, pubInputBytes C.ListRef, verificationKeyBytes C.ListRef) bool { + return verifyGnarkGroth16Proof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) +} + +// verifyGnarkPlonkProof contains the common proof verification logic. +func verifyGnarkPlonkProof(proofBytesRef C.ListRef, pubInputBytesRef C.ListRef, verificationKeyBytesRef C.ListRef, curve ecc.ID) bool { + proofBytes := listRefToBytes(proofBytesRef) + pubInputBytes := listRefToBytes(pubInputBytesRef) + verificationKeyBytes := listRefToBytes(verificationKeyBytesRef) + + proofReader := bytes.NewReader(proofBytes) + proof := plonk.NewProof(curve) + if _, err := proof.ReadFrom(proofReader); err != nil { + log.Printf("Could not deserialize proof: %v", err) + return false + } + + pubInputReader := bytes.NewReader(pubInputBytes) + pubInput, err := witness.New(curve.ScalarField()) + if err != nil { + log.Printf("Error instantiating witness: %v", err) + return false + } + if _, err = pubInput.ReadFrom(pubInputReader); err != nil { + log.Printf("Could not read PLONK public input: %v", err) + return false + } + + verificationKeyReader := bytes.NewReader(verificationKeyBytes) + verificationKey := plonk.NewVerifyingKey(curve) + if _, err = verificationKey.ReadFrom(verificationKeyReader); err != nil { + log.Printf("Could not read PLONK verifying key from bytes: %v", err) + return false + } + + err = plonk.Verify(proof, verificationKey, pubInput) + return err == nil +} + +// verifyGnarkGroth16Proof contains the common proof verification logic. +func verifyGnarkGroth16Proof(proofBytesRef C.ListRef, pubInputBytesRef C.ListRef, verificationKeyBytesRef C.ListRef, curve ecc.ID) bool { + proofBytes := listRefToBytes(proofBytesRef) + pubInputBytes := listRefToBytes(pubInputBytesRef) + verificationKeyBytes := listRefToBytes(verificationKeyBytesRef) + + proofReader := bytes.NewReader(proofBytes) + proof := groth16.NewProof(curve) + if _, err := proof.ReadFrom(proofReader); err != nil { + log.Printf("Could not deserialize proof: %v", err) + return false + } + + pubInputReader := bytes.NewReader(pubInputBytes) + pubInput, err := witness.New(curve.ScalarField()) + if err != nil { + log.Printf("Error instantiating witness: %v", err) + return false + } + if _, err = pubInput.ReadFrom(pubInputReader); err != nil { + log.Printf("Could not read Groth16 public input: %v", err) + return false + } + + verificationKeyReader := bytes.NewReader(verificationKeyBytes) + verificationKey := groth16.NewVerifyingKey(curve) + if _, err = verificationKey.ReadFrom(verificationKeyReader); err != nil { + log.Printf("Could not read Groth16 verifying key from bytes: %v", err) + return false + } + + err = groth16.Verify(proof, verificationKey, pubInput) + return err == nil +} + +func bytesToBigInts32(b []byte) ([]*big.Int, error) { + if len(b)%32 != 0 { + return nil, fmt.Errorf("invalid length") + } + + inputs := make([]*big.Int, 0, len(b)/32) + for i := 0; i < len(b); i += 32 { + chunk := b[i : i+32] + bi := new(big.Int).SetBytes(chunk) + inputs = append(inputs, bi) + } + return inputs, nil +} + +//export VerifyCircomGroth16ProofBN256 +func VerifyCircomGroth16ProofBN256(proofBytesRef C.ListRef, pubInputBytesRef C.ListRef, verificationKeyBytesRef C.ListRef) bool { + proofBytes := listRefToBytes(proofBytesRef) + pubInputBytes := listRefToBytes(pubInputBytesRef) + verificationKeyBytes := listRefToBytes(verificationKeyBytesRef) + + proofData := &types.ProofData{} + err := json.Unmarshal(proofBytes, proofData) + if err != nil { + log.Printf("Could not unmarshal proof: %v", err) + return false + } + + parsedProofData, err := verifier.ParseProofData(*proofData) + if err != nil { + log.Printf("Could not parse proof: %v", err) + return false + } + + var vkStr verifier.VkJSON + err = json.Unmarshal(verificationKeyBytes, &vkStr) + if err != nil { + log.Printf("Could not unmarshal vk: %v", err) + return false + } + + vk, err := verifier.ParseVK(vkStr) + if err != nil { + log.Printf("Could not parse vk: %v", err) + return false + } + + inputs, err := bytesToBigInts32(pubInputBytes) + if err != nil { + log.Printf("Could not parse pub inputs: %v", err) + return false + } + + err = verifier.VerifyRaw(vk, parsedProofData, inputs) + if err != nil { + log.Printf("Could not verify Groth16 proof: %v", err) + return false + } + + return true +} diff --git a/batcher/aligned-batcher/rust-toolchain b/crates/batcher/rust-toolchain similarity index 63% rename from batcher/aligned-batcher/rust-toolchain rename to crates/batcher/rust-toolchain index 989860f406..9397b95266 100644 --- a/batcher/aligned-batcher/rust-toolchain +++ b/crates/batcher/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2024-04-17" +channel = "stable" components = ["llvm-tools", "rustc-dev"] diff --git a/crates/batcher/src/circom/mod.rs b/crates/batcher/src/circom/mod.rs new file mode 100644 index 0000000000..9a0722027d --- /dev/null +++ b/crates/batcher/src/circom/mod.rs @@ -0,0 +1 @@ +pub mod verifier; diff --git a/crates/batcher/src/circom/verifier.rs b/crates/batcher/src/circom/verifier.rs new file mode 100644 index 0000000000..6e9ddc8530 --- /dev/null +++ b/crates/batcher/src/circom/verifier.rs @@ -0,0 +1,20 @@ +use crate::ffi::circom_ffi::VerifyCircomGroth16ProofBN256; +use aligned_sdk::common::types::ProvingSystemId; + +pub fn verify_circom( + proving_system: &ProvingSystemId, + proof: &Vec, + public_input: &Vec, + verification_key: &Vec, +) -> bool { + let proof = proof.into(); + let public_input = public_input.into(); + let verification_key = verification_key.into(); + + match proving_system { + ProvingSystemId::CircomGroth16Bn256 => unsafe { + VerifyCircomGroth16ProofBN256(proof, public_input, verification_key) + }, + _ => false, + } +} diff --git a/batcher/aligned-batcher/src/config/mod.rs b/crates/batcher/src/config/mod.rs similarity index 90% rename from batcher/aligned-batcher/src/config/mod.rs rename to crates/batcher/src/config/mod.rs index 1d1cea836e..29f478dd25 100644 --- a/batcher/aligned-batcher/src/config/mod.rs +++ b/crates/batcher/src/config/mod.rs @@ -46,10 +46,14 @@ pub struct BatcherConfigFromYaml { pub max_proof_size: usize, pub max_batch_byte_size: usize, pub max_batch_proof_qty: usize, + pub max_queue_size: usize, pub pre_verification_is_enabled: bool, pub metrics_port: u16, pub telemetry_ip_port_address: String, pub non_paying: Option, + pub amount_of_proofs_for_min_max_fee: usize, + pub min_bump_percentage: u64, + pub balance_unlock_polling_interval_seconds: u64, } #[derive(Debug, Deserialize)] @@ -92,9 +96,9 @@ impl ContractDeploymentOutput { } fn default_aggregator_fee_percentage_multiplier() -> u128 { - aligned_sdk::core::constants::DEFAULT_AGGREGATOR_FEE_PERCENTAGE_MULTIPLIER + aligned_sdk::common::constants::DEFAULT_AGGREGATOR_FEE_PERCENTAGE_MULTIPLIER } fn default_aggregator_gas_cost() -> u128 { - aligned_sdk::core::constants::DEFAULT_AGGREGATOR_GAS_COST + aligned_sdk::common::constants::DEFAULT_AGGREGATOR_GAS_COST } diff --git a/batcher/aligned-batcher/src/connection.rs b/crates/batcher/src/connection.rs similarity index 79% rename from batcher/aligned-batcher/src/connection.rs rename to crates/batcher/src/connection.rs index 9a87230abc..b32e511c52 100644 --- a/batcher/aligned-batcher/src/connection.rs +++ b/crates/batcher/src/connection.rs @@ -2,8 +2,8 @@ use std::sync::Arc; use crate::types::{batch_queue::BatchQueueEntry, errors::BatcherError}; use aligned_sdk::{ + common::types::{BatchInclusionData, SubmitProofResponseMessage, VerificationCommitmentBatch}, communication::serialization::cbor_serialize, - core::types::{BatchInclusionData, SubmitProofResponseMessage, VerificationCommitmentBatch}, }; use futures_util::{stream::SplitSink, SinkExt}; use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; @@ -18,7 +18,7 @@ use tokio_tungstenite::{ pub(crate) type WsMessageSink = Arc, Message>>>; pub(crate) async fn send_batch_inclusion_data_responses( - finalized_batch: Vec, + finalized_batch: &[BatchQueueEntry], batch_merkle_tree: &MerkleTree, ) -> Result<(), BatcherError> { // Finalized_batch is ordered as the PriorityQueue, ordered by: ascending max_fee && if max_fee is equal, by descending nonce. @@ -57,17 +57,16 @@ pub(crate) async fn send_batch_inclusion_data_responses( } pub(crate) async fn send_message(ws_conn_sink: WsMessageSink, message: T) { - match cbor_serialize(&message) { - Ok(serialized_response) => { - if let Err(err) = ws_conn_sink - .write() - .await - .send(Message::binary(serialized_response)) - .await - { - error!("Error while sending message: {}", err) - } + if let Ok(serialized_response) = + cbor_serialize(&message).inspect_err(|e| error!("Error while serializing message: {}", e)) + { + if let Err(err) = ws_conn_sink + .write() + .await + .send(Message::binary(serialized_response)) + .await + { + error!("Error while sending message: {}", err) } - Err(e) => error!("Error while serializing message: {}", e), } } diff --git a/batcher/aligned-batcher/src/eth/mod.rs b/crates/batcher/src/eth/mod.rs similarity index 100% rename from batcher/aligned-batcher/src/eth/mod.rs rename to crates/batcher/src/eth/mod.rs diff --git a/batcher/aligned-batcher/src/eth/payment_service.rs b/crates/batcher/src/eth/payment_service.rs similarity index 100% rename from batcher/aligned-batcher/src/eth/payment_service.rs rename to crates/batcher/src/eth/payment_service.rs diff --git a/batcher/aligned-batcher/src/eth/service_manager.rs b/crates/batcher/src/eth/service_manager.rs similarity index 100% rename from batcher/aligned-batcher/src/eth/service_manager.rs rename to crates/batcher/src/eth/service_manager.rs diff --git a/batcher/aligned-batcher/src/eth/utils.rs b/crates/batcher/src/eth/utils.rs similarity index 99% rename from batcher/aligned-batcher/src/eth/utils.rs rename to crates/batcher/src/eth/utils.rs index 6f5c671940..58cd5bed1e 100644 --- a/batcher/aligned-batcher/src/eth/utils.rs +++ b/crates/batcher/src/eth/utils.rs @@ -8,7 +8,7 @@ use crate::{ retry_function, }, }; -use aligned_sdk::core::constants::{ +use aligned_sdk::common::constants::{ ETHEREUM_CALL_BACKOFF_FACTOR, ETHEREUM_CALL_MAX_RETRIES, ETHEREUM_CALL_MAX_RETRY_DELAY, ETHEREUM_CALL_MIN_RETRY_DELAY, GAS_PRICE_INCREMENT_PERCENTAGE_PER_ITERATION, OVERRIDE_GAS_PRICE_PERCENTAGE_MULTIPLIER, PERCENTAGE_DIVIDER, diff --git a/crates/batcher/src/ffi/circom_ffi.rs b/crates/batcher/src/ffi/circom_ffi.rs new file mode 100644 index 0000000000..bf6afb78be --- /dev/null +++ b/crates/batcher/src/ffi/circom_ffi.rs @@ -0,0 +1,9 @@ +use crate::ffi::list_ref::ListRef; + +extern "C" { + pub fn VerifyCircomGroth16ProofBN256( + proof: ListRef, + public_input: ListRef, + verification_key: ListRef, + ) -> bool; +} diff --git a/crates/batcher/src/ffi/gnark_ffi.rs b/crates/batcher/src/ffi/gnark_ffi.rs new file mode 100644 index 0000000000..2ab11cf312 --- /dev/null +++ b/crates/batcher/src/ffi/gnark_ffi.rs @@ -0,0 +1,19 @@ +use crate::ffi::list_ref::ListRef; + +extern "C" { + pub fn VerifyGnarkPlonkProofBLS12_381( + proof: ListRef, + public_input: ListRef, + verification_key: ListRef, + ) -> bool; + pub fn VerifyGnarkPlonkProofBN254( + proof: ListRef, + public_input: ListRef, + verification_key: ListRef, + ) -> bool; + pub fn VerifyGnarkGroth16ProofBN254( + proof: ListRef, + public_input: ListRef, + verification_key: ListRef, + ) -> bool; +} diff --git a/crates/batcher/src/ffi/list_ref.rs b/crates/batcher/src/ffi/list_ref.rs new file mode 100644 index 0000000000..90de671167 --- /dev/null +++ b/crates/batcher/src/ffi/list_ref.rs @@ -0,0 +1,26 @@ +#[derive(Copy, Clone, Debug)] +#[repr(C)] +pub struct ListRef { + data: *const u8, + len: usize, +} + +impl From> for ListRef { + fn from(v: Vec) -> Self { + Self::from(v.as_slice()) + } +} + +impl From<&Vec> for ListRef { + fn from(v: &Vec) -> Self { + Self::from(v.as_slice()) + } +} + +impl From<&[u8]> for ListRef { + fn from(v: &[u8]) -> Self { + let len = v.len(); + let data = v.as_ptr().cast(); + ListRef { data, len } + } +} diff --git a/crates/batcher/src/ffi/mod.rs b/crates/batcher/src/ffi/mod.rs new file mode 100644 index 0000000000..1b423e92a5 --- /dev/null +++ b/crates/batcher/src/ffi/mod.rs @@ -0,0 +1,3 @@ +pub mod circom_ffi; +pub mod gnark_ffi; +mod list_ref; diff --git a/crates/batcher/src/gnark/mod.rs b/crates/batcher/src/gnark/mod.rs new file mode 100644 index 0000000000..aef2799d82 --- /dev/null +++ b/crates/batcher/src/gnark/mod.rs @@ -0,0 +1,28 @@ +use crate::ffi::gnark_ffi::{ + VerifyGnarkGroth16ProofBN254, VerifyGnarkPlonkProofBLS12_381, VerifyGnarkPlonkProofBN254, +}; +use aligned_sdk::common::types::ProvingSystemId; + +pub fn verify_gnark( + proving_system: &ProvingSystemId, + proof: &Vec, + public_input: &Vec, + verification_key: &Vec, +) -> bool { + let proof = proof.into(); + let public_input = public_input.into(); + let verification_key = verification_key.into(); + + match proving_system { + ProvingSystemId::GnarkPlonkBn254 => unsafe { + VerifyGnarkPlonkProofBN254(proof, public_input, verification_key) + }, + ProvingSystemId::GnarkPlonkBls12_381 => unsafe { + VerifyGnarkPlonkProofBLS12_381(proof, public_input, verification_key) + }, + ProvingSystemId::GnarkGroth16Bn254 => unsafe { + VerifyGnarkGroth16ProofBN254(proof, public_input, verification_key) + }, + _ => false, + } +} diff --git a/batcher/aligned-batcher/src/lib.rs b/crates/batcher/src/lib.rs similarity index 50% rename from batcher/aligned-batcher/src/lib.rs rename to crates/batcher/src/lib.rs index 93a028c112..0f9d099880 100644 --- a/batcher/aligned-batcher/src/lib.rs +++ b/crates/batcher/src/lib.rs @@ -7,9 +7,10 @@ use eth::utils::{calculate_bumped_gas_price, get_batcher_signer, get_gas_price}; use ethers::contract::ContractError; use ethers::signers::Signer; use retry::batcher_retryables::{ - cancel_create_new_task_retryable, create_new_task_retryable, get_user_balance_retryable, - get_user_nonce_from_ethereum_retryable, simulate_create_new_task_retryable, - user_balance_is_unlocked_retryable, + cancel_create_new_task_retryable, create_new_task_retryable, + get_current_block_number_retryable, get_user_balance_retryable, + get_user_nonce_from_ethereum_retryable, query_balance_unlocked_events_retryable, + simulate_create_new_task_retryable, user_balance_is_unlocked_retryable, }; use retry::{retry_function, RetryError}; use tokio::time::{timeout, Instant}; @@ -23,7 +24,7 @@ use std::net::SocketAddr; use std::sync::Arc; use std::time::Duration; -use aligned_sdk::core::constants::{ +use aligned_sdk::common::constants::{ ADDITIONAL_SUBMISSION_GAS_COST_PER_PROOF, BATCHER_SUBMISSION_BASE_GAS_COST, BUMP_BACKOFF_FACTOR, BUMP_MAX_RETRIES, BUMP_MAX_RETRY_DELAY, BUMP_MIN_RETRY_DELAY, CBOR_ARRAY_MAX_OVERHEAD, CONNECTION_TIMEOUT, DEFAULT_MAX_FEE_PER_PROOF, @@ -31,22 +32,26 @@ use aligned_sdk::core::constants::{ ETHEREUM_CALL_MIN_RETRY_DELAY, GAS_PRICE_PERCENTAGE_MULTIPLIER, PERCENTAGE_DIVIDER, RESPOND_TO_TASK_FEE_LIMIT_PERCENTAGE_MULTIPLIER, }; -use aligned_sdk::core::types::{ - ClientMessage, GetNonceResponseMessage, NoncedVerificationData, ProofInvalidReason, - ProvingSystemId, SubmitProofMessage, SubmitProofResponseMessage, VerificationCommitmentBatch, - VerificationData, VerificationDataCommitment, +use aligned_sdk::common::types::{ + ClientMessage, GetLastMaxFeeResponseMessage, GetNonceResponseMessage, NoncedVerificationData, + ProofInvalidReason, ProvingSystemId, SubmitProofMessage, SubmitProofResponseMessage, + VerificationCommitmentBatch, VerificationData, VerificationDataCommitment, }; use aws_sdk_s3::client::Client as S3Client; use eth::payment_service::{BatcherPaymentService, CreateNewTaskFeeParams, SignerMiddlewareT}; -use ethers::prelude::{Middleware, Provider}; -use ethers::types::{Address, Signature, TransactionReceipt, U256}; -use futures_util::{future, SinkExt, StreamExt, TryStreamExt}; +use ethers::prelude::{Http, Middleware, Provider}; +use ethers::types::{Address, Signature, TransactionReceipt, U256, U64}; +use futures_util::{future, join, SinkExt, StreamExt, TryStreamExt}; use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; use lambdaworks_crypto::merkle_tree::traits::IsMerkleTreeBackend; use log::{debug, error, info, warn}; use tokio::net::{TcpListener, TcpStream}; use tokio::sync::{Mutex, MutexGuard, RwLock}; + +// Message handler lock timeout +const MESSAGE_HANDLER_LOCK_TIMEOUT: Duration = Duration::from_secs(10); +const POLLING_EVENTS_LOCK_TIMEOUT: Duration = Duration::from_secs(300); use tokio_tungstenite::tungstenite::{Error, Message}; use types::batch_queue::{self, BatchQueueEntry, BatchQueueEntryPriority}; use types::errors::{BatcherError, TransactionSendError}; @@ -54,9 +59,11 @@ use types::errors::{BatcherError, TransactionSendError}; use crate::config::{ConfigFromYaml, ContractDeploymentOutput}; use crate::telemetry::sender::TelemetrySender; +pub mod circom; mod config; mod connection; mod eth; +mod ffi; pub mod gnark; pub mod metrics; pub mod retry; @@ -70,31 +77,64 @@ mod zk_utils; pub const LISTEN_NEW_BLOCKS_MAX_TIMES: usize = usize::MAX; pub struct Batcher { + // Configuration parameters s3_client: S3Client, s3_bucket_name: String, download_endpoint: String, + s3_client_secondary: Option, + s3_bucket_name_secondary: Option, + download_endpoint_secondary: Option, eth_ws_url: String, eth_ws_url_fallback: String, batcher_signer: Arc, batcher_signer_fallback: Arc, + eth_http_provider: Provider, + eth_http_provider_fallback: Provider, chain_id: U256, payment_service: BatcherPaymentService, payment_service_fallback: BatcherPaymentService, service_manager: ServiceManager, service_manager_fallback: ServiceManager, - batch_state: Mutex, min_block_interval: u64, transaction_wait_timeout: u64, max_proof_size: usize, max_batch_byte_size: usize, max_batch_proof_qty: usize, - last_uploaded_batch_block: Mutex, pre_verification_is_enabled: bool, non_paying_config: Option, - posting_batch: Mutex, - disabled_verifiers: Mutex, aggregator_fee_percentage_multiplier: u128, aggregator_gas_cost: u128, + current_min_max_fee: RwLock, + amount_of_proofs_for_min_max_fee: usize, + min_bump_percentage: U256, + balance_unlock_polling_interval_seconds: u64, + + // Shared state access: + // Two kinds of threads interact with the shared state: + // 1. User message processing threads (run in parallel) + // 2. Batch creation thread (runs sequentially, includes failure recovery) + // + // Locking rules: + // - To avoid deadlocks, always acquire `user_states` before `batch_state`. + // - During failure recovery, restoring a valid state may require breaking this rule: + // additional user locks might be acquired *after* the batch lock. + // (See the `restore` algorithm in the `batch_queue` module.) + // + // Because of this exception, user message handling uses lock acquisition with timeouts. + batch_state: Mutex, + + user_states: Arc>>>>, + + last_uploaded_batch_block: Mutex, + + /// This is used to avoid multiple batches being submitted at the same time + /// It could be removed in the future by changing how we spawn + /// the batch creation task + posting_batch: Mutex, + + disabled_verifiers: Mutex, + + // Observability and monitoring pub metrics: metrics::BatcherMetrics, pub telemetry: TelemetrySender, } @@ -104,7 +144,13 @@ impl Batcher { dotenv().ok(); // https://docs.aws.amazon.com/sdk-for-rust/latest/dg/localstack.html - let upload_endpoint = env::var("UPLOAD_ENDPOINT").ok(); + // Primary S3 configuration + let s3_config_primary = s3::S3Config { + access_key_id: env::var("AWS_ACCESS_KEY_ID").ok(), + secret_access_key: env::var("AWS_SECRET_ACCESS_KEY").ok(), + region: env::var("AWS_REGION").ok(), + endpoint_url: env::var("UPLOAD_ENDPOINT").ok(), + }; let s3_bucket_name = env::var("AWS_BUCKET_NAME").expect("AWS_BUCKET_NAME not found in environment"); @@ -112,7 +158,26 @@ impl Batcher { let download_endpoint = env::var("DOWNLOAD_ENDPOINT").expect("DOWNLOAD_ENDPOINT not found in environment"); - let s3_client = s3::create_client(upload_endpoint).await; + let s3_client = s3::create_client(s3_config_primary).await; + + // Secondary S3 configuration (optional) + let s3_bucket_name_secondary = env::var("AWS_BUCKET_NAME_SECONDARY").ok(); + let download_endpoint_secondary = env::var("DOWNLOAD_ENDPOINT_SECONDARY").ok(); + + let s3_client_secondary = if s3_bucket_name_secondary.is_some() + && download_endpoint_secondary.is_some() + { + let s3_config_secondary = s3::S3Config { + access_key_id: env::var("AWS_ACCESS_KEY_ID_SECONDARY").ok(), + secret_access_key: env::var("AWS_SECRET_ACCESS_KEY_SECONDARY").ok(), + region: env::var("AWS_REGION_SECONDARY").ok(), + endpoint_url: env::var("UPLOAD_ENDPOINT_SECONDARY").ok(), + }; + Some(s3::create_client(s3_config_secondary).await) + } else { + info!("Secondary S3 configuration not found or incomplete. Operating with primary S3 only."); + None + }; let config = ConfigFromYaml::new(config_file); // Ensure max_batch_bytes_size can at least hold one proof of max_proof_size, @@ -128,7 +193,7 @@ impl Batcher { let deployment_output = ContractDeploymentOutput::new(config.aligned_layer_deployment_config_file_path); - log::info!( + info!( "Starting metrics server on port {}", config.batcher.metrics_port ); @@ -209,8 +274,8 @@ impl Batcher { .await .expect("Failed to get fallback Service Manager contract"); - let mut user_states = HashMap::new(); - let mut batch_state = BatchState::new(); + let user_states = Arc::new(RwLock::new(HashMap::new())); + let batch_state = BatchState::new(config.batcher.max_queue_size); let non_paying_config = if let Some(non_paying_config) = config.batcher.non_paying { warn!("Non-paying address configuration detected. Will replace non-paying address {} with configured address.", non_paying_config.address); @@ -223,12 +288,11 @@ impl Batcher { .expect("Could not get non-paying nonce from Ethereum"); let non_paying_user_state = UserState::new(nonpaying_nonce); - user_states.insert( + user_states.write().await.insert( non_paying_config.replacement.address(), - non_paying_user_state, + Arc::new(Mutex::new(non_paying_user_state)), ); - batch_state = BatchState::new_with_user_states(user_states); Some(non_paying_config) } else { None @@ -249,10 +313,15 @@ impl Batcher { s3_client, s3_bucket_name, download_endpoint, + s3_client_secondary, + s3_bucket_name_secondary, + download_endpoint_secondary, eth_ws_url: config.eth_ws_url, eth_ws_url_fallback: config.eth_ws_url_fallback, batcher_signer, batcher_signer_fallback, + eth_http_provider, + eth_http_provider_fallback, chain_id, payment_service, payment_service_fallback, @@ -263,6 +332,11 @@ impl Batcher { max_proof_size: config.batcher.max_proof_size, max_batch_byte_size: config.batcher.max_batch_byte_size, max_batch_proof_qty: config.batcher.max_batch_proof_qty, + amount_of_proofs_for_min_max_fee: config.batcher.amount_of_proofs_for_min_max_fee, + min_bump_percentage: U256::from(config.batcher.min_bump_percentage), + balance_unlock_polling_interval_seconds: config + .batcher + .balance_unlock_polling_interval_seconds, last_uploaded_batch_block: Mutex::new(last_uploaded_batch_block), pre_verification_is_enabled: config.batcher.pre_verification_is_enabled, non_paying_config, @@ -272,12 +346,125 @@ impl Batcher { aggregator_gas_cost: config.batcher.aggregator_gas_cost, posting_batch: Mutex::new(false), batch_state: Mutex::new(batch_state), + user_states, disabled_verifiers: Mutex::new(disabled_verifiers), + current_min_max_fee: RwLock::new(U256::zero()), metrics, telemetry, } } + async fn update_evicted_user_state_with_lock( + &self, + removed_entry: &types::batch_queue::BatchQueueEntry, + batch_queue: &types::batch_queue::BatchQueue, + user_state_guard: &mut tokio::sync::MutexGuard<'_, crate::types::user_state::UserState>, + ) { + let addr = removed_entry.sender; + + let new_last_max_fee_limit = match batch_queue + .iter() + .filter(|(e, _)| e.sender == addr) + .next_back() + { + Some((last_entry, _)) => last_entry.nonced_verification_data.max_fee, + None => { + self.user_states.write().await.remove(&addr); + return; + } + }; + + user_state_guard.proofs_in_batch -= 1; + user_state_guard.nonce -= U256::one(); + user_state_guard.total_fees_in_queue -= removed_entry.nonced_verification_data.max_fee; + user_state_guard.last_max_fee_limit = new_last_max_fee_limit; + } + + // Fallback async version for restoration path where we don't have pre-held locks + async fn update_evicted_user_state_async( + &self, + removed_entry: &types::batch_queue::BatchQueueEntry, + batch_queue: &types::batch_queue::BatchQueue, + ) -> Option<()> { + let addr = removed_entry.sender; + + let new_last_max_fee_limit = match batch_queue + .iter() + .filter(|(e, _)| e.sender == addr) + .next_back() + { + Some((last_entry, _)) => last_entry.nonced_verification_data.max_fee, + None => { + self.user_states.write().await.remove(&addr); + return Some(()); + } + }; + + let user_state = self.user_states.read().await.get(&addr)?.clone(); + let mut user_state_guard = user_state.lock().await; + user_state_guard.proofs_in_batch -= 1; + user_state_guard.nonce -= U256::one(); + user_state_guard.total_fees_in_queue -= removed_entry.nonced_verification_data.max_fee; + user_state_guard.last_max_fee_limit = new_last_max_fee_limit; + Some(()) + } + + fn calculate_new_user_states_data( + &self, + batch_queue: &batch_queue::BatchQueue, + ) -> HashMap { + let mut updated_user_states = HashMap::new(); + for (entry, _) in batch_queue.iter() { + let addr = entry.sender; + let max_fee = entry.nonced_verification_data.max_fee; + + let (proof_count, max_fee_limit, total_fees_in_queue) = updated_user_states + .entry(addr) + .or_insert((0, max_fee, U256::zero())); + + *proof_count += 1; + *total_fees_in_queue += max_fee; + if max_fee < *max_fee_limit { + *max_fee_limit = max_fee; + } + } + updated_user_states + } + + /// Helper to apply 15-second timeout to user lock acquisition with consistent logging and metrics + async fn try_user_lock_with_timeout(&self, addr: Address, lock_future: F) -> Option + where + F: std::future::Future, + { + match timeout(MESSAGE_HANDLER_LOCK_TIMEOUT, lock_future).await { + Ok(result) => Some(result), + Err(_) => { + warn!("User lock acquisition timed out for address {}", addr); + self.metrics.inc_message_handler_user_lock_timeout(); + None + } + } + } + + /// Helper to apply `duration` timeout to batch lock acquisition with consistent logging and metrics + async fn try_batch_lock_with_timeout( + &self, + lock_future: F, + duration: Duration, + ) -> Option + where + F: std::future::Future, + { + match timeout(duration, lock_future).await { + Ok(result) => Some(result), + Err(_) => { + warn!("Batch lock acquisition timed out"); + self.metrics.inc_message_handler_batch_lock_timeout(); + None + } + } + } + pub async fn listen_connections(self: Arc, address: &str) -> Result<(), BatcherError> { // Create the event loop and TCP listener we'll accept connections on. let listener = TcpListener::bind(address) @@ -318,42 +505,281 @@ impl Batcher { .map_err(|e| e.inner()) } - pub async fn listen_new_blocks_retryable( - self: Arc, - ) -> Result<(), RetryError> { - let eth_ws_provider = Provider::connect(&self.eth_ws_url).await.map_err(|e| { - warn!("Failed to instantiate Ethereum websocket provider"); - RetryError::Transient(BatcherError::EthereumSubscriptionError(e.to_string())) + /// Poll for BalanceUnlocked events from BatcherPaymentService contract. + /// Runs at configurable intervals and checks recent blocks for events (2x the polling interval). + /// When an event is detected, removes user's proofs from queue and resets UserState. + pub async fn poll_balance_unlocked_events(self: Arc) -> Result<(), BatcherError> { + let mut interval = tokio::time::interval(Duration::from_secs( + self.balance_unlock_polling_interval_seconds, + )); + let mut from_block = self.get_current_block_number().await.map_err(|e| { + BatcherError::EthereumProviderError(format!( + "Failed to get current block number: {:?}", + e + )) })?; - let eth_ws_provider_fallback = - Provider::connect(&self.eth_ws_url_fallback) - .await - .map_err(|e| { - warn!("Failed to instantiate fallback Ethereum websocket provider"); - RetryError::Transient(BatcherError::EthereumSubscriptionError(e.to_string())) - })?; - - let mut stream = eth_ws_provider.subscribe_blocks().await.map_err(|e| { - warn!("Error subscribing to blocks."); - RetryError::Transient(BatcherError::EthereumSubscriptionError(e.to_string())) + loop { + interval.tick().await; + + match self.process_balance_unlocked_events(from_block).await { + Ok(current_block) => { + from_block = current_block; + } + Err(e) => { + error!("Error processing BalanceUnlocked events: {:?}", e); + // On error, keep from_block unchanged to retry the same range next time + } + } + } + } + + async fn process_balance_unlocked_events(&self, from_block: U64) -> Result { + // Get current block number using HTTP providers + let current_block = self.get_current_block_number().await.map_err(|e| { + BatcherError::EthereumProviderError(format!( + "Failed to get current block number: {:?}", + e + )) })?; - let mut stream_fallback = - eth_ws_provider_fallback - .subscribe_blocks() - .await - .map_err(|e| { - warn!("Error subscribing to blocks."); - RetryError::Transient(BatcherError::EthereumSubscriptionError(e.to_string())) - })?; + // Query events with retry logic + let events = self + .query_balance_unlocked_events(from_block, current_block) + .await + .map_err(|e| { + BatcherError::EthereumProviderError(format!( + "Failed to query BalanceUnlocked events: {:?}", + e + )) + })?; + + info!( + "Found {} BalanceUnlocked events in blocks {} to {}", + events.len(), + from_block, + current_block + ); + + // Process each event + for event in events { + let user_address = event.user; + debug!( + "Processing BalanceUnlocked event for user: {:?}", + user_address + ); + + // Check if user has proofs in queue + // + // Double-check that funds are still unlocked by calling the contract + // This is necessary because we query events over a block range, and the + // user’s state may have changed (e.g., funds could be locked again) after + // the event was emitted. Verifying on-chain ensures we don’t act on stale data. + // + // There is a brief period between the checks and the removal during which the user's + // proofs could be sent. This is acceptable, as the removal will not fail; + // it will simply clear the user's state. + if self.user_has_proofs_in_queue(user_address).await + && self.user_balance_is_unlocked(&user_address).await + { + info!( + "User {:?} has proofs in queue and funds are unlocked, proceeding to remove proofs and resetting UserState", + user_address + ); + self.remove_user_proofs_and_reset_state(user_address).await; + } + } + + Ok(current_block) + } + + /// Gets the current block number from Ethereum. + /// Retries on recoverable errors using exponential backoff up to `ETHEREUM_CALL_MAX_RETRIES` times: + /// (0,5 secs - 1 secs - 2 secs - 4 secs - 8 secs). + async fn get_current_block_number(&self) -> Result> { + retry_function( + || { + get_current_block_number_retryable( + &self.eth_http_provider, + &self.eth_http_provider_fallback, + ) + }, + ETHEREUM_CALL_MIN_RETRY_DELAY, + ETHEREUM_CALL_BACKOFF_FACTOR, + ETHEREUM_CALL_MAX_RETRIES, + ETHEREUM_CALL_MAX_RETRY_DELAY, + ) + .await + } + + /// Queries BalanceUnlocked events from the BatcherPaymentService contract. + /// Retries on recoverable errors using exponential backoff up to `ETHEREUM_CALL_MAX_RETRIES` times: + /// (0,5 secs - 1 secs - 2 secs - 4 secs - 8 secs). + async fn query_balance_unlocked_events( + &self, + from_block: U64, + to_block: U64, + ) -> Result< + Vec, + RetryError, + > { + retry_function( + || { + query_balance_unlocked_events_retryable( + &self.payment_service, + &self.payment_service_fallback, + from_block, + to_block, + ) + }, + ETHEREUM_CALL_MIN_RETRY_DELAY, + ETHEREUM_CALL_BACKOFF_FACTOR, + ETHEREUM_CALL_MAX_RETRIES, + ETHEREUM_CALL_MAX_RETRY_DELAY, + ) + .await + } + + async fn user_has_proofs_in_queue(&self, user_address: Address) -> bool { + let user_states = self.user_states.read().await; + let Some(user_state) = user_states.get(&user_address) else { + return false; + }; + + let Some(user_state_guard) = self + .try_user_lock_with_timeout(user_address, user_state.lock()) + .await + else { + return false; + }; + + user_state_guard.proofs_in_batch > 0 + } + + async fn remove_user_proofs_and_reset_state(&self, user_address: Address) { + let mut user_states = self.user_states.write().await; + + let mut batch_state_guard = match self + .try_batch_lock_with_timeout(self.batch_state.lock(), POLLING_EVENTS_LOCK_TIMEOUT) + .await + { + Some(guard) => guard, + None => { + error!( + "Failed to acquire batch lock when trying to remove proofs from user {:?}, skipping removal", + user_address + ); + self.metrics.inc_unlocked_event_polling_batch_lock_timeout(); + return; + } + }; + + let removed_entries = batch_state_guard + .batch_queue + .extract_if(|entry, _| entry.sender == user_address); + + // Notify user via websocket + for (entry, _) in removed_entries { + if let Some(ws_sink) = entry.messaging_sink { + let ws_sink_clone = ws_sink.clone(); + tokio::spawn(async move { + send_message( + ws_sink_clone.clone(), + SubmitProofResponseMessage::UserFundsUnlocked, + ) + .await; + }); + } + info!( + "Removed proof with nonce {} for user {:?} from batch queue", + entry.nonced_verification_data.nonce, user_address + ); + } + + user_states.remove(&user_address); + info!( + "Removed UserState entry for user {:?} after processing BalanceUnlocked event", + user_address + ); + } + + pub async fn listen_new_blocks_retryable( + self: Arc, + ) -> Result<(), RetryError> { + // Try to connect at least to one of the nodes (main or fallback) + let eth_ws_provider = Provider::connect(&self.eth_ws_url).await.ok(); + let eth_ws_provider_fallback = Provider::connect(&self.eth_ws_url_fallback).await.ok(); + if eth_ws_provider.is_none() { + warn!("Failed to instantiate Ethereum main websocket provider"); + } + if eth_ws_provider_fallback.is_none() { + warn!("Failed to instantiate fallback Ethereum websocket provider"); + } + if eth_ws_provider.is_none() && eth_ws_provider_fallback.is_none() { + return Err(RetryError::Transient( + BatcherError::EthereumSubscriptionError( + "Both Ethereum websocket providers failed to connect".to_string(), + ), + )); + } + + // Try to connect to one stream (main or fallback) + let mut stream = match ð_ws_provider { + Some(provider) => match provider.subscribe_blocks().await { + Ok(s) => Some(s), + Err(e) => { + warn!("Error subscribing to blocks on primary provider: {:?}", e); + None + } + }, + None => None, + }; + let mut stream_fallback = match ð_ws_provider_fallback { + Some(provider) => match provider.subscribe_blocks().await { + Ok(s) => Some(s), + Err(e) => { + warn!("Error subscribing to blocks on fallback provider: {:?}", e); + None + } + }, + None => None, + }; + if stream.is_none() && stream_fallback.is_none() { + return Err(RetryError::Transient( + BatcherError::EthereumSubscriptionError( + "Both Ethereum block subscriptions failed".to_string(), + ), + )); + } let last_seen_block = Mutex::::new(0); - while let Some(block) = tokio::select! { - block = stream.next() => block, - block = stream_fallback.next() => block, - } { + loop { + // Wait for both responses + let (block_main, block_fallback) = join!( + async { + match stream.as_mut() { + Some(s) => s.next().await, + None => None, + } + }, + async { + match stream_fallback.as_mut() { + Some(s) => s.next().await, + None => None, + } + } + ); + + let block = if let Some(block) = block_main { + block + } else if let Some(block) = block_fallback { + block + } else { + // Both rpc failed to respond, break and try to reconnect + break; + }; + let batcher = self.clone(); let block_number = block.number.unwrap_or_default(); let block_number = u64::try_from(block_number).unwrap_or_default(); @@ -370,10 +796,10 @@ impl Batcher { tokio::spawn(async move { if let Err(e) = batcher.handle_new_block(block_number).await { error!("Error when handling new block: {:?}", e); - }; + } }); } - error!("Failed to fetch blocks"); + error!("Both main and fallback Ethereum WS clients subscriptions have disconnected, will try to reconnect..."); Err(RetryError::Transient( BatcherError::EthereumSubscriptionError("Could not get new blocks".to_string()), @@ -490,6 +916,11 @@ impl Batcher { .handle_submit_proof_msg(msg, ws_conn_sink) .await } + ClientMessage::GetLastMaxFee(address) => { + self.clone() + .handle_get_last_max_fee(address, ws_conn_sink) + .await + } } } @@ -498,7 +929,8 @@ impl Batcher { mut address: Address, ws_conn_sink: WsMessageSink, ) -> Result<(), Error> { - if self.is_nonpaying(&address) { + // If the address is not paying, we will return the nonce of the aligned_payment_address + if !self.has_to_pay(&address) { info!("Handling nonpaying message"); let Some(non_paying_config) = self.non_paying_config.as_ref() else { warn!( @@ -518,8 +950,35 @@ impl Batcher { } let cached_user_nonce = { - let batch_state_lock = self.batch_state.lock().await; - batch_state_lock.get_user_nonce(&address).await + let user_states_guard = match timeout( + MESSAGE_HANDLER_LOCK_TIMEOUT, + self.user_states.read(), + ) + .await + { + Ok(guard) => guard, + Err(_) => { + warn!("User states read lock acquisition timed out in handle_get_nonce_for_address_msg"); + self.metrics.inc_message_handler_user_states_lock_timeouts(); + send_message(ws_conn_sink, GetNonceResponseMessage::ServerBusy).await; + return Ok(()); + } + }; + let user_state_ref = user_states_guard.get(&address).cloned(); + match user_state_ref { + Some(user_state_ref) => { + let Some(user_state_guard) = self + .try_user_lock_with_timeout(address, user_state_ref.lock()) + .await + else { + send_message(ws_conn_sink.clone(), GetNonceResponseMessage::ServerBusy) + .await; + return Ok(()); + }; + Some(user_state_guard.nonce) + } + None => None, + } }; let user_nonce = if let Some(user_nonce) = cached_user_nonce { @@ -550,148 +1009,191 @@ impl Batcher { Ok(()) } - async fn handle_submit_proof_msg( + async fn handle_get_last_max_fee( self: Arc, - client_msg: Box, + mut address: Address, ws_conn_sink: WsMessageSink, ) -> Result<(), Error> { - let msg_nonce = client_msg.verification_data.nonce; - debug!("Received message with nonce: {msg_nonce:?}"); - self.metrics.received_proofs.inc(); + // If the address is not paying, we will return the last max fee of the aligned_payment_address + if !self.has_to_pay(&address) { + info!("Handling nonpaying message"); + let Some(non_paying_config) = self.non_paying_config.as_ref() else { + warn!( + "There isn't a non-paying configuration loaded. This message will be ignored" + ); + send_message( + ws_conn_sink.clone(), + GetLastMaxFeeResponseMessage::InvalidRequest( + "There isn't a non-paying configuration loaded.".to_string(), + ), + ) + .await; + return Ok(()); + }; + let replacement_addr = non_paying_config.replacement.address(); + address = replacement_addr; + } - // * ---------------------------------------------------* - // * Perform validations over the message * - // * ---------------------------------------------------* + let user_states_guard = match timeout(MESSAGE_HANDLER_LOCK_TIMEOUT, self.user_states.read()) + .await + { + Ok(guard) => guard, + Err(_) => { + warn!("User states read lock acquisition timed out in handle_get_last_max_fee_for_address_msg"); + self.metrics.inc_message_handler_user_states_lock_timeouts(); + send_message(ws_conn_sink, GetLastMaxFeeResponseMessage::ServerBusy).await; + return Ok(()); + } + }; - // This check does not save against "Holesky" and "HoleskyStage", since both are chain_id 17000 - let msg_chain_id = client_msg.verification_data.chain_id; - if msg_chain_id != self.chain_id { - warn!("Received message with incorrect chain id: {msg_chain_id}"); + let Some(usr_ref) = user_states_guard.get(&address).cloned() else { + drop(user_states_guard); send_message( ws_conn_sink.clone(), - SubmitProofResponseMessage::InvalidChainId, + GetLastMaxFeeResponseMessage::LastMaxFee(U256::MAX), ) .await; - self.metrics.user_error(&["invalid_chain_id", ""]); return Ok(()); - } + }; - // This checks saves against "Holesky" and "HoleskyStage", since each one has a different payment service address - let msg_payment_service_addr = client_msg.verification_data.payment_service_addr; - if msg_payment_service_addr != self.payment_service.address() { - warn!("Received message with incorrect payment service address: {msg_payment_service_addr}"); + let Some(usr_lock) = self + .try_user_lock_with_timeout(address, usr_ref.lock()) + .await + else { + drop(user_states_guard); send_message( ws_conn_sink.clone(), - SubmitProofResponseMessage::InvalidPaymentServiceAddress( - msg_payment_service_addr, - self.payment_service.address(), - ), + GetLastMaxFeeResponseMessage::ServerBusy, ) .await; - self.metrics - .user_error(&["invalid_payment_service_address", ""]); return Ok(()); - } + }; - info!("Verifying message signature..."); - let Ok(addr) = client_msg.verify_signature() else { - error!("Signature verification error"); - send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::InvalidSignature, - ) - .await; - self.metrics.user_error(&["invalid_signature", ""]); - return Ok(()); + let proofs_in_queue = usr_lock.proofs_in_batch; + let max_fee = if proofs_in_queue > 0 { + usr_lock.last_max_fee_limit + } else { + U256::MAX }; - info!("Message signature verified"); + drop(usr_lock); + drop(user_states_guard); - let proof_size = client_msg.verification_data.verification_data.proof.len(); - if proof_size > self.max_proof_size { - error!("Proof size exceeds the maximum allowed size."); - send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::ProofTooLarge, - ) - .await; - self.metrics.user_error(&["proof_too_large", ""]); - return Ok(()); - } + send_message( + ws_conn_sink.clone(), + GetLastMaxFeeResponseMessage::LastMaxFee(max_fee), + ) + .await; - let nonced_verification_data = client_msg.verification_data.clone(); + Ok(()) + } - // When pre-verification is enabled, batcher will verify proofs for faster feedback with clients - if self.pre_verification_is_enabled { - let verification_data = &nonced_verification_data.verification_data; - if self - .is_verifier_disabled(verification_data.proving_system) - .await - { - warn!( - "Verifier for proving system {} is disabled, skipping verification", - verification_data.proving_system - ); - send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::DisabledVerifier( - verification_data.proving_system, - )), - ) - .await; - self.metrics.user_error(&[ - "disabled_verifier", - &format!("{}", verification_data.proving_system), - ]); - return Ok(()); - } + /// Returns the Aligned-funded address that will be used to pay for proofs when users don't need to pay themselves. + /// This function assumes that the non-paying configuration is set. + fn aligned_payment_address(&self) -> Address { + self.non_paying_config + .as_ref() + .map(|config| config.replacement.address()) + .unwrap() + } - if !zk_utils::verify(verification_data).await { - error!("Invalid proof detected. Verification failed"); - send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::RejectedProof), - ) - .await; - self.metrics.user_error(&[ - "rejected_proof", - &format!("{}", verification_data.proving_system), - ]); - return Ok(()); - } + async fn handle_submit_proof_msg( + self: Arc, + client_msg: Box, + ws_conn_sink: WsMessageSink, + ) -> Result<(), Error> { + let msg_nonce = client_msg.verification_data.nonce; + debug!("Received message with nonce: {msg_nonce:?}"); + self.metrics.received_proofs.inc(); + + // * ---------------------------------------------------* + // * Perform validations over the message * + // * ---------------------------------------------------* + + // All check functions sends the error to the metrics server and logs it + // if they return false + + if !self.msg_chain_id_is_valid(&client_msg, &ws_conn_sink).await { + return Ok(()); } - if self.is_nonpaying(&addr) { - return self - .handle_nonpaying_msg(ws_conn_sink.clone(), &client_msg) - .await; + if !self + .msg_batcher_payment_addr_is_valid(&client_msg, &ws_conn_sink) + .await + { + return Ok(()); } - info!("Handling paying message"); + if !self + .msg_proof_size_is_valid(&client_msg, &ws_conn_sink) + .await + { + return Ok(()); + } - // We don't need a batch state lock here, since if the user locks its funds - // after the check, some blocks should pass until he can withdraw. - // It is safe to do just do this here. - if self.user_balance_is_unlocked(&addr).await { + let Some(addr_in_msg) = self + .msg_signature_is_valid(&client_msg, &ws_conn_sink) + .await + else { + return Ok(()); + }; + + let addr; + let signature = client_msg.signature; + let nonced_verification_data; + + if self.has_to_pay(&addr_in_msg) { + addr = addr_in_msg; + nonced_verification_data = client_msg.verification_data.clone(); + } else { + info!("Generating non-paying data"); + // If the user is not required to pay, substitute their address with a pre-funded Aligned address + addr = self.aligned_payment_address(); + // Substitute the max_fee to a high enough value to cover the gas cost of the proof + let mut aux_verification_data = client_msg.verification_data.clone(); + aux_verification_data.max_fee = (DEFAULT_MAX_FEE_PER_PROOF * 100).into(); // 2_000 gas per proof * 100 gwei gas price (upper bound) * 100 to make sure it is enough + nonced_verification_data = aux_verification_data + } + + // Before moving on to process the message, verify that the max fee covers the + // minimum max fee allowed. This prevents users from spamming with very low max fees + // the min max fee is enforced by checking if it can cover a batch of [`amount_of_proofs_for_min_max_fee`] + let msg_max_fee = nonced_verification_data.max_fee; + if !self.msg_covers_minimum_max_fee(msg_max_fee).await { send_message( ws_conn_sink.clone(), - SubmitProofResponseMessage::InsufficientBalance(addr), + SubmitProofResponseMessage::UnderpricedProof, ) .await; - self.metrics.user_error(&["insufficient_balance", ""]); + return Ok(()); + }; + + // We don't need a batch state lock here, since if the user locks its funds + // after the check, some blocks should pass until he can withdraw. + // It is safe to do just do this here. + if !self.msg_user_balance_is_locked(&addr, &ws_conn_sink).await { return Ok(()); } - // We aquire the lock first only to query if the user is already present and the lock is dropped. + info!("Handling message, locking user state"); + + // We acquire the lock first only to query if the user is already present and the lock is dropped. // If it was not present, then the user nonce is queried to the Aligned contract. // Lastly, we get a lock of the batch state again and insert the user state if it was still missing. - let is_user_in_state: bool; + let is_user_in_state = match timeout(MESSAGE_HANDLER_LOCK_TIMEOUT, self.user_states.read()) + .await { - let batch_state_lock = self.batch_state.lock().await; - is_user_in_state = batch_state_lock.user_states.contains_key(&addr); - } + Ok(user_states_guard) => user_states_guard.contains_key(&addr), + Err(_) => { + warn!("User states read lock acquisition timed out in handle_submit_proof_msg (user check)"); + self.metrics.inc_message_handler_user_states_lock_timeouts(); + send_message(ws_conn_sink, SubmitProofResponseMessage::ServerBusy).await; + return Ok(()); + } + }; if !is_user_in_state { + // If the user state was not present, we need to get the nonce from the Ethereum contract let ethereum_user_nonce = match self.get_user_nonce_from_ethereum(addr).await { Ok(ethereum_user_nonce) => ethereum_user_nonce, Err(e) => { @@ -707,40 +1209,36 @@ impl Batcher { return Ok(()); } }; - let user_state = UserState::new(ethereum_user_nonce); - let mut batch_state_lock = self.batch_state.lock().await; - batch_state_lock - .user_states - .entry(addr) - .or_insert(user_state); + debug!("User state for address {addr:?} not found, creating a new one"); + // We add a dummy user state to grab a lock on the user state + let dummy_user_state = UserState::new(ethereum_user_nonce); + match timeout(MESSAGE_HANDLER_LOCK_TIMEOUT, self.user_states.write()).await { + Ok(mut user_states_guard) => { + user_states_guard.insert(addr, Arc::new(Mutex::new(dummy_user_state))); + } + Err(_) => { + warn!("User states write lock acquisition timed out in handle_submit_proof_msg (user creation)"); + self.metrics.inc_message_handler_user_states_lock_timeouts(); + send_message(ws_conn_sink, SubmitProofResponseMessage::ServerBusy).await; + return Ok(()); + } + }; + debug!("Dummy user state for address {addr:?} created"); } - // * ---------------------------------------------------* - // * Perform validations over user state * - // * ---------------------------------------------------* - - let Some(user_balance) = self.get_user_balance(&addr).await else { - error!("Could not get balance for address {addr:?}"); - send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::EthRpcError, - ) - .await; - self.metrics.user_error(&["eth_rpc_error", ""]); - return Ok(()); + let user_state_ref = match timeout(MESSAGE_HANDLER_LOCK_TIMEOUT, self.user_states.read()) + .await + { + Ok(user_states_guard) => user_states_guard.get(&addr).cloned(), + Err(_) => { + warn!("User states read lock acquisition timed out in handle_submit_proof_msg (user retrieval)"); + self.metrics.inc_message_handler_user_states_lock_timeouts(); + send_message(ws_conn_sink, SubmitProofResponseMessage::ServerBusy).await; + return Ok(()); + } }; - - // For now on until the message is fully processed, the batch state is locked - // This is needed because we need to query the user state to make validations and - // finally add the proof to the batch queue. - - let batch_state_lock = self.batch_state.lock().await; - - let msg_max_fee = nonced_verification_data.max_fee; - let Some(user_last_max_fee_limit) = - batch_state_lock.get_user_last_max_fee_limit(&addr).await - else { - std::mem::drop(batch_state_lock); + let Some(user_state_ref) = user_state_ref else { + error!("This should never happen, user state has previously been inserted if it didn't exist"); send_message( ws_conn_sink.clone(), SubmitProofResponseMessage::AddToBatchError, @@ -750,20 +1248,36 @@ impl Batcher { return Ok(()); }; - let Some(user_accumulated_fee) = batch_state_lock.get_user_total_fees_in_queue(&addr).await + // We acquire the lock on the user state, now everything will be processed sequentially + let Some(mut user_state_guard) = self + .try_user_lock_with_timeout(addr, user_state_ref.lock()) + .await else { - std::mem::drop(batch_state_lock); + send_message(ws_conn_sink.clone(), SubmitProofResponseMessage::ServerBusy).await; + return Ok(()); + }; + + // * ---------------------------------------------------* + // * Perform validations over user state * + // * ---------------------------------------------------* + + let Some(user_balance) = self.get_user_balance(&addr).await else { + error!("Could not get balance for address {addr:?}"); send_message( ws_conn_sink.clone(), - SubmitProofResponseMessage::AddToBatchError, + SubmitProofResponseMessage::EthRpcError, ) .await; - self.metrics.user_error(&["batcher_state_error", ""]); + self.metrics.user_error(&["eth_rpc_error", ""]); return Ok(()); }; + let msg_max_fee = nonced_verification_data.max_fee; + let user_last_max_fee_limit = user_state_guard.last_max_fee_limit; + + let user_accumulated_fee = user_state_guard.total_fees_in_queue; + if !self.verify_user_has_enough_balance(user_balance, user_accumulated_fee, msg_max_fee) { - std::mem::drop(batch_state_lock); send_message( ws_conn_sink.clone(), SubmitProofResponseMessage::InsufficientBalance(addr), @@ -773,21 +1287,9 @@ impl Batcher { return Ok(()); } - let cached_user_nonce = batch_state_lock.get_user_nonce(&addr).await; - let Some(expected_nonce) = cached_user_nonce else { - error!("Failed to get cached user nonce: User not found in user states, but it should have been already inserted"); - std::mem::drop(batch_state_lock); - send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::AddToBatchError, - ) - .await; - self.metrics.user_error(&["batcher_state_error", ""]); - return Ok(()); - }; + let expected_nonce = user_state_guard.nonce; if expected_nonce < msg_nonce { - std::mem::drop(batch_state_lock); warn!("Invalid nonce for address {addr}, expected nonce: {expected_nonce:?}, received nonce: {msg_nonce:?}"); send_message( ws_conn_sink.clone(), @@ -800,22 +1302,26 @@ impl Batcher { // In this case, the message might be a replacement one. If it is valid, // we replace the old entry with the new from the replacement message. + // Notice this stops the normal flow of the handle_submit_proof. + // We pass the already-held user_state_guard to avoid double-locking + // This will take the batch lock internally if expected_nonce > msg_nonce { info!("Possible replacement message received: Expected nonce {expected_nonce:?} - message nonce: {msg_nonce:?}"); self.handle_replacement_message( - batch_state_lock, nonced_verification_data, ws_conn_sink.clone(), client_msg.signature, addr, + user_state_guard, ) .await; return Ok(()); } + // We check this after replacement logic because if user wants to replace a proof, their + // new_max_fee must be greater or equal than old_max_fee if msg_max_fee > user_last_max_fee_limit { - std::mem::drop(batch_state_lock); warn!("Invalid max fee for address {addr}, had fee limit of {user_last_max_fee_limit:?}, sent {msg_max_fee:?}"); send_message( ws_conn_sink.clone(), @@ -826,6 +1332,127 @@ impl Batcher { return Ok(()); } + if !self + .verify_proof_if_enabled( + &nonced_verification_data.verification_data, + ws_conn_sink.clone(), + ) + .await + { + return Ok(()); + } + + // * ---------------------------------------------------------------------* + // * Perform validation over batcher queue * + // * ---------------------------------------------------------------------* + + let Some(mut batch_state_lock) = self + .try_batch_lock_with_timeout(self.batch_state.lock(), MESSAGE_HANDLER_LOCK_TIMEOUT) + .await + else { + send_message(ws_conn_sink.clone(), SubmitProofResponseMessage::ServerBusy).await; + return Ok(()); + }; + if batch_state_lock.is_queue_full() { + debug!("Batch queue is full. Evaluating if the incoming proof can replace a lower-priority entry."); + + let new_proof_fee = nonced_verification_data.max_fee; + let mut evicted_entry = None; + + // Collect addresses of potential candidates (lightweight) + let eviction_candidates: Vec
= batch_state_lock + .batch_queue + .iter() + .filter_map(|(entry, _)| { + if new_proof_fee > entry.nonced_verification_data.max_fee { + Some(entry.sender) + } else { + None + } + }) + .collect(); + + // Try to find any candidate whose lock we can acquire and immediately process them + for candidate_addr in eviction_candidates { + if let Some(user_state_arc) = + self.user_states.read().await.get(&candidate_addr).cloned() + { + if let Ok(mut user_guard) = user_state_arc.try_lock() { + // Found someone whose lock we can get - now find and remove their entry + let entries_to_check: Vec<_> = batch_state_lock + .batch_queue + .iter() + .filter(|(entry, _)| { + entry.sender == candidate_addr + && new_proof_fee > entry.nonced_verification_data.max_fee + }) + .map(|(entry, _)| entry.clone()) + .collect(); + + if let Some(target_entry) = entries_to_check.into_iter().next() { + let removed_entry = batch_state_lock + .batch_queue + .remove(&target_entry) + .map(|(e, _)| e); + + if let Some(removed) = removed_entry { + info!( + "Incoming proof (nonce: {}, fee: {}) replacing proof from sender {} with nonce {} (fee: {})", + nonced_verification_data.nonce, + new_proof_fee, + removed.sender, + removed.nonced_verification_data.nonce, + removed.nonced_verification_data.max_fee + ); + + // Update the evicted user's state immediately + self.update_evicted_user_state_with_lock( + &removed, + &batch_state_lock.batch_queue, + &mut user_guard, + ) + .await; + + if let Some(ref removed_entry_ws) = removed.messaging_sink { + let ws_sink = removed_entry_ws.clone(); + // Usually we just drop the locks, but this time + // We still need to keep them since we are doing more work + // So we send the message in an async manner + tokio::spawn(async move { + send_message( + ws_sink, + SubmitProofResponseMessage::UnderpricedProof, + ) + .await; + }); + } + + evicted_entry = Some(removed); + break; + } + } + } + } + } + + // Check if we successfully evicted someone + if evicted_entry.is_none() { + // No lock could be acquired or no evictable entry found - reject this proof + info!( + "Incoming proof (nonce: {}, fee: {}) rejected - queue is full and no evictable entries found.", + nonced_verification_data.nonce, + new_proof_fee + ); + std::mem::drop(batch_state_lock); + send_message( + ws_conn_sink.clone(), + SubmitProofResponseMessage::UnderpricedProof, + ) + .await; + return Ok(()); + } + } + // * ---------------------------------------------------------------------* // * Add message data into the queue and update user state * // * ---------------------------------------------------------------------* @@ -833,9 +1460,9 @@ impl Batcher { if let Err(e) = self .add_to_batch( batch_state_lock, - nonced_verification_data, + &nonced_verification_data, ws_conn_sink.clone(), - client_msg.signature, + signature, addr, ) .await @@ -846,7 +1473,13 @@ impl Batcher { return Ok(()); }; - info!("Verification data message handled"); + // Update user state now that entry has been successfully added to batch + let max_fee = nonced_verification_data.max_fee; + let nonce = nonced_verification_data.nonce; + user_state_guard.nonce = nonce + U256::one(); + user_state_guard.last_max_fee_limit = max_fee; + user_state_guard.proofs_in_batch += 1; + user_state_guard.total_fees_in_queue += max_fee; Ok(()) } @@ -875,16 +1508,25 @@ impl Batcher { /// Returns true if the message was replaced in the batch, false otherwise async fn handle_replacement_message( &self, - mut batch_state_lock: MutexGuard<'_, BatchState>, nonced_verification_data: NoncedVerificationData, ws_conn_sink: WsMessageSink, signature: Signature, addr: Address, + mut user_state_guard: tokio::sync::MutexGuard<'_, UserState>, ) { let replacement_max_fee = nonced_verification_data.max_fee; let nonce = nonced_verification_data.nonce; - let Some(entry) = batch_state_lock.get_entry(addr, nonce) else { - std::mem::drop(batch_state_lock); + let Some(mut batch_state_guard) = self + .try_batch_lock_with_timeout(self.batch_state.lock(), MESSAGE_HANDLER_LOCK_TIMEOUT) + .await + else { + drop(user_state_guard); + send_message(ws_conn_sink.clone(), SubmitProofResponseMessage::ServerBusy).await; + return; + }; + let Some(entry) = batch_state_guard.get_entry(addr, nonce) else { + drop(batch_state_guard); + drop(user_state_guard); warn!("Invalid nonce for address {addr}. Queue entry with nonce {nonce} not found"); send_message( ws_conn_sink.clone(), @@ -895,22 +1537,38 @@ impl Batcher { return; }; + // Validate that the max fee is at least higher or equal to the original fee + a configurable min_bump_percentage let original_max_fee = entry.nonced_verification_data.max_fee; - if original_max_fee > replacement_max_fee { - std::mem::drop(batch_state_lock); - warn!("Invalid replacement message for address {addr}, had max fee: {original_max_fee:?}, received fee: {replacement_max_fee:?}"); + let min_bump = + original_max_fee + (original_max_fee * self.min_bump_percentage) / U256::from(100); + + if replacement_max_fee < min_bump { + drop(batch_state_guard); + drop(user_state_guard); + info!("Invalid replacement message for address {addr}, had max fee: {original_max_fee:?}, received fee: {replacement_max_fee:?}, minimum required: {min_bump:?}"); send_message( ws_conn_sink.clone(), - SubmitProofResponseMessage::InvalidReplacementMessage, + SubmitProofResponseMessage::UnderpricedProof, ) .await; - self.metrics - .user_error(&["invalid_replacement_message", ""]); + self.metrics.user_error(&["insufficient_fee_increase", ""]); return; } info!("Replacing message for address {addr} with nonce {nonce} and max fee {replacement_max_fee}"); + if !self + .verify_proof_if_enabled( + &nonced_verification_data.verification_data, + ws_conn_sink.clone(), + ) + .await + { + drop(batch_state_guard); + drop(user_state_guard); + return; + } + // The replacement entry is built from the old entry and validated for then to be replaced let mut replacement_entry = entry.clone(); replacement_entry.signature = signature; @@ -921,13 +1579,26 @@ impl Batcher { // Close old sink in old entry and replace it with the new one { if let Some(messaging_sink) = replacement_entry.messaging_sink { - let mut old_sink = messaging_sink.write().await; - if let Err(e) = old_sink.close().await { - // we dont want to exit here, just log the error - warn!("Error closing sink: {e:?}"); - } else { - info!("Old websocket sink closed"); - } + tokio::spawn(async move { + // Before closing the old sink, send a message to the client notifying that their proof + // has been replaced + send_message( + messaging_sink.clone(), + SubmitProofResponseMessage::ProofReplaced, + ) + .await; + + // Note: This shuts down the sink, but does not wait for it to close, so the other side + // might not receive the message. However, we don't want to wait here since it would + // block the batcher. + let mut old_sink = messaging_sink.write().await; + if let Err(e) = old_sink.close().await { + // we dont want to exit here, just log the error + warn!("Error closing sink: {e:?}"); + } else { + info!("Old websocket sink closed"); + } + }); } else { warn!( "Old websocket sink was empty. This should only happen in testing environments" @@ -936,8 +1607,9 @@ impl Batcher { } replacement_entry.messaging_sink = Some(ws_conn_sink.clone()); - if !batch_state_lock.replacement_entry_is_valid(&replacement_entry) { - std::mem::drop(batch_state_lock); + if !batch_state_guard.replacement_entry_is_valid(&replacement_entry) { + drop(batch_state_guard); + drop(user_state_guard); warn!("Invalid replacement message"); send_message( ws_conn_sink.clone(), @@ -958,45 +1630,66 @@ impl Batcher { // note that the entries are considered equal for the priority queue // if they have the same nonce and sender, so we can remove the old entry // by calling remove with the new entry - batch_state_lock.batch_queue.remove(&replacement_entry); - batch_state_lock.batch_queue.push( + batch_state_guard.batch_queue.remove(&replacement_entry); + batch_state_guard.batch_queue.push( replacement_entry.clone(), BatchQueueEntryPriority::new(replacement_max_fee, nonce), ); - // update max_fee_limit - let updated_max_fee_limit_in_batch = batch_state_lock.get_user_min_fee_in_batch(&addr); - if batch_state_lock - .update_user_max_fee_limit(&addr, updated_max_fee_limit_in_batch) - .is_none() + // update max_fee_limit and total_fees_in_queue using already held user_state_guard + let updated_max_fee_limit_in_batch = batch_state_guard.get_user_min_fee_in_batch(&addr); + user_state_guard.last_max_fee_limit = updated_max_fee_limit_in_batch; + + let fee_difference = replacement_max_fee - original_max_fee; + user_state_guard.total_fees_in_queue += fee_difference; + } + + async fn verify_proof_if_enabled( + &self, + verification_data: &aligned_sdk::common::types::VerificationData, + ws_conn_sink: WsMessageSink, + ) -> bool { + if !self.pre_verification_is_enabled { + return true; + } + + if self + .is_verifier_disabled(verification_data.proving_system) + .await { - std::mem::drop(batch_state_lock); - warn!("User state for address {addr:?} was not present in batcher user states, but it should be"); + warn!( + "Verifier for proving system {} is disabled", + verification_data.proving_system + ); send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::AddToBatchError, + ws_conn_sink, + SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::DisabledVerifier( + verification_data.proving_system, + )), ) .await; - return; - }; + self.metrics.user_error(&[ + "disabled_verifier", + &format!("{}", verification_data.proving_system), + ]); + return false; + } - // update total_fees_in_queue - if batch_state_lock - .update_user_total_fees_in_queue_of_replacement_message( - &addr, - original_max_fee, - replacement_max_fee, - ) - .is_none() - { - std::mem::drop(batch_state_lock); - warn!("User state for address {addr:?} was not present in batcher user states, but it should be"); + if !zk_utils::verify(verification_data).await { + error!("Invalid proof detected. Verification failed"); send_message( - ws_conn_sink.clone(), - SubmitProofResponseMessage::AddToBatchError, + ws_conn_sink, + SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::RejectedProof), ) .await; - }; + self.metrics.user_error(&[ + "rejected_proof", + &format!("{}", verification_data.proving_system), + ]); + return false; + } + + true } async fn disabled_verifiers(&self) -> Result> { @@ -1038,7 +1731,7 @@ impl Batcher { async fn add_to_batch( &self, mut batch_state_lock: MutexGuard<'_, BatchState>, - verification_data: NoncedVerificationData, + verification_data: &NoncedVerificationData, ws_conn_sink: WsMessageSink, proof_submitter_sig: Signature, proof_submitter_addr: Address, @@ -1051,7 +1744,7 @@ impl Batcher { let nonce = verification_data.nonce; batch_state_lock.batch_queue.push( BatchQueueEntry::new( - verification_data, + verification_data.clone(), verification_data_comm, ws_conn_sink, proof_submitter_sig, @@ -1066,59 +1759,10 @@ impl Batcher { self.metrics .update_queue_metrics(queue_len as i64, queue_size_bytes as i64); - info!("Current batch queue length: {}", queue_len); - - let mut proof_submitter_addr = proof_submitter_addr; - - // If the proof submitter is the nonpaying one, we should update the state - // of the replacement address. - proof_submitter_addr = if self.is_nonpaying(&proof_submitter_addr) { - self.get_nonpaying_replacement_addr() - .unwrap_or(proof_submitter_addr) - } else { - proof_submitter_addr - }; - - let Some(user_proof_count) = batch_state_lock - .get_user_proof_count(&proof_submitter_addr) - .await - else { - error!("User state of address {proof_submitter_addr} was not found when trying to update user state. This user state should have been present"); - std::mem::drop(batch_state_lock); - return Err(BatcherError::AddressNotFoundInUserStates( - proof_submitter_addr, - )); - }; - - let Some(current_total_fees_in_queue) = batch_state_lock - .get_user_total_fees_in_queue(&proof_submitter_addr) - .await - else { - error!("User state of address {proof_submitter_addr} was not found when trying to update user state. This user state should have been present"); - std::mem::drop(batch_state_lock); - return Err(BatcherError::AddressNotFoundInUserStates( - proof_submitter_addr, - )); - }; - - // User state is updated - if batch_state_lock - .update_user_state( - &proof_submitter_addr, - nonce + U256::one(), - max_fee, - user_proof_count + 1, - current_total_fees_in_queue + max_fee, - ) - .is_none() - { - error!("User state of address {proof_submitter_addr} was not found when trying to update user state. This user state should have been present"); - std::mem::drop(batch_state_lock); - return Err(BatcherError::AddressNotFoundInUserStates( - proof_submitter_addr, - )); - }; - + info!("Current batch queue length: {}", queue_len); + + // User state will be updated by the caller who already has the lock + Ok(()) } @@ -1136,8 +1780,8 @@ impl Batcher { /// an empty batch, even if the block interval has been reached. /// Once the batch meets the conditions for submission, the finalized batch is then passed to the /// `finalize_batch` function. - /// This function doesn't remove the proofs from the queue. - async fn is_batch_ready( + /// This function removes the proofs from the queue immediately to avoid race conditions. + async fn extract_batch_if_ready( &self, block_number: u64, gas_price: U256, @@ -1173,9 +1817,12 @@ impl Batcher { // Set the batch posting flag to true *batch_posting = true; - let batch_queue_copy = batch_state_lock.batch_queue.clone(); - let finalized_batch = batch_queue::try_build_batch( - batch_queue_copy, + + // PHASE 1: Extract the batch directly from the queue to avoid race conditions + let mut batch_state_lock = batch_state_lock; // Make mutable + + let finalized_batch = batch_queue::extract_batch_directly( + &mut batch_state_lock.batch_queue, gas_price, self.max_batch_byte_size, self.max_batch_proof_qty, @@ -1195,66 +1842,205 @@ impl Batcher { }) .ok()?; + info!( + "Extracted {} proofs from queue for batch processing", + finalized_batch.len() + ); + + // Update queue metrics after successful batch extraction + let queue_len = batch_state_lock.batch_queue.len(); + match calculate_batch_size(&batch_state_lock.batch_queue) { + Ok(queue_size_bytes) => { + self.metrics + .update_queue_metrics(queue_len as i64, queue_size_bytes as i64); + } + Err(e) => { + error!( + "Failed to calculate batch size for queue metrics update: {:?}", + e + ); + // Still update queue length metric, set size to 0 due to calculation error + self.metrics.update_queue_metrics(queue_len as i64, 0); + } + } + Some(finalized_batch) } - /// Takes the submitted proofs and removes them from the queue. - /// This function should be called only AFTER the submission was confirmed onchain - async fn remove_proofs_from_queue( + /// Updates user states based on current queue state after batch operations. + /// Used for both successful batch confirmation and failed batch restoration. + /// Updates proofs_in_batch, total_fees_in_queue, and last_max_fee_limit based on current queue state. + /// Uses proper lock ordering: user_state -> batch_state to avoid deadlocks. + async fn update_user_states_from_queue_state( &self, - finalized_batch: Vec, + affected_users: std::collections::HashSet
, ) -> Result<(), BatcherError> { - info!("Removing proofs from queue..."); + // Update each user's state with proper lock ordering + for addr in affected_users { + if let Some(user_state) = self.user_states.read().await.get(&addr).cloned() { + let mut user_state_guard = user_state.lock().await; // First: user lock + let batch_state_lock = self.batch_state.lock().await; // Second: batch lock + + // Calculate what each user's state should be based on current queue contents + let current_queue_user_states = + self.calculate_new_user_states_data(&batch_state_lock.batch_queue); + + if let Some((proof_count, min_max_fee_in_queue, total_fees_in_queue)) = + current_queue_user_states.get(&addr) + { + // User has proofs in queue - use calculated values + user_state_guard.proofs_in_batch = *proof_count; + user_state_guard.total_fees_in_queue = *total_fees_in_queue; + user_state_guard.last_max_fee_limit = *min_max_fee_in_queue; + } else { + // User not found in queue - reset to defaults + user_state_guard.proofs_in_batch = 0; + user_state_guard.total_fees_in_queue = U256::zero(); + user_state_guard.last_max_fee_limit = U256::MAX; + } + + drop(batch_state_lock); // Release batch lock + drop(user_state_guard); // Release user lock + } else { + warn!("User state not found for address {}", addr); + } + } + + Ok(()) + } + + /// Cleans up user states after successful batch submission. + /// Resets last_max_fee_limit to U256::MAX for users who had proofs in the submitted batch + /// but now have no proofs left in the queue. + async fn cleanup_user_states_after_successful_submission( + &self, + finalized_batch: &[BatchQueueEntry], + ) { + use std::collections::HashSet; + + // Get unique users from the submitted batch + let users_in_batch: HashSet
= + finalized_batch.iter().map(|entry| entry.sender).collect(); + + // Check current queue state to see which users still have proofs + let batch_state_lock = match self.batch_state.try_lock() { + Ok(lock) => lock, + Err(_) => { + // If we can't get the lock, skip cleanup - it's not critical + warn!("Could not acquire batch state lock for user state cleanup"); + return; + } + }; + + let current_user_states = + self.calculate_new_user_states_data(&batch_state_lock.batch_queue); + + // For each user in the batch, check if they now have no proofs left + for user_addr in users_in_batch { + if !current_user_states.contains_key(&user_addr) { + // User has no proofs left in queue - reset their max_fee_limit + if let Some(user_state_ref) = self.user_states.read().await.get(&user_addr).cloned() + { + if let Ok(mut user_state_guard) = user_state_ref.try_lock() { + user_state_guard.last_max_fee_limit = U256::max_value(); + } + // If we can't get the lock, skip this user - not critical + } + } + } + } + + /// Restores proofs to the queue after batch submission failure. + /// Uses similar logic to user proof submission, including handling queue capacity. + /// NOTE: Nonce ordering is preserved by the priority queue's eviction order: + /// - Lower fees get evicted first + /// - For same fees, higher nonces get evicted first + /// This ensures we never have nonce N+1 without nonce N in the queue. + async fn restore_proofs_after_batch_failure(&self, failed_batch: &[BatchQueueEntry]) { + info!( + "Restoring {} proofs to queue after batch failure", + failed_batch.len() + ); + + let user_states_lock = self.user_states.write().await; let mut batch_state_lock = self.batch_state.lock().await; + let mut restored_entries = Vec::new(); - finalized_batch.iter().for_each(|entry| { - if batch_state_lock.batch_queue.remove(entry).is_none() { - // If this happens, we have a bug in our code - error!("Some proofs were not found in the queue. This should not happen."); + for entry in failed_batch { + let priority = BatchQueueEntryPriority::new( + entry.nonced_verification_data.max_fee, + entry.nonced_verification_data.nonce, + ); + + // Check if queue is full + if batch_state_lock.is_queue_full() { + // Use same logic as user submission - evict lowest priority if this one is higher + if let Some((lowest_entry, _)) = batch_state_lock.batch_queue.peek() { + let lowest_fee = lowest_entry.nonced_verification_data.max_fee; + let restore_fee = entry.nonced_verification_data.max_fee; + + if restore_fee > lowest_fee { + // Evict the lowest priority entry (preserves nonce ordering) + if let Some((evicted_entry, _)) = batch_state_lock.batch_queue.pop() { + warn!("Queue full during restoration, evicting proof from sender {} with nonce {} (fee: {})", + evicted_entry.sender, evicted_entry.nonced_verification_data.nonce, evicted_entry.nonced_verification_data.max_fee); + + // Update user state for evicted entry + self.update_evicted_user_state_async( + &evicted_entry, + &batch_state_lock.batch_queue, + ) + .await; + + // Notify the evicted user via websocket + if let Some(evicted_ws_sink) = evicted_entry.messaging_sink { + connection::send_message( + evicted_ws_sink, + aligned_sdk::common::types::SubmitProofResponseMessage::UnderpricedProof, + ) + .await; + } + } + } else { + warn!("Queue full and restored proof has lower priority, dropping proof from sender {} with nonce {} (fee: {})", + entry.sender, entry.nonced_verification_data.nonce, entry.nonced_verification_data.max_fee); + continue; + } + } } - }); - - // now we calculate the new user_states - let new_user_states = // proofs, max_fee_limit, total_fees_in_queue - batch_state_lock.calculate_new_user_states_data(); - - let user_addresses: Vec
= batch_state_lock.user_states.keys().cloned().collect(); - let default_value = (0, U256::MAX, U256::zero()); - for addr in user_addresses.iter() { - let (proof_count, max_fee_limit, total_fees_in_queue) = - new_user_states.get(addr).unwrap_or(&default_value); - - // FIXME: The case where a the update functions return `None` can only happen when the user was not found - // in the `user_states` map should not really happen here, but doing this check so that we don't unwrap. - // Once https://github.com/yetanotherco/aligned_layer/issues/1046 is done we could return a more - // informative error. - - // Now we update the user states related to the batch (proof count in batch and min fee in batch) - batch_state_lock - .update_user_proof_count(addr, *proof_count) - .ok_or(BatcherError::QueueRemoveError( - "Could not update_user_proof_count".into(), - ))?; - batch_state_lock - .update_user_max_fee_limit(addr, *max_fee_limit) - .ok_or(BatcherError::QueueRemoveError( - "Could not update_user_max_fee_limit".into(), - ))?; - batch_state_lock - .update_user_total_fees_in_queue(addr, *total_fees_in_queue) - .ok_or(BatcherError::QueueRemoveError( - "Could not update_user_total_fees_in_queue".into(), - ))?; + + // Add the proof back to the queue + batch_state_lock.batch_queue.push(entry.clone(), priority); + restored_entries.push(entry); } - // Update metrics - let queue_len = batch_state_lock.batch_queue.len(); - let queue_size_bytes = calculate_batch_size(&batch_state_lock.batch_queue)?; + info!( + "Restored {} proofs to queue, new queue length: {}", + restored_entries.len(), + batch_state_lock.batch_queue.len() + ); - self.metrics - .update_queue_metrics(queue_len as i64, queue_size_bytes as i64); + // Get unique users from restored entries + let users_with_restored_proofs: std::collections::HashSet
= + restored_entries.iter().map(|entry| entry.sender).collect(); - Ok(()) + // At this point we have a valid queue with updated evicted users states + // Only auxiliary user data (max_min_fee) can be "inconsistent" + // but we can keep updating it without locking the queue + info!("Queue recovered from submission failure, resuming user processing and updating user states metadata"); + std::mem::drop(user_states_lock); + std::mem::drop(batch_state_lock); + + info!("Updating user states after proof restoration..."); + if let Err(e) = self + .update_user_states_from_queue_state(users_with_restored_proofs) + .await + { + error!( + "Failed to update user states after proof restoration: {:?}", + e + ); + } } /// Takes the finalized batch as input and: @@ -1267,13 +2053,12 @@ impl Batcher { async fn finalize_batch( &self, block_number: u64, - finalized_batch: Vec, + finalized_batch: &[BatchQueueEntry], gas_price: U256, ) -> Result<(), BatcherError> { let nonced_batch_verifcation_data: Vec = finalized_batch - .clone() - .into_iter() - .map(|entry| entry.nonced_verification_data) + .iter() + .map(|entry| entry.nonced_verification_data.clone()) .collect(); let batch_verification_data: Vec = nonced_batch_verifcation_data @@ -1286,9 +2071,8 @@ impl Batcher { info!("Finalizing batch. Length: {}", finalized_batch.len()); let batch_data_comm: Vec = finalized_batch - .clone() - .into_iter() - .map(|entry| entry.verification_data_commitment) + .iter() + .map(|entry| entry.verification_data_commitment.clone()) .collect(); let batch_merkle_tree: MerkleTree = @@ -1327,7 +2111,7 @@ impl Batcher { &batch_bytes, &batch_merkle_tree.root, leaves, - &finalized_batch, + finalized_batch, gas_price, ) .await @@ -1341,14 +2125,35 @@ impl Batcher { warn!("Failed to send task status to telemetry: {:?}", e); } - // decide if i want to flush the queue: match e { + // This should never happen, there is a task that regularly cleans up + // user proofs with unlocked states + // (and it runs more frequently than the 1H the user needs to withdraw funds) BatcherError::TransactionSendError( - TransactionSendError::SubmissionInsufficientBalance, + TransactionSendError::SubmissionInsufficientBalance(address), ) => { - // TODO calling remove_proofs_from_queue here is a better solution, flushing only the failed batch - // this would also need a message sent to the clients + // In the future we could do a more granular recovery + warn!("User {:?} has insufficient balance, flushing entire queue as safety measure", address); + self.flush_queue_and_clear_nonce_cache().await; + + for entry in finalized_batch { + if let Some(ws_sink) = entry.messaging_sink.as_ref() { + tokio::spawn(send_message( + ws_sink.clone(), + SubmitProofResponseMessage::BatchReset, + )); + } else { + warn!( + "Websocket sink was found empty. This should only happen in tests" + ); + } + } + + return Err(BatcherError::StateCorruptedAndFlushed(format!( + "Queue and user states flushed due to insufficient balance for user {:?}", + address + ))); } _ => { // Add more cases here if we want in the future @@ -1358,12 +2163,26 @@ impl Batcher { return Err(e); }; - // Once the submit is succesfull, we remove the submitted proofs from the queue - // TODO handle error case: - if let Err(e) = self.remove_proofs_from_queue(finalized_batch.clone()).await { - error!("Unexpected error while updating queue: {:?}", e); + // Note: Proofs were already removed from the queue during extraction phase + // Now update user states based on current queue state after successful submission + info!("Updating user states after batch confirmation..."); + let users_in_batch: std::collections::HashSet
= + finalized_batch.iter().map(|entry| entry.sender).collect(); + if let Err(e) = self + .update_user_states_from_queue_state(users_in_batch) + .await + { + error!( + "Failed to update user states after batch confirmation: {:?}", + e + ); + // Continue with the rest of the process since batch was already submitted successfully } + // Clean up user states for users who had proofs in this batch but now have no proofs left + self.cleanup_user_states_after_successful_submission(finalized_batch) + .await; + connection::send_batch_inclusion_data_responses(finalized_batch, &batch_merkle_tree).await } @@ -1372,7 +2191,10 @@ impl Batcher { let mut batch_state_lock = self.batch_state.lock().await; for (entry, _) in batch_state_lock.batch_queue.iter() { if let Some(ws_sink) = entry.messaging_sink.as_ref() { - send_message(ws_sink.clone(), SubmitProofResponseMessage::BatchReset).await; + tokio::spawn(send_message( + ws_sink.clone(), + SubmitProofResponseMessage::BatchReset, + )); } else { warn!("Websocket sink was found empty. This should only happen in tests"); } @@ -1380,7 +2202,7 @@ impl Batcher { let Some(nonpaying_replacement_addr) = self.get_nonpaying_replacement_addr() else { batch_state_lock.batch_queue.clear(); - batch_state_lock.user_states.clear(); + self.user_states.write().await.clear(); return; }; @@ -1392,15 +2214,16 @@ impl Batcher { .await else { batch_state_lock.batch_queue.clear(); - batch_state_lock.user_states.clear(); + self.user_states.write().await.clear(); return; }; batch_state_lock.batch_queue.clear(); - batch_state_lock.user_states.clear(); + self.user_states.write().await.clear(); let nonpaying_user_state = UserState::new(nonpaying_replacement_addr_nonce); - batch_state_lock - .user_states - .insert(nonpaying_replacement_addr, nonpaying_user_state); + self.user_states.write().await.insert( + nonpaying_replacement_addr, + Arc::new(Mutex::new(nonpaying_user_state)), + ); self.metrics.update_queue_metrics(0, 0); } @@ -1416,8 +2239,23 @@ impl Batcher { let (gas_price, disable_verifiers) = tokio::join!(gas_price_future, disabled_verifiers_future); + let gas_price = gas_price.map_err(|_| BatcherError::GasPriceError)?; + // compute the new min max fee + let min_max_fee = aligned_sdk::verification_layer::calculate_fee_per_proof_with_gas_price( + self.amount_of_proofs_for_min_max_fee, + gas_price, + ); + // Acquire a write lock to update the latest gas price. + // The lock is dropped immediately after this assignment completes. + *self.current_min_max_fee.write().await = min_max_fee; + info!( + "Updated min max-fee: {} ETH per proof (batch size: {})", + ethers::utils::format_ether(min_max_fee), + self.amount_of_proofs_for_min_max_fee + ); + { let new_disable_verifiers = disable_verifiers .map_err(|e| BatcherError::DisabledVerifiersError(e.to_string()))?; @@ -1431,16 +2269,35 @@ impl Batcher { let modified_gas_price = gas_price * U256::from(GAS_PRICE_PERCENTAGE_MULTIPLIER) / U256::from(PERCENTAGE_DIVIDER); - if let Some(finalized_batch) = self.is_batch_ready(block_number, modified_gas_price).await { + if let Some(finalized_batch) = self + .extract_batch_if_ready(block_number, modified_gas_price) + .await + { let batch_finalization_result = self - .finalize_batch(block_number, finalized_batch, modified_gas_price) + .finalize_batch(block_number, &finalized_batch, modified_gas_price) .await; // Resetting this here to avoid doing it on every return path of `finalize_batch` function let mut batch_posting = self.posting_batch.lock().await; *batch_posting = false; - batch_finalization_result?; + // If batch finalization failed, restore the proofs to the queue + if let Err(e) = batch_finalization_result { + error!("Batch finalization failed: {:?}", e); + + // If the queue was flushed, don't recover + match &e { + BatcherError::StateCorruptedAndFlushed(_) => { + info!("State was corrupted and flushed - not restoring proofs"); + } + _ => { + info!("Restoring proofs to queue after batch failure"); + self.restore_proofs_after_batch_failure(&finalized_batch) + .await; + } + } + return Err(e); + } } Ok(()) @@ -1458,7 +2315,18 @@ impl Batcher { let batch_merkle_root_hex = hex::encode(batch_merkle_root); info!("Batch merkle root: 0x{}", batch_merkle_root_hex); let file_name = batch_merkle_root_hex.clone() + ".json"; - let batch_data_pointer: String = "".to_owned() + &self.download_endpoint + "/" + &file_name; + + let batch_data_pointer = self + .upload_batch_to_multiple_s3(batch_bytes, &file_name) + .await?; + if let Err(e) = self + .telemetry + .task_uploaded_to_s3(&batch_merkle_root_hex) + .await + { + warn!("Failed to send task status to telemetry: {:?}", e); + }; + info!("Batch upload to: {}", batch_data_pointer); let num_proofs_in_batch = leaves.len(); let gas_per_proof = (self.constant_gas_cost() @@ -1494,16 +2362,6 @@ impl Batcher { .gas_price_used_on_latest_batch .set(gas_price.as_u64() as i64); - info!("Uploading batch to S3..."); - self.upload_batch_to_s3(batch_bytes, &file_name).await?; - if let Err(e) = self - .telemetry - .task_uploaded_to_s3(&batch_merkle_root_hex) - .await - { - warn!("Failed to send task status to telemetry: {:?}", e); - }; - info!("Batch sent to S3 with name: {}", file_name); if let Err(e) = self .telemetry .task_created( @@ -1714,11 +2572,13 @@ impl Batcher { 0.0 } - /// Only relevant for testing and for users to easily use Aligned - fn is_nonpaying(&self, addr: &Address) -> bool { - self.non_paying_config - .as_ref() - .is_some_and(|non_paying_config| non_paying_config.address == *addr) + /// An address has to pay if it's on mainnet or is not the special designated address on testnet + fn has_to_pay(&self, addr: &Address) -> bool { + self.non_paying_config.is_none() + || self + .non_paying_config + .as_ref() + .is_some_and(|non_paying_config| non_paying_config.address != *addr) } fn get_nonpaying_replacement_addr(&self) -> Option
{ @@ -1726,76 +2586,6 @@ impl Batcher { Some(non_paying_conf.replacement.address()) } - /// Only relevant for testing and for users to easily use Aligned in testnet. - async fn handle_nonpaying_msg( - &self, - ws_sink: WsMessageSink, - client_msg: &SubmitProofMessage, - ) -> Result<(), Error> { - info!("Handling nonpaying message"); - let Some(non_paying_config) = self.non_paying_config.as_ref() else { - warn!("There isn't a non-paying configuration loaded. This message will be ignored"); - send_message(ws_sink.clone(), SubmitProofResponseMessage::InvalidNonce).await; - return Ok(()); - }; - - let replacement_addr = non_paying_config.replacement.address(); - let Some(replacement_user_balance) = self.get_user_balance(&replacement_addr).await else { - error!("Could not get balance for non-paying address {replacement_addr:?}"); - send_message( - ws_sink.clone(), - SubmitProofResponseMessage::InsufficientBalance(replacement_addr), - ) - .await; - return Ok(()); - }; - - if replacement_user_balance == U256::from(0) { - error!("Insufficient funds for non-paying address {replacement_addr:?}"); - send_message( - ws_sink.clone(), - SubmitProofResponseMessage::InsufficientBalance(replacement_addr), - ) - .await; - return Ok(()); - } - - let batch_state_lock = self.batch_state.lock().await; - - let nonced_verification_data = NoncedVerificationData::new( - client_msg.verification_data.verification_data.clone(), - client_msg.verification_data.nonce, - DEFAULT_MAX_FEE_PER_PROOF.into(), // 2_000 gas per proof * 100 gwei gas price (upper bound) - self.chain_id, - self.payment_service.address(), - ); - - let client_msg = SubmitProofMessage::new( - nonced_verification_data.clone(), - non_paying_config.replacement.clone(), - ) - .await; - - let signature = client_msg.signature; - if let Err(e) = self - .add_to_batch( - batch_state_lock, - nonced_verification_data, - ws_sink.clone(), - signature, - replacement_addr, - ) - .await - { - info!("Error while adding nonpaying address entry to batch: {e:?}"); - send_message(ws_sink, SubmitProofResponseMessage::AddToBatchError).await; - return Ok(()); - }; - - info!("Non-paying verification data message handled"); - Ok(()) - } - /// Gets the balance of user with address `addr` from Ethereum. /// Retries on recoverable errors using exponential backoff up to `ETHEREUM_CALL_MAX_RETRIES` times: /// (0,5 secs - 1 secs - 2 secs - 4 secs - 8 secs) @@ -1845,13 +2635,90 @@ impl Batcher { unlocked } + /// Uploads the batch to both S3 buckets and returns the comma-separated URLs of successful uploads. + /// Returns an error only if all uploads fail. + async fn upload_batch_to_multiple_s3( + &self, + batch_bytes: &[u8], + file_name: &str, + ) -> Result { + // Upload to both S3 buckets and collect successful URLs + let mut successful_urls = Vec::new(); + + // Try primary S3 upload + if self + .upload_batch_to_s3( + &self.s3_client, + batch_bytes, + file_name, + &self.s3_bucket_name, + ) + .await + .is_ok() + { + let primary_url = format!("{}/{}", self.download_endpoint, file_name); + successful_urls.push(primary_url.clone()); + info!("Successfully uploaded batch to primary S3: {}", primary_url); + } else { + warn!("Failed to upload batch to primary S3"); + } + + // Try secondary S3 upload (if configured) + if let ( + Some(s3_client_secondary), + Some(s3_bucket_name_secondary), + Some(download_endpoint_secondary), + ) = ( + &self.s3_client_secondary, + &self.s3_bucket_name_secondary, + &self.download_endpoint_secondary, + ) { + if self + .upload_batch_to_s3( + s3_client_secondary, + batch_bytes, + file_name, + s3_bucket_name_secondary, + ) + .await + .is_ok() + { + let secondary_url = format!("{}/{}", download_endpoint_secondary, file_name); + successful_urls.push(secondary_url.clone()); + info!( + "Successfully uploaded batch to secondary S3: {}", + secondary_url + ); + } else { + warn!("Failed to upload batch to secondary S3"); + } + } + + // Update metrics with number of available data services + self.metrics + .available_data_services + .set(successful_urls.len() as i64); + + // If no uploads succeeded, return error + if successful_urls.is_empty() { + error!("Failed to upload batch to both S3 buckets"); + return Err(BatcherError::BatchUploadError( + "Failed to upload to any S3 bucket".to_string(), + )); + } + + Ok(successful_urls.join(",")) + } + /// Uploads the batch to s3. /// Retries on recoverable errors using exponential backoff up to `ETHEREUM_CALL_MAX_RETRIES` times: /// (0,5 secs - 1 secs - 2 secs - 4 secs - 8 secs). async fn upload_batch_to_s3( &self, + s3_client: &S3Client, batch_bytes: &[u8], file_name: &str, + bucket_name: &str, ) -> Result<(), BatcherError> { let start = Instant::now(); let result = retry_function( @@ -1859,8 +2726,8 @@ impl Batcher { Self::upload_batch_to_s3_retryable( batch_bytes, file_name, - self.s3_client.clone(), - &self.s3_bucket_name, + s3_client.clone(), + bucket_name, ) }, ETHEREUM_CALL_MIN_RETRY_DELAY, @@ -1897,4 +2764,127 @@ impl Batcher { (self.aggregator_fee_percentage_multiplier * self.aggregator_gas_cost) / PERCENTAGE_DIVIDER + BATCHER_SUBMISSION_BASE_GAS_COST } + + /// Checks if the message signature is valid + /// and returns the address if its. + /// If not, returns false, logs the error, + /// and sends it to the metrics server + async fn msg_signature_is_valid( + &self, + client_msg: &SubmitProofMessage, + ws_conn_sink: &WsMessageSink, + ) -> Option
{ + let Ok(addr) = client_msg.verify_signature() else { + error!("Signature verification error"); + send_message( + ws_conn_sink.clone(), + SubmitProofResponseMessage::InvalidSignature, + ) + .await; + self.metrics.user_error(&["invalid_signature", ""]); + return None; + }; + + Some(addr) + } + + /// Checks if the proof size + pub inputs is valid (not exceeding max_proof_size) + /// Returns false, logs the error, + /// and sends it to the metrics server if the size is too large + async fn msg_proof_size_is_valid( + &self, + client_msg: &SubmitProofMessage, + ws_conn_sink: &WsMessageSink, + ) -> bool { + let verification_data_size = client_msg.verification_data.cbor_size_upper_bound(); + + if verification_data_size > self.max_proof_size { + error!("Proof size exceeds the maximum allowed size."); + send_message( + ws_conn_sink.clone(), + SubmitProofResponseMessage::ProofTooLarge, + ) + .await; + self.metrics.user_error(&["proof_too_large", ""]); + return false; + } + + true + } + + /// Checks if the chain id matches the one in the config + /// Returns false, logs the error, + /// and sends it to the metrics server if it doesn't matches + async fn msg_chain_id_is_valid( + &self, + client_msg: &SubmitProofMessage, + ws_conn_sink: &WsMessageSink, + ) -> bool { + let msg_chain_id = client_msg.verification_data.chain_id; + if msg_chain_id != self.chain_id { + warn!("Received message with incorrect chain id: {msg_chain_id}"); + send_message( + ws_conn_sink.clone(), + SubmitProofResponseMessage::InvalidChainId, + ) + .await; + self.metrics.user_error(&["invalid_chain_id", ""]); + return false; + } + + true + } + + /// Checks if the message has a valid payment service address + /// Returns false, logs the error, + /// and sends it to the metrics server if it doesn't match + async fn msg_batcher_payment_addr_is_valid( + &self, + client_msg: &SubmitProofMessage, + ws_conn_sink: &WsMessageSink, + ) -> bool { + let msg_payment_service_addr = client_msg.verification_data.payment_service_addr; + if msg_payment_service_addr != self.payment_service.address() { + warn!("Received message with incorrect payment service address: {msg_payment_service_addr}"); + send_message( + ws_conn_sink.clone(), + SubmitProofResponseMessage::InvalidPaymentServiceAddress( + msg_payment_service_addr, + self.payment_service.address(), + ), + ) + .await; + self.metrics + .user_error(&["invalid_payment_service_address", ""]); + return false; + } + + true + } + + async fn msg_covers_minimum_max_fee(&self, msg_max_fee: U256) -> bool { + let min_max_fee_per_proof = self.current_min_max_fee.read().await; + msg_max_fee >= *min_max_fee_per_proof + } + + /// Checks if the user's balance is unlocked + /// Returns false if balance is unlocked, logs the error, + /// and sends it to the metrics server + async fn msg_user_balance_is_locked( + &self, + addr: &Address, + ws_conn_sink: &WsMessageSink, + ) -> bool { + if self.user_balance_is_unlocked(addr).await { + send_message( + ws_conn_sink.clone(), + SubmitProofResponseMessage::InsufficientBalance(*addr), + ) + .await; + self.metrics.user_error(&["insufficient_balance", ""]); + return false; + } + + true + } } diff --git a/batcher/aligned-batcher/src/main.rs b/crates/batcher/src/main.rs similarity index 80% rename from batcher/aligned-batcher/src/main.rs rename to crates/batcher/src/main.rs index 089d5c0abf..2d4947c50a 100644 --- a/batcher/aligned-batcher/src/main.rs +++ b/crates/batcher/src/main.rs @@ -10,10 +10,10 @@ use aligned_batcher::{types::errors::BatcherError, Batcher}; /// Batcher main flow: /// There are two main tasks spawned: `listen_connections` and `listen_new_blocks` /// * `listen_connections` waits for websocket connections and adds verification data sent by clients -/// to the batch. +/// to the batch. /// * `listen_new_blocks` waits for new blocks and when one is received, checks if the conditions are met -/// the current batch to be submitted. In other words, this task is the one that controls when a batch -/// is to be posted. +/// the current batch to be submitted. In other words, this task is the one that controls when a batch +/// is to be posted. #[derive(Parser)] #[command(name = "Aligned Batcher")] #[command(about = "An application with server and client subcommands", long_about = None)] @@ -55,6 +55,16 @@ async fn main() -> Result<(), BatcherError> { } }); + // spawn task to poll for BalanceUnlocked events + tokio::spawn({ + let app = batcher.clone(); + async move { + app.poll_balance_unlocked_events() + .await + .expect("Error polling BalanceUnlocked events") + } + }); + batcher.metrics.inc_batcher_restart(); batcher.listen_connections(&address).await?; diff --git a/batcher/aligned-batcher/src/metrics.rs b/crates/batcher/src/metrics.rs similarity index 73% rename from batcher/aligned-batcher/src/metrics.rs rename to crates/batcher/src/metrics.rs index 0ae7117c46..6c911d49aa 100644 --- a/batcher/aligned-batcher/src/metrics.rs +++ b/crates/batcher/src/metrics.rs @@ -27,6 +27,11 @@ pub struct BatcherMetrics { pub cancel_create_new_task_duration: IntGauge, pub batcher_gas_cost_create_task_total: GenericCounter, pub batcher_gas_cost_cancel_task_total: GenericCounter, + pub message_handler_user_lock_timeouts: IntCounter, + pub message_handler_batch_lock_timeouts: IntCounter, + pub message_handler_user_states_lock_timeouts: IntCounter, + pub unlocked_event_polling_batch_lock_timeouts: IntCounter, + pub available_data_services: IntGauge, } impl BatcherMetrics { @@ -79,6 +84,30 @@ impl BatcherMetrics { "batcher_gas_cost_cancel_task_total", "Batcher Gas Cost Cancel Task Total" ))?; + let available_data_services = register_int_gauge!(opts!( + "available_data_services", + "Number of available data services (0-2)" + ))?; + + let message_handler_user_lock_timeouts = register_int_counter!(opts!( + "message_handler_user_lock_timeouts_count", + "Message Handler User Lock Timeouts" + ))?; + + let message_handler_batch_lock_timeouts = register_int_counter!(opts!( + "message_handler_batch_lock_timeouts_count", + "Message Handler Batch Lock Timeouts" + ))?; + + let message_handler_user_states_lock_timeouts = register_int_counter!(opts!( + "message_handler_user_states_lock_timeouts_count", + "Message Handler User States Lock Timeouts" + ))?; + + let unlocked_event_polling_batch_lock_timeouts = register_int_counter!(opts!( + "unlocked_event_polling_batch_lock_timeouts_count", + "Unlocked Event Polling Batch Lock Timeouts" + ))?; registry.register(Box::new(open_connections.clone()))?; registry.register(Box::new(received_proofs.clone()))?; @@ -96,6 +125,11 @@ impl BatcherMetrics { registry.register(Box::new(cancel_create_new_task_duration.clone()))?; registry.register(Box::new(batcher_gas_cost_create_task_total.clone()))?; registry.register(Box::new(batcher_gas_cost_cancel_task_total.clone()))?; + registry.register(Box::new(message_handler_user_lock_timeouts.clone()))?; + registry.register(Box::new(message_handler_batch_lock_timeouts.clone()))?; + registry.register(Box::new(message_handler_user_states_lock_timeouts.clone()))?; + registry.register(Box::new(unlocked_event_polling_batch_lock_timeouts.clone()))?; + registry.register(Box::new(available_data_services.clone()))?; let metrics_route = warp::path!("metrics") .and(warp::any().map(move || registry.clone())) @@ -124,9 +158,13 @@ impl BatcherMetrics { cancel_create_new_task_duration, batcher_gas_cost_create_task_total, batcher_gas_cost_cancel_task_total, + message_handler_user_lock_timeouts, + message_handler_batch_lock_timeouts, + message_handler_user_states_lock_timeouts, + unlocked_event_polling_batch_lock_timeouts, + available_data_services, }) } - pub async fn metrics_handler(registry: prometheus::Registry) -> Result { use prometheus::Encoder; let encoder = prometheus::TextEncoder::new(); @@ -158,4 +196,20 @@ impl BatcherMetrics { self.queue_len.set(queue_len); self.queue_size_bytes.set(queue_size); } + + pub fn inc_message_handler_user_lock_timeout(&self) { + self.message_handler_user_lock_timeouts.inc(); + } + + pub fn inc_message_handler_batch_lock_timeout(&self) { + self.message_handler_batch_lock_timeouts.inc(); + } + + pub fn inc_message_handler_user_states_lock_timeouts(&self) { + self.message_handler_user_states_lock_timeouts.inc(); + } + + pub fn inc_unlocked_event_polling_batch_lock_timeout(&self) { + self.unlocked_event_polling_batch_lock_timeouts.inc(); + } } diff --git a/batcher/aligned-batcher/src/retry/batcher_retryables.rs b/crates/batcher/src/retry/batcher_retryables.rs similarity index 88% rename from batcher/aligned-batcher/src/retry/batcher_retryables.rs rename to crates/batcher/src/retry/batcher_retryables.rs index d5f1aaef06..0b82a7b2cf 100644 --- a/batcher/aligned-batcher/src/retry/batcher_retryables.rs +++ b/crates/batcher/src/retry/batcher_retryables.rs @@ -1,6 +1,7 @@ use std::time::Duration; use ethers::prelude::*; +use ethers::providers::Http; use log::{info, warn}; use tokio::time::timeout; @@ -285,3 +286,47 @@ pub async fn cancel_create_new_task_retryable( "Receipt not found".to_string(), ))) } + +pub async fn get_current_block_number_retryable( + eth_http_provider: &Provider, + eth_http_provider_fallback: &Provider, +) -> Result> { + if let Ok(block_number) = eth_http_provider.get_block_number().await { + return Ok(block_number); + } + + eth_http_provider_fallback + .get_block_number() + .await + .map_err(|e| { + warn!("Failed to get current block number: {e}"); + RetryError::Transient(e.to_string()) + }) +} + +pub async fn query_balance_unlocked_events_retryable( + payment_service: &BatcherPaymentService, + payment_service_fallback: &BatcherPaymentService, + from_block: U64, + to_block: U64, +) -> Result, RetryError> +{ + let filter = payment_service + .balance_unlocked_filter() + .from_block(from_block) + .to_block(to_block); + + if let Ok(events) = filter.query().await { + return Ok(events); + } + + let filter_fallback = payment_service_fallback + .balance_unlocked_filter() + .from_block(from_block) + .to_block(to_block); + + filter_fallback.query().await.map_err(|e| { + warn!("Failed to query BalanceUnlocked events: {e}"); + RetryError::Transient(e.to_string()) + }) +} diff --git a/batcher/aligned-batcher/src/retry/mod.rs b/crates/batcher/src/retry/mod.rs similarity index 100% rename from batcher/aligned-batcher/src/retry/mod.rs rename to crates/batcher/src/retry/mod.rs diff --git a/batcher/aligned-batcher/src/risc_zero/mod.rs b/crates/batcher/src/risc_zero/mod.rs similarity index 100% rename from batcher/aligned-batcher/src/risc_zero/mod.rs rename to crates/batcher/src/risc_zero/mod.rs diff --git a/crates/batcher/src/s3/mod.rs b/crates/batcher/src/s3/mod.rs new file mode 100644 index 0000000000..a24a876cba --- /dev/null +++ b/crates/batcher/src/s3/mod.rs @@ -0,0 +1,72 @@ +use aws_config::meta::region::RegionProviderChain; +use aws_config::BehaviorVersion; +use aws_sdk_s3::config::Region; +use aws_sdk_s3::error::SdkError; +use aws_sdk_s3::operation::put_object::{PutObjectError, PutObjectOutput}; +use aws_sdk_s3::primitives::ByteStream; +use aws_sdk_s3::Client; +use log::info; + +pub struct S3Config { + pub access_key_id: Option, + pub secret_access_key: Option, + pub region: Option, + pub endpoint_url: Option, +} + +pub async fn create_client(s3_config: S3Config) -> Client { + let mut config = aws_config::defaults(BehaviorVersion::latest()); + + if let Some(region) = s3_config.region { + let region_provider = + RegionProviderChain::first_try(Region::new(region)).or_else("us-east-2"); + config = config.region(region_provider); + } else { + let region_provider = RegionProviderChain::default_provider().or_else("us-east-2"); + config = config.region(region_provider); + } + + if let (Some(access_key_id), Some(secret_access_key)) = + (s3_config.access_key_id, s3_config.secret_access_key) + { + let credentials = aws_sdk_s3::config::Credentials::new( + access_key_id, + secret_access_key, + None, + None, + "custom", + ); + config = config.credentials_provider(credentials); + } + + if let Some(endpoint_url) = &s3_config.endpoint_url { + info!("Using custom endpoint: {}", endpoint_url); + config = config.endpoint_url(endpoint_url); + } + + let config = config.load().await; + + let mut s3_config_builder = aws_sdk_s3::config::Builder::from(&config); + if s3_config.endpoint_url.is_some() { + info!("Forcing path style for custom endpoint"); + s3_config_builder = s3_config_builder.force_path_style(true); + } + Client::from_conf(s3_config_builder.build()) +} + +pub async fn upload_object( + client: &Client, + bucket_name: &str, + bytes: Vec, + key: &str, +) -> Result> { + let body = ByteStream::from(bytes); + + client + .put_object() + .bucket(bucket_name) + .key(key) + .body(body) + .send() + .await +} diff --git a/batcher/aligned-batcher/src/sp1/mod.rs b/crates/batcher/src/sp1/mod.rs similarity index 53% rename from batcher/aligned-batcher/src/sp1/mod.rs rename to crates/batcher/src/sp1/mod.rs index 303c08a62d..bee6aa2e83 100644 --- a/batcher/aligned-batcher/src/sp1/mod.rs +++ b/crates/batcher/src/sp1/mod.rs @@ -1,20 +1,24 @@ use log::{debug, error, warn}; -use sp1_sdk::ProverClient; +use sp1_sdk::{EnvProver, ProverClient, SP1ProofWithPublicValues}; use std::sync::OnceLock; -static SP1_PROVER_CLIENT: OnceLock = OnceLock::new(); +static SP1_PROVER_CLIENT: OnceLock = OnceLock::new(); -pub fn verify_sp1_proof(proof: &[u8], elf: &[u8]) -> bool { +pub fn verify_sp1_proof(proof: &[u8], public_inputs: &[u8], elf: &[u8]) -> bool { if proof.is_empty() || elf.is_empty() { error!("SP1 Input buffers zero size"); return false; } debug!("Verifying SP1 proof"); - let prover_client = SP1_PROVER_CLIENT.get_or_init(ProverClient::new); + let prover_client = SP1_PROVER_CLIENT.get_or_init(ProverClient::from_env); let (_pk, vk) = prover_client.setup(elf); - if let Ok(proof) = bincode::deserialize(proof) { + if let Ok(proof) = bincode::deserialize::(proof) { + if *proof.public_values.as_slice() != *public_inputs { + warn!("SP1 public inputs do not match proof public values"); + return false; + } let res = prover_client.verify(&proof, &vk).is_ok(); debug!("SP1 proof is valid: {}", res); if res { diff --git a/batcher/aligned-batcher/src/telemetry/mod.rs b/crates/batcher/src/telemetry/mod.rs similarity index 100% rename from batcher/aligned-batcher/src/telemetry/mod.rs rename to crates/batcher/src/telemetry/mod.rs diff --git a/batcher/aligned-batcher/src/telemetry/sender.rs b/crates/batcher/src/telemetry/sender.rs similarity index 100% rename from batcher/aligned-batcher/src/telemetry/sender.rs rename to crates/batcher/src/telemetry/sender.rs diff --git a/batcher/aligned-batcher/src/types/batch_queue.rs b/crates/batcher/src/types/batch_queue.rs similarity index 67% rename from batcher/aligned-batcher/src/types/batch_queue.rs rename to crates/batcher/src/types/batch_queue.rs index 5c2056eadb..82768b30c8 100644 --- a/batcher/aligned-batcher/src/types/batch_queue.rs +++ b/crates/batcher/src/types/batch_queue.rs @@ -1,9 +1,6 @@ -use aligned_sdk::{ - communication::serialization::cbor_serialize, - core::{ - constants::CBOR_ARRAY_MAX_OVERHEAD, - types::{NoncedVerificationData, VerificationDataCommitment}, - }, +use aligned_sdk::common::{ + constants::CBOR_ARRAY_MAX_OVERHEAD, + types::{NoncedVerificationData, VerificationDataCommitment}, }; use ethers::types::{Address, Signature, U256}; use priority_queue::PriorityQueue; @@ -106,7 +103,7 @@ impl Ord for BatchQueueEntryPriority { // Implementation of lowest-first: let ord: std::cmp::Ordering = other.max_fee.cmp(&self.max_fee); // This means, less max_fee will go first - // We want this because we will .pop() to remove unwanted elements, low fee submitions. + // We want this because we will .pop() to remove unwanted elements, low fee submissions. if ord == std::cmp::Ordering::Equal { // Case of same max_fee: @@ -124,14 +121,9 @@ pub(crate) type BatchQueue = PriorityQueue Result { let folded_result = batch_queue.iter().try_fold(0, |acc, (entry, _)| { - if let Ok(verification_data_bytes) = - cbor_serialize(&entry.nonced_verification_data.verification_data) - { - let current_batch_size = acc + verification_data_bytes.len(); - ControlFlow::Continue(current_batch_size) - } else { - ControlFlow::Break(()) - } + let verification_data_size = entry.nonced_verification_data.cbor_size_upper_bound(); + let current_batch_size = acc + verification_data_size; + ControlFlow::::Continue(current_batch_size) }); if let ControlFlow::Continue(batch_size) = folded_result { @@ -146,62 +138,71 @@ pub(crate) fn calculate_batch_size(batch_queue: &BatchQueue) -> Result Result, BatcherError> { - let mut finalized_batch = batch_queue; - let mut batch_size = calculate_batch_size(&finalized_batch)?; - - while let Some((entry, _)) = finalized_batch.peek() { - let batch_len = finalized_batch.len(); - let fee_per_proof = calculate_fee_per_proof(batch_len, gas_price, constant_gas_cost); - - // if batch is not acceptable: - if batch_size > max_batch_byte_size - || fee_per_proof > entry.nonced_verification_data.max_fee - || batch_len > max_batch_proof_qty - { - // Update the state for the next iteration: - // * Subtract this entry size to the size of the batch size. - // * Push the current entry to the resulting batch queue. - - // It is safe to call `.unwrap()` here since any serialization error should have been caught - // when calculating the total size of the batch with the `calculate_batch_size` function - let verification_data_size = - cbor_serialize(&entry.nonced_verification_data.verification_data) - .unwrap() - .len(); + let mut batch_size = calculate_batch_size(batch_queue)?; + let mut rejected_entries = Vec::new(); + + // Remove entries that won't pay enough, or that makes a queue that is too big + loop { + let should_remove = if let Some((entry, _)) = batch_queue.peek() { + let batch_len = batch_queue.len(); + let fee_per_proof = calculate_fee_per_proof(batch_len, gas_price, constant_gas_cost); + + // if batch is not acceptable: + batch_size > max_batch_byte_size + || fee_per_proof > entry.nonced_verification_data.max_fee + || batch_len > max_batch_proof_qty + } else { + false + }; + + if should_remove { + // Remove this entry (it won't pay enough) and save it + let (rejected_entry, rejected_priority) = batch_queue.pop().unwrap(); + + // Update batch size + let verification_data_size = rejected_entry + .nonced_verification_data + .cbor_size_upper_bound(); batch_size -= verification_data_size; - finalized_batch.pop(); + rejected_entries.push((rejected_entry, rejected_priority)); + } else { + // At this point, we found a viable batch - break + break; + } + } - continue; + // Check if we have a viable batch + if batch_queue.is_empty() { + // No viable batch found - put back the rejected entries + for (entry, priority) in rejected_entries { + batch_queue.push(entry, priority); } + return Err(BatcherError::BatchCostTooHigh); + } - // At this point, we break since we found a batch that can be submitted - break; + // Extract remaining entries + let mut batch_for_posting = Vec::new(); + while let Some((entry, _)) = batch_queue.pop() { + batch_for_posting.push(entry); } - // If `finalized_batch` is empty, this means that all the batch queue was traversed and we didn't find - // any user willing to pay fot the fee per proof. - if finalized_batch.is_empty() { - return Err(BatcherError::BatchCostTooHigh); + // Put back the rejected entries (they stay in the queue for later) + for (entry, priority) in rejected_entries { + batch_queue.push(entry, priority); } - Ok(finalized_batch.clone().into_sorted_vec()) + Ok(batch_for_posting) } fn calculate_fee_per_proof(batch_len: usize, gas_price: U256, constant_gas_cost: u128) -> U256 { @@ -214,12 +215,16 @@ fn calculate_fee_per_proof(batch_len: usize, gas_price: U256, constant_gas_cost: #[cfg(test)] mod test { - use aligned_sdk::core::constants::DEFAULT_CONSTANT_GAS_COST; - use aligned_sdk::core::types::ProvingSystemId; - use aligned_sdk::core::types::VerificationData; - use ethers::types::Address; + use crate::types::batch_queue::extract_batch_directly; - use super::*; + use super::{BatchQueue, BatchQueueEntry, BatchQueueEntryPriority}; + use aligned_sdk::common::constants::DEFAULT_CONSTANT_GAS_COST; + use aligned_sdk::common::types::{ + NoncedVerificationData, ProvingSystemId, VerificationData, VerificationDataCommitment, + }; + use aligned_sdk::communication::serialization::cbor_serialize; + use ethers::types::{Address, Signature, U256}; + use std::fs; #[test] fn batch_finalization_algorithm_works_from_same_sender() { @@ -311,8 +316,9 @@ mod test { batch_queue.push(entry_3, batch_priority_3); let gas_price = U256::from(1); - let finalized_batch = try_build_batch( - batch_queue.clone(), + let mut test_queue = batch_queue.clone(); + let finalized_batch = extract_batch_directly( + &mut test_queue, gas_price, 5000000, 50, @@ -423,8 +429,9 @@ mod test { batch_queue.push(entry_3, batch_priority_3); let gas_price = U256::from(1); - let finalized_batch = try_build_batch( - batch_queue.clone(), + let mut test_queue = batch_queue.clone(); + let finalized_batch = extract_batch_directly( + &mut test_queue, gas_price, 5000000, 50, @@ -533,8 +540,9 @@ mod test { batch_queue.push(entry_3.clone(), batch_priority_3.clone()); let gas_price = U256::from(1); - let finalized_batch = try_build_batch( - batch_queue.clone(), + let mut test_queue = batch_queue.clone(); + let finalized_batch = extract_batch_directly( + &mut test_queue, gas_price, 5000000, 2, @@ -643,8 +651,9 @@ mod test { batch_queue.push(entry_3, batch_priority_3); let gas_price = U256::from(1); - let finalized_batch = try_build_batch( - batch_queue.clone(), + let mut test_queue = batch_queue.clone(); + let finalized_batch = extract_batch_directly( + &mut test_queue, gas_price, 5000000, 50, @@ -759,8 +768,9 @@ mod test { batch_queue.push(entry_3, batch_priority_3); let gas_price = U256::from(1); - let finalized_batch = try_build_batch( - batch_queue.clone(), + let mut test_queue = batch_queue.clone(); + let finalized_batch = extract_batch_directly( + &mut test_queue, gas_price, 5000000, 50, @@ -781,6 +791,77 @@ mod test { ); } + #[test] + fn batch_finalization_algorithm_works_single_high_fee_proof() { + // Test the scenario: 1 proof with high fee that should be viable + let proof_generator_addr = Address::random(); + let payment_service_addr = Address::random(); + let sender_addr = Address::random(); + let bytes_for_verification_data = vec![42_u8; 10]; + let dummy_signature = Signature { + r: U256::from(1), + s: U256::from(2), + v: 3, + }; + let verification_data = VerificationData { + proving_system: ProvingSystemId::Risc0, + proof: bytes_for_verification_data.clone(), + pub_input: Some(bytes_for_verification_data.clone()), + verification_key: Some(bytes_for_verification_data.clone()), + vm_program_code: Some(bytes_for_verification_data), + proof_generator_addr, + }; + let chain_id = U256::from(42); + + // Single entry with very high fee - should definitely be viable + let nonce = U256::from(1); + let high_max_fee = U256::from(1_000_000_000_000_000_000u128); // Very high fee - 1 ETH + let nonced_verification_data = NoncedVerificationData::new( + verification_data, + nonce, + high_max_fee, + chain_id, + payment_service_addr, + ); + let vd_commitment: VerificationDataCommitment = nonced_verification_data.clone().into(); + let entry = BatchQueueEntry::new_for_testing( + nonced_verification_data, + vd_commitment, + dummy_signature, + sender_addr, + ); + let batch_priority = BatchQueueEntryPriority::new(high_max_fee, nonce); + + let mut batch_queue = BatchQueue::new(); + batch_queue.push(entry, batch_priority); + + let gas_price = U256::from(10_000_000_000u64); // 10 gwei gas price + let mut test_queue = batch_queue.clone(); + let finalized_batch = extract_batch_directly( + &mut test_queue, + gas_price, + 5000000, // Large byte size limit + 50, // Large proof quantity limit + DEFAULT_CONSTANT_GAS_COST, + ); + + // This should succeed and return the single proof + assert!( + finalized_batch.is_ok(), + "Should successfully extract batch with single high-fee proof" + ); + let batch = finalized_batch.unwrap(); + assert_eq!(batch.len(), 1, "Batch should contain exactly 1 proof"); + assert_eq!(batch[0].nonced_verification_data.max_fee, high_max_fee); + + // The queue should now be empty (no rejected entries to put back) + assert_eq!( + test_queue.len(), + 0, + "Queue should be empty after extracting the single viable proof" + ); + } + #[test] fn batch_finalization_algorithm_works_not_bigger_than_max_batch_proof_qty() { // The following information will be the same for each entry, it is just some dummy data to see @@ -875,8 +956,9 @@ mod test { // The max batch len is 2, so the algorithm should stop at the second entry. let max_batch_proof_qty = 2; - let finalized_batch = try_build_batch( - batch_queue.clone(), + let mut test_queue = batch_queue.clone(); + let finalized_batch = extract_batch_directly( + &mut test_queue, gas_price, 5000000, max_batch_proof_qty, @@ -895,4 +977,200 @@ mod test { max_fee_1 ); } + + #[test] + fn test_batch_size_limit_enforcement_with_real_sp1_proofs() { + let proof_generator_addr = Address::random(); + let payment_service_addr = Address::random(); + let chain_id = U256::from(42); + let dummy_signature = Signature { + r: U256::from(1), + s: U256::from(2), + v: 3, + }; + + // Load actual SP1 proof files + let proof_path = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof"; + let elf_path = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf"; + let pub_input_path = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub"; + + let proof_data = match fs::read(proof_path) { + Ok(data) => data, + Err(_) => return, // Skip test if files not found + }; + + let elf_data = match fs::read(elf_path) { + Ok(data) => data, + Err(_) => return, + }; + + let pub_input_data = match fs::read(pub_input_path) { + Ok(data) => data, + Err(_) => return, + }; + + let verification_data = VerificationData { + proving_system: ProvingSystemId::SP1, + proof: proof_data, + pub_input: Some(pub_input_data), + verification_key: None, + vm_program_code: Some(elf_data), + proof_generator_addr, + }; + + // Create 10 entries using the same SP1 proof data + let mut batch_queue = BatchQueue::new(); + let max_fee = U256::from(1_000_000_000_000_000u128); + + for i in 0..10 { + let sender_addr = Address::random(); + let nonce = U256::from(i + 1); + + let nonced_verification_data = NoncedVerificationData::new( + verification_data.clone(), + nonce, + max_fee, + chain_id, + payment_service_addr, + ); + + let vd_commitment: VerificationDataCommitment = nonced_verification_data.clone().into(); + let entry = BatchQueueEntry::new_for_testing( + nonced_verification_data, + vd_commitment, + dummy_signature, + sender_addr, + ); + let batch_priority = BatchQueueEntryPriority::new(max_fee, nonce); + batch_queue.push(entry, batch_priority); + } + + // Test with a 5MB batch size limit + let batch_size_limit = 5_000_000; // 5MB + let gas_price = U256::from(1); + + let finalized_batch = extract_batch_directly( + &mut batch_queue, + gas_price, + batch_size_limit, + 50, // max proof qty + DEFAULT_CONSTANT_GAS_COST, + ) + .unwrap(); + + // Verify the finalized batch respects the size limit + let finalized_verification_data: Vec = finalized_batch + .iter() + .map(|entry| entry.nonced_verification_data.verification_data.clone()) + .collect(); + + let finalized_serialized = cbor_serialize(&finalized_verification_data).unwrap(); + let finalized_actual_size = finalized_serialized.len(); + + // Assert the batch respects the limit + assert!( + finalized_actual_size <= batch_size_limit, + "Finalized batch size {} exceeds limit {}", + finalized_actual_size, + batch_size_limit + ); + + // Verify some entries were included (not empty batch) + assert!(!finalized_batch.is_empty(), "Batch should not be empty"); + + // Verify not all entries were included (some should be rejected due to size limit) + assert!( + finalized_batch.len() < 10, + "Batch should not include all entries due to size limit" + ); + } + + #[test] + fn test_cbor_size_upper_bound_accuracy() { + let proof_generator_addr = Address::random(); + let payment_service_addr = Address::random(); + let chain_id = U256::from(42); + + // Load actual SP1 proof files + let proof_path = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof"; + let elf_path = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf"; + let pub_input_path = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub"; + + let proof_data = match fs::read(proof_path) { + Ok(data) => data, + Err(_) => return, // Skip test if files not found + }; + + let elf_data = match fs::read(elf_path) { + Ok(data) => data, + Err(_) => return, + }; + + let pub_input_data = match fs::read(pub_input_path) { + Ok(data) => data, + Err(_) => return, + }; + + let verification_data = VerificationData { + proving_system: ProvingSystemId::SP1, + proof: proof_data, + pub_input: Some(pub_input_data), + verification_key: None, + vm_program_code: Some(elf_data), + proof_generator_addr, + }; + + let nonced_verification_data = NoncedVerificationData::new( + verification_data.clone(), + U256::from(1), + U256::from(1_000_000_000_000_000u128), + chain_id, + payment_service_addr, + ); + + // Test cbor_size_upper_bound() accuracy + let estimated_size = nonced_verification_data.cbor_size_upper_bound(); + + // Compare with actual CBOR serialization of the full NoncedVerificationData + let actual_nonced_serialized = cbor_serialize(&nonced_verification_data).unwrap(); + let actual_nonced_size = actual_nonced_serialized.len(); + + // Also test the inner VerificationData for additional validation + let actual_inner_serialized = cbor_serialize(&verification_data).unwrap(); + let actual_inner_size = actual_inner_serialized.len(); + + // Verify CBOR encodes binary data efficiently (with serde_bytes fix), this misses some overhead but the proof is big enough as to not matter + + let raw_total = verification_data.proof.len() + + verification_data.vm_program_code.as_ref().unwrap().len() + + verification_data.pub_input.as_ref().unwrap().len(); + + let cbor_efficiency_ratio = actual_inner_size as f64 / raw_total as f64; + + // With serde_bytes, CBOR should be very efficient (close to 1.0x) + assert!( + cbor_efficiency_ratio < 1.01, + "CBOR serialization should be efficient with serde_bytes. Ratio: {:.3}x", + cbor_efficiency_ratio + ); + + // Verify CBOR encodes binary data efficiently with serde_bytes + // Should be close to 1.0x overhead (raw data size vs CBOR size) + + // The estimation should be an upper bound + assert!( + estimated_size >= actual_nonced_size, + "cbor_size_upper_bound() should be an upper bound. Estimated: {}, Actual: {}", + estimated_size, + actual_nonced_size + ); + + // The estimation should also be reasonable (not wildly over-estimated) + let estimation_overhead = estimated_size as f64 / actual_nonced_size as f64; + assert!( + estimation_overhead < 1.1, + "Estimation should be reasonable, not wildly over-estimated. Overhead: {:.3}x", + estimation_overhead + ); + } } diff --git a/crates/batcher/src/types/batch_state.rs b/crates/batcher/src/types/batch_state.rs new file mode 100644 index 0000000000..1530195192 --- /dev/null +++ b/crates/batcher/src/types/batch_state.rs @@ -0,0 +1,66 @@ +use super::batch_queue::{BatchQueue, BatchQueueEntry}; +use ethers::types::{Address, U256}; +use log::debug; + +pub(crate) struct BatchState { + pub(crate) batch_queue: BatchQueue, + pub(crate) max_size: usize, +} + +impl BatchState { + // CONSTRUCTORS: + + pub(crate) fn new(max_size: usize) -> Self { + Self { + batch_queue: BatchQueue::new(), + max_size, + } + } + + // GETTERS: + + pub(crate) fn get_entry(&self, sender: Address, nonce: U256) -> Option<&BatchQueueEntry> { + self.batch_queue + .iter() + .map(|(entry, _)| entry) + .find(|entry| entry.sender == sender && entry.nonced_verification_data.nonce == nonce) + } + + pub(crate) fn get_user_min_fee_in_batch(&self, addr: &Address) -> U256 { + self.batch_queue + .iter() + .filter(|(e, _)| &e.sender == addr) + .map(|(e, _)| e.nonced_verification_data.max_fee) + .min() + .unwrap_or(U256::max_value()) + } + + // LOGIC: + + /// Checks if the entry is valid + /// An entry is valid if there is no entry with the same sender, lower nonce and a lower fee + pub(crate) fn replacement_entry_is_valid( + &mut self, + replacement_entry: &BatchQueueEntry, + ) -> bool { + let replacement_max_fee = replacement_entry.nonced_verification_data.max_fee; + let nonce = replacement_entry.nonced_verification_data.nonce; + let sender = replacement_entry.sender; + + debug!( + "Checking validity of entry with sender: {:?}, nonce: {:?}, max_fee: {:?}", + sender, nonce, replacement_max_fee + ); + + // it is a valid entry only if there is no entry with the same sender, lower nonce and a lower fee + !self.batch_queue.iter().any(|(entry, _)| { + entry.sender == sender + && entry.nonced_verification_data.nonce < nonce + && entry.nonced_verification_data.max_fee < replacement_max_fee + }) + } + + pub(crate) fn is_queue_full(&self) -> bool { + self.batch_queue.len() >= self.max_size + } +} diff --git a/batcher/aligned-batcher/src/types/errors.rs b/crates/batcher/src/types/errors.rs similarity index 82% rename from batcher/aligned-batcher/src/types/errors.rs rename to crates/batcher/src/types/errors.rs index 1262045d64..6a9c72b181 100644 --- a/batcher/aligned-batcher/src/types/errors.rs +++ b/crates/batcher/src/types/errors.rs @@ -7,7 +7,7 @@ pub enum TransactionSendError { NoProofSubmitters, NoFeePerProof, InsufficientFeeForAggregator, - SubmissionInsufficientBalance, + SubmissionInsufficientBalance(Address), BatchAlreadySubmitted, InsufficientFunds, OnlyBatcherAllowed, @@ -30,8 +30,16 @@ impl From for TransactionSendError { "0x3102f10c" => TransactionSendError::BatchAlreadySubmitted, // can happen, don't flush "0x5c54305e" => TransactionSendError::InsufficientFunds, // shouldn't happen, don't flush "0x152bc288" => TransactionSendError::OnlyBatcherAllowed, // won't happen, don't flush - "0x4f779ceb" => TransactionSendError::SubmissionInsufficientBalance, // shouldn't happen, - // flush can help if something went wrong + "0x4f779ceb" => { + // SubmissionInsufficientBalance(address sender, uint256 balance, uint256 required) + // Try to decode the address parameter (first parameter after selector) + let address = byte_string + .get(34..74) // Skip "0x" + selector (8 chars) + padding (24 chars) + .and_then(|hex_str| hex::decode(hex_str).ok()) + .map(|bytes| Address::from_slice(&bytes)) + .unwrap_or(Address::zero()); + TransactionSendError::SubmissionInsufficientBalance(address) + } _ => { // flush because unkown error TransactionSendError::Generic(format!("Unknown bytestring error: {}", byte_string)) @@ -58,6 +66,8 @@ pub enum BatcherError { WsSinkEmpty, AddressNotFoundInUserStates(Address), QueueRemoveError(String), + StateCorruptedAndFlushed(String), + EthereumProviderError(String), } impl From for BatcherError { @@ -139,6 +149,12 @@ impl fmt::Debug for BatcherError { BatcherError::QueueRemoveError(e) => { write!(f, "Error while removing entry from queue: {}", e) } + BatcherError::StateCorruptedAndFlushed(reason) => { + write!(f, "Batcher state was corrupted and flushed: {}", reason) + } + BatcherError::EthereumProviderError(e) => { + write!(f, "Ethereum provider error: {}", e) + } } } } @@ -155,8 +171,12 @@ impl fmt::Display for TransactionSendError { TransactionSendError::InsufficientFeeForAggregator => { write!(f, "Insufficient fee for aggregator") } - TransactionSendError::SubmissionInsufficientBalance => { - write!(f, "Submission insufficient balance") + TransactionSendError::SubmissionInsufficientBalance(address) => { + write!( + f, + "Submission insufficient balance for address: {:?}", + address + ) } TransactionSendError::BatchAlreadySubmitted => { write!(f, "Batch already submitted") diff --git a/batcher/aligned-batcher/src/types/mod.rs b/crates/batcher/src/types/mod.rs similarity index 100% rename from batcher/aligned-batcher/src/types/mod.rs rename to crates/batcher/src/types/mod.rs diff --git a/batcher/aligned-batcher/src/types/user_state.rs b/crates/batcher/src/types/user_state.rs similarity index 100% rename from batcher/aligned-batcher/src/types/user_state.rs rename to crates/batcher/src/types/user_state.rs diff --git a/batcher/aligned-batcher/src/zk_utils/mod.rs b/crates/batcher/src/zk_utils/mod.rs similarity index 82% rename from batcher/aligned-batcher/src/zk_utils/mod.rs rename to crates/batcher/src/zk_utils/mod.rs index 7fba6eea34..c2f8700277 100644 --- a/batcher/aligned-batcher/src/zk_utils/mod.rs +++ b/crates/batcher/src/zk_utils/mod.rs @@ -1,7 +1,8 @@ +use crate::circom::verifier::verify_circom; use crate::gnark::verify_gnark; use crate::risc_zero::verify_risc_zero_proof; use crate::sp1::verify_sp1_proof; -use aligned_sdk::core::types::{ProvingSystemId, VerificationData}; +use aligned_sdk::common::types::{ProvingSystemId, VerificationData}; use ethers::types::U256; use log::{debug, warn}; use mina_account_verifier_ffi::verify_account_inclusion; @@ -21,7 +22,12 @@ fn verify_internal(verification_data: &VerificationData) -> bool { warn!("Trying to verify SP1 proof but ELF was not provided. Returning invalid"); return false; }; - verify_sp1_proof(verification_data.proof.as_slice(), elf.as_slice()) + let pub_inputs = &verification_data.pub_input.clone().unwrap_or_default(); + verify_sp1_proof( + verification_data.proof.as_slice(), + pub_inputs.as_slice(), + elf.as_slice(), + ) } ProvingSystemId::Risc0 => { let Some(image_id_slice) = &verification_data.vm_program_code else { @@ -40,7 +46,7 @@ fn verify_internal(verification_data: &VerificationData) -> bool { } ProvingSystemId::GnarkPlonkBls12_381 | ProvingSystemId::GnarkPlonkBn254 - | ProvingSystemId::Groth16Bn254 => { + | ProvingSystemId::GnarkGroth16Bn254 => { let Some(vk) = verification_data.verification_key.as_ref() else { warn!("Gnark verification key missing"); return false; @@ -61,6 +67,25 @@ fn verify_internal(verification_data: &VerificationData) -> bool { debug!("Gnark proof is valid: {}", is_valid); is_valid } + ProvingSystemId::CircomGroth16Bn256 => { + let Some(pub_input) = verification_data.pub_input.as_ref() else { + warn!("Circom Groth16 public input missing"); + return false; + }; + let Some(vk) = verification_data.verification_key.as_ref() else { + warn!("Circom Groth16 verification key missing"); + return false; + }; + + let is_valid = verify_circom( + &verification_data.proving_system, + &verification_data.proof, + pub_input, + vk, + ); + debug!("Circom Groth16 proof is valid: {}", is_valid); + is_valid + } ProvingSystemId::Mina => { let Some(pub_input) = verification_data.pub_input.as_ref() else { warn!("Mina public input is missing"); @@ -90,16 +115,17 @@ pub(crate) fn is_verifier_disabled( #[cfg(test)] mod test { use super::is_verifier_disabled; - use aligned_sdk::core::types::{ProvingSystemId, VerificationData}; + use aligned_sdk::common::types::{ProvingSystemId, VerificationData}; use ethers::types::Address; fn get_all_verifiers() -> Vec { let verifiers = vec![ ProvingSystemId::GnarkPlonkBls12_381, ProvingSystemId::GnarkPlonkBn254, - ProvingSystemId::Groth16Bn254, + ProvingSystemId::GnarkGroth16Bn254, ProvingSystemId::SP1, ProvingSystemId::Risc0, + ProvingSystemId::CircomGroth16Bn256, ]; // Just to make sure we are not missing any verifier. The compilation will fail if we do and it forces us to add it to the vec above. for verifier in verifiers.iter() { @@ -108,7 +134,8 @@ mod test { ProvingSystemId::Risc0 => (), ProvingSystemId::GnarkPlonkBls12_381 => (), ProvingSystemId::GnarkPlonkBn254 => (), - ProvingSystemId::Groth16Bn254 => (), + ProvingSystemId::GnarkGroth16Bn254 => (), + ProvingSystemId::CircomGroth16Bn256 => (), ProvingSystemId::Mina => (), ProvingSystemId::MinaAccount => (), } @@ -162,7 +189,7 @@ mod test { fn test_some_verifiers_disabled() { let verifiers = get_all_verifiers(); // Disabling only the first verifier - let disabled_verifiers = ethers::types::U256::from(0b10001); + let disabled_verifiers = ethers::types::U256::from(0b100001); for verifier in get_all_verifiers().iter() { let verification_data = VerificationData { proving_system: *verifier, diff --git a/batcher/aligned/Cargo.toml b/crates/cli/Cargo.toml similarity index 92% rename from batcher/aligned/Cargo.toml rename to crates/cli/Cargo.toml index eff4fe4921..bc718fcdf1 100644 --- a/batcher/aligned/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "aligned" -version = "0.14.0" +version = "0.20.0" edition = "2021" [dependencies] @@ -25,6 +25,6 @@ env_logger = "0.11.3" clap = { version = "4.5.4", features = ["derive"] } lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "efd46f0b0aea3aa95d94bba7de86cb96611b40d3", features = ["serde"] } ethers = { version = "2.0", features = ["ws", "rustls"] } -aligned-sdk = { path = "../aligned-sdk" } +aligned-sdk = { path = "../sdk" } rpassword = "7.3.1" sha3 = { version = "0.10.8" } diff --git a/batcher/aligned/abi/AlignedLayerServiceManager.json b/crates/cli/abi/AlignedLayerServiceManager.json similarity index 100% rename from batcher/aligned/abi/AlignedLayerServiceManager.json rename to crates/cli/abi/AlignedLayerServiceManager.json diff --git a/batcher/aligned/generate_proof_and_send.sh b/crates/cli/generate_proof_and_send.sh similarity index 83% rename from batcher/aligned/generate_proof_and_send.sh rename to crates/cli/generate_proof_and_send.sh index 42d01b8fbd..6a1c3ff8e8 100755 --- a/batcher/aligned/generate_proof_and_send.sh +++ b/crates/cli/generate_proof_and_send.sh @@ -32,13 +32,13 @@ if [ -z "$NETWORK" ]; then fi cmd=( - ./batcher/target/release/aligned + ./crates/target/release/aligned submit - --proving_system Groth16Bn254 + --proving_system GnarkGroth16Bn254 --repetitions "$repetitions" - --proof "scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_groth16.proof" - --public_input "scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_groth16.pub" - --vk "scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_groth16.vk" + --proof "scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_gnark_groth16_0_12_0.proof" + --public_input "scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_gnark_groth16_0_12_0.pub" + --vk "scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${x}_gnark_groth16_0_12_0.vk" --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 --rpc_url "$RPC" --network "$NETWORK" diff --git a/batcher/aligned/get_proof_test_files.sh b/crates/cli/get_proof_test_files.sh similarity index 56% rename from batcher/aligned/get_proof_test_files.sh rename to crates/cli/get_proof_test_files.sh index 397d28ef56..a3d2965983 100755 --- a/batcher/aligned/get_proof_test_files.sh +++ b/crates/cli/get_proof_test_files.sh @@ -6,11 +6,13 @@ CURRENT_TAG=$(curl -s -L \ https://api.github.com/repos/yetanotherco/aligned_layer/releases/latest \ | grep '"tag_name":' | awk -F'"' '{print $4}') -SP1_ELF_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci.elf" -SP1_PROOF_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci.proof" +SP1_ELF_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf" +SP1_PROOF_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof" +SP1_PUBLIC_INPUT_URL="https://raw.githubusercontent.com/yetanotherco/aligned_layer/$CURRENT_TAG/scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub" -SP1_ELF_NAME="sp1_fibonacci.elf" -SP1_PROOF_NAME="sp1_fibonacci.proof" +SP1_ELF_NAME="sp1_fibonacci_5_0_0.elf" +SP1_PROOF_NAME="sp1_fibonacci_5_0_0.proof" +SP1_PUBLIC_INPUT_NAME="sp1_fibonacci_5_0_0.pub" BASE_DIR=$HOME ALIGNED_DIR="${ALIGNED_DIR-"$BASE_DIR/.aligned"}" @@ -36,7 +38,17 @@ else exit 1 fi +echo "Downloading SP1 public inputs file..." + +if curl -sSf -L "$SP1_PUBLIC_INPUT_URL" -o "$ALIGNED_TEST_FILES_DIR/$SP1_PUBLIC_INPUT_NAME"; then + echo "SP1 public inputs downloaded successful" +else + echo "Error: Failed to downloaded $SP1_PUBLIC_INPUT_URL" + exit 1 +fi + chmod +x "$ALIGNED_TEST_FILES_DIR/$SP1_ELF_NAME" chmod +x "$ALIGNED_TEST_FILES_DIR/$SP1_PROOF_NAME" +chmod +x "$ALIGNED_TEST_FILES_DIR/$SP1_PUBLIC_INPUT_NAME" -echo "SP1 ELF and proof files downloaded successfully in $ALIGNED_TEST_FILES_DIR" +echo "SP1 ELF, proof and public inputs files downloaded successfully in $ALIGNED_TEST_FILES_DIR" diff --git a/batcher/aligned/install_aligned.sh b/crates/cli/install_aligned.sh similarity index 100% rename from batcher/aligned/install_aligned.sh rename to crates/cli/install_aligned.sh diff --git a/batcher/aligned-task-sender/rust-toolchain b/crates/cli/rust-toolchain similarity index 63% rename from batcher/aligned-task-sender/rust-toolchain rename to crates/cli/rust-toolchain index 989860f406..9397b95266 100644 --- a/batcher/aligned-task-sender/rust-toolchain +++ b/crates/cli/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2024-04-17" +channel = "stable" components = ["llvm-tools", "rustc-dev"] diff --git a/batcher/aligned/send_burst_tasks.sh b/crates/cli/send_burst_tasks.sh similarity index 90% rename from batcher/aligned/send_burst_tasks.sh rename to crates/cli/send_burst_tasks.sh index f46464aa6c..9cc2db2699 100755 --- a/batcher/aligned/send_burst_tasks.sh +++ b/crates/cli/send_burst_tasks.sh @@ -27,7 +27,7 @@ fi while true do # Run in backaground to be able to run onece per second, and not wait for the previous one to finish - . ./batcher/aligned/generate_proof_and_send.sh $counter $burst & + . ./crates/cli/generate_proof_and_send.sh $counter $burst & sleep 3 counter=$((counter + 1)) done diff --git a/crates/cli/send_burst_with_random_address.sh b/crates/cli/send_burst_with_random_address.sh new file mode 100755 index 0000000000..bf5c2524d6 --- /dev/null +++ b/crates/cli/send_burst_with_random_address.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# This script send periodically a burst of proof with a specific amount of repetitions +# the proofs always have a random address +# Params: +# PROOF_TYPE = sp1|groth16|plonk|risc0 (default sp1) +# RPC_URL (default localhost:8545) +# NETWORK devnet|holesky-stage|holesky +# REPETITIONS (default 1) +# BURST_DELAY in secs (default 30) + +if [ -z $BURST_DELAY ]; then + echo "Using default burst delay 30" + BURST_DELAY=30 +fi + +while true +do + . ./send_proof_with_random_address.sh & + sleep $BURST_DELAY +done diff --git a/batcher/aligned/send_infinite_sp1_tasks/requirements.txt b/crates/cli/send_infinite_sp1_tasks/requirements.txt similarity index 100% rename from batcher/aligned/send_infinite_sp1_tasks/requirements.txt rename to crates/cli/send_infinite_sp1_tasks/requirements.txt diff --git a/batcher/aligned/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh b/crates/cli/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh similarity index 97% rename from batcher/aligned/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh rename to crates/cli/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh index 620a465719..3f1487422a 100755 --- a/batcher/aligned/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh +++ b/crates/cli/send_infinite_sp1_tasks/send_infinite_sp1_tasks.sh @@ -18,7 +18,7 @@ if [ -z "$NETWORK" ]; then NETWORK="devnet" fi -cd ./batcher/aligned +cd ./crates/cli while true do diff --git a/batcher/aligned/send_infinite_tasks.sh b/crates/cli/send_infinite_tasks.sh similarity index 76% rename from batcher/aligned/send_infinite_tasks.sh rename to crates/cli/send_infinite_tasks.sh index 90e24a4013..1f0b489acb 100755 --- a/batcher/aligned/send_infinite_tasks.sh +++ b/crates/cli/send_infinite_tasks.sh @@ -26,11 +26,11 @@ do go run scripts/test_files/gnark_groth16_bn254_infinite_script/cmd/main.go $counter - cd ./batcher/aligned && cargo run --release -- submit \ - --proving_system Groth16Bn254 \ - --proof ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${counter}_groth16.proof \ - --public_input ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${counter}_groth16.pub \ - --vk ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${counter}_groth16.vk \ + cd ./crates/cli && cargo run --release -- submit \ + --proving_system GnarkGroth16Bn254 \ + --proof ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${counter}_gnark_groth16_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${counter}_gnark_groth16_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_${counter}_gnark_groth16_0_12_0.vk \ --proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \ --repetitions "2" \ --rpc_url "$RPC" \ diff --git a/crates/cli/send_proof_with_random_address.sh b/crates/cli/send_proof_with_random_address.sh new file mode 100755 index 0000000000..41d43a7b3f --- /dev/null +++ b/crates/cli/send_proof_with_random_address.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +# Params: +# PROOF_TYPE = sp1|gnark_groth16|gnark_plonk|risc0|circom_groth16 (default sp1) +# RPC_URL (default localhost:8545) +# NETWORK devnet|holesky-stage|holesky +# REPETITIONS (default 1) + +if [ -z "$NETWORK" ]; then + echo "NETWORK is not set. Setting it to devnet" + NETWORK="devnet" +fi + +if [ -z "$RPC_URL" ]; then + echo "RPC_URL is not set. Setting it to localhost:8545" + RPC_URL="http://localhost:8545" +fi + +if [ -z $PROOF_TYPE ]; then + echo "Proof type not provided, using SP1 default" + PROOF_TYPE="sp1" #sp1|gnark_groth16|gnark_plonk|risc0|circom_groth16 +fi + +if [ -z $REPETITIONS ]; then + echo "REPETITIONS not provided, using 1 as default" + REPETITIONS=1 +fi + +echo "Sending $REPETITIONS $PROOF_TYPE proof/s to the batcher" +echo "Batcher in $NETWORK and endpoint at $RPC_URL" + +if [[ $PROOF_TYPE == "sp1" ]]; then + aligned submit \ + --proving_system SP1 \ + --proof ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \ + --vm_program ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \ + --public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \ + --random_address \ + --repetitions $REPETITIONS \ + --rpc_url $RPC_URL \ + --network $NETWORK + +elif [[ $PROOF_TYPE == "gnark_groth16" ]]; then + aligned submit \ + --proving_system GnarkGroth16Bn254 \ + --proof ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.vk \ + --random_address \ + --repetitions $REPETITIONS \ + --rpc_url $RPC_URL \ + --network $NETWORK + +elif [[ $PROOF_TYPE == "gnark_plonk" ]]; then + aligned submit \ + --proving_system GnarkPlonkBn254 \ + --proof ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.proof \ + --public_input ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_pub_input_0_12_0.pub \ + --vk ../../scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.vk \ + --random_address \ + --repetitions $REPETITIONS \ + --rpc_url $RPC_URL \ + --network $NETWORK + +elif [[ $PROOF_TYPE == "risc0" ]]; then + aligned submit \ + --proving_system Risc0 \ + --proof ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof \ + --vm_program ../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ + --public_input ../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub \ + --random_address \ + --repetitions $REPETITIONS \ + --rpc_url $RPC_URL \ + --network $NETWORK + +elif [[ $PROOF_TYPE == "circom_groth16" ]]; then + aligned submit \ + --proving_system CircomGroth16Bn256 \ + --proof ../../scripts/test_files/circom_groth16_bn256_script/proof.json \ + --public_input ../../scripts/test_files/circom_groth16_bn256_script/public.json \ + --vk ../../scripts/test_files/circom_groth16_bn256_script/verification_key.json \ + --random_address \ + --repetitions $REPETITIONS \ + --rpc_url $RPC_URL \ + --network $NETWORK + +else + echo "Incorrect proof type provided $1" + exit 1 +fi diff --git a/batcher/aligned/src/main.rs b/crates/cli/src/main.rs similarity index 58% rename from batcher/aligned/src/main.rs rename to crates/cli/src/main.rs index 243da2bf65..9c2ee44216 100644 --- a/batcher/aligned/src/main.rs +++ b/crates/cli/src/main.rs @@ -4,24 +4,37 @@ use std::io::BufReader; use std::io::Write; use std::path::PathBuf; use std::str::FromStr; - -use aligned_sdk::communication::serialization::cbor_deserialize; -use aligned_sdk::core::types::FeeEstimationType; -use aligned_sdk::core::{ +use std::time::Duration; +use std::time::SystemTime; +use std::time::UNIX_EPOCH; + +use aligned_sdk::aggregation_layer; +use aligned_sdk::aggregation_layer::AggregationModeVerificationData; +use aligned_sdk::common::types::FeeEstimationType; +use aligned_sdk::common::{ errors::{AlignedError, FeeEstimateError, SubmitError}, types::{AlignedVerificationData, Network, ProvingSystemId, VerificationData}, }; -use aligned_sdk::sdk::estimate_fee; -use aligned_sdk::sdk::get_chain_id; -use aligned_sdk::sdk::get_nonce_from_batcher; -use aligned_sdk::sdk::get_nonce_from_ethereum; -use aligned_sdk::sdk::{deposit_to_aligned, get_balance_in_aligned}; -use aligned_sdk::sdk::{get_vk_commitment, is_proof_verified, save_response, submit_multiple}; + +use aligned_sdk::communication::serialization::cbor_deserialize; +use aligned_sdk::verification_layer; +use aligned_sdk::verification_layer::estimate_fee; +use aligned_sdk::verification_layer::get_chain_id; +use aligned_sdk::verification_layer::get_last_max_fee; +use aligned_sdk::verification_layer::get_nonce_from_batcher; +use aligned_sdk::verification_layer::get_nonce_from_ethereum; +use aligned_sdk::verification_layer::get_unlock_block_time; +use aligned_sdk::verification_layer::lock_balance_in_aligned; +use aligned_sdk::verification_layer::unlock_balance_in_aligned; +use aligned_sdk::verification_layer::withdraw_balance_from_aligned; +use aligned_sdk::verification_layer::{deposit_to_aligned, get_balance_in_aligned}; +use aligned_sdk::verification_layer::{get_vk_commitment, save_response, submit_multiple}; use clap::Args; use clap::Parser; use clap::Subcommand; use clap::ValueEnum; use env_logger::Env; +use ethers::core::k256::pkcs8::der::asn1::UtcTime; use ethers::prelude::*; use ethers::utils::format_ether; use ethers::utils::hex; @@ -34,11 +47,15 @@ use transaction::eip2718::TypedTransaction; use crate::AlignedCommands::DepositToBatcher; use crate::AlignedCommands::GetUserAmountOfQueuedProofs; use crate::AlignedCommands::GetUserBalance; +use crate::AlignedCommands::GetUserLastMaxFee; use crate::AlignedCommands::GetUserNonce; use crate::AlignedCommands::GetUserNonceFromEthereum; use crate::AlignedCommands::GetVkCommitment; +use crate::AlignedCommands::LockFunds; use crate::AlignedCommands::Submit; +use crate::AlignedCommands::UnlockFunds; use crate::AlignedCommands::VerifyProofOnchain; +use crate::AlignedCommands::WithdrawFunds; #[derive(Parser, Debug)] #[command(version, about, long_about = None)] @@ -61,6 +78,12 @@ pub enum AlignedCommands { name = "deposit-to-batcher" )] DepositToBatcher(DepositToBatcherArgs), + #[clap(about = "Unlocks funds from the batcher", name = "unlock-funds")] + UnlockFunds(LockUnlockFundsArgs), + #[clap(about = "Lock funds in the batcher", name = "lock-funds")] + LockFunds(LockUnlockFundsArgs), + #[clap(about = "Withdraw funds from the batcher", name = "withdraw-funds")] + WithdrawFunds(WithdrawFundsArgs), #[clap(about = "Get user balance from the batcher", name = "get-user-balance")] GetUserBalance(GetUserBalanceArgs), #[clap( @@ -73,11 +96,18 @@ pub enum AlignedCommands { name = "get-user-nonce-from-ethereum" )] GetUserNonceFromEthereum(GetUserNonceFromEthereumArgs), + #[clap( + about = "Gets user current last max fee from the batcher. This is the max limit you can send in your next proof.", + name = "get-user-last-max-fee" + )] + GetUserLastMaxFee(GetUserLastMaxFeeArgs), #[clap( about = "Gets the number of proofs a user has queued in the Batcher.", name = "get-user-amount-of-queued-proofs" )] GetUserAmountOfQueuedProofs(GetUserAmountOfQueuedProofsArgs), + #[clap(about = "", name = "verify-agg-proof")] + VerifyProofInAggMode(VerifyProofInAggModeArgs), } #[derive(Parser, Debug)] @@ -88,42 +118,61 @@ pub struct SubmitArgs { default_value = "http://localhost:8545" )] eth_rpc_url: String, + #[arg(name = "Proving system", long = "proving_system")] proving_system_flag: ProvingSystemArg, + #[arg(name = "Proof file path", long = "proof")] proof_file_name: PathBuf, + #[arg(name = "Public input file name", long = "public_input")] pub_input_file_name: Option, + #[arg(name = "Verification key file name", long = "vk")] verification_key_file_name: Option, + #[arg(name = "VM prgram code file name", long = "vm_program")] vm_program_code_file_name: Option, + #[arg( name = "Number of repetitions", long = "repetitions", default_value = "1" )] repetitions: usize, + #[arg( name = "Proof generator address", long = "proof_generator_addr", default_value = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" )] // defaults to anvil address 1 proof_generator_addr: String, + #[arg( name = "Aligned verification data directory Path", long = "aligned_verification_data_path", default_value = "./aligned_verification_data/" )] batch_inclusion_data_directory_path: String, + #[command(flatten)] private_key_type: PrivateKeyType, + #[arg(name = "Nonce", long = "nonce")] nonce: Option, // String because U256 expects hex + #[clap(flatten)] network: NetworkArg, + #[command(flatten)] fee_type: FeeType, + + #[arg( + name = "Random Address", + long = "random_address", + default_value = "false" + )] + random_address: bool, } impl SubmitArgs { @@ -183,6 +232,38 @@ pub struct DepositToBatcherArgs { amount: String, } +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +pub struct LockUnlockFundsArgs { + #[command(flatten)] + private_key_type: PrivateKeyType, + #[arg( + name = "Ethereum RPC provider address", + long = "rpc_url", + default_value = "http://localhost:8545" + )] + eth_rpc_url: String, + #[clap(flatten)] + network: NetworkArg, +} + +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +pub struct WithdrawFundsArgs { + #[command(flatten)] + private_key_type: PrivateKeyType, + #[arg( + name = "Ethereum RPC provider address", + long = "rpc_url", + default_value = "http://localhost:8545" + )] + eth_rpc_url: String, + #[clap(flatten)] + network: NetworkArg, + #[arg(name = "Amount to withdraw", long = "amount", required = true)] + amount: String, +} + #[derive(Parser, Debug)] #[command(version, about, long_about = None)] pub struct VerifyProofOnchainArgs { @@ -242,6 +323,15 @@ pub struct GetUserNonceArgs { address: String, } +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +pub struct GetUserLastMaxFeeArgs { + #[clap(flatten)] + network: NetworkArg, + #[arg(name = "The user's Ethereum address", required = true)] + address: String, +} + #[derive(Parser, Debug)] #[command(version, about, long_about = None)] pub struct GetUserNonceFromEthereumArgs { @@ -280,6 +370,36 @@ pub struct GetUserAmountOfQueuedProofsArgs { network: NetworkArg, } +#[derive(Parser, Debug)] +#[command(version, about, long_about = None)] +pub struct VerifyProofInAggModeArgs { + #[arg( + name = "Ethereum RPC provider url", + long = "rpc_url", + default_value = "http://localhost:8545" + )] + eth_rpc_url: String, + #[arg(name = "Ethereum Beacon client url", long = "beacon_url")] + beacon_client_url: String, + #[clap(flatten)] + network: NetworkArg, + #[arg( + name = "From which block to start, if not provided it defaults to fetch logs from the past 25hs", + long = "from-block" + )] + from_block: Option, + #[arg(name = "Proving system", long = "proving_system")] + proving_system: ProvingSystemArg, + #[arg(name = "Public input file name", long = "public_input")] + pub_input_file_name: Option, + #[arg( + name = "Verification key hash", + long = "program-id-file", + required = true + )] + program_id_file: PathBuf, +} + #[derive(Args, Debug)] #[group(multiple = false)] pub struct PrivateKeyType { @@ -295,12 +415,14 @@ pub enum ProvingSystemArg { GnarkPlonkBls12_381, #[clap(name = "GnarkPlonkBn254")] GnarkPlonkBn254, - #[clap(name = "Groth16Bn254")] - Groth16Bn254, + #[clap(name = "GnarkGroth16Bn254")] + GnarkGroth16Bn254, #[clap(name = "SP1")] SP1, #[clap(name = "Risc0")] Risc0, + #[clap(name = "CircomGroth16Bn256")] + CircomGroth16Bn256, #[clap(name = "Mina")] Mina, #[clap(name = "MinaAccount")] @@ -314,9 +436,10 @@ impl From for ProvingSystemId { match proving_system { ProvingSystemArg::GnarkPlonkBls12_381 => ProvingSystemId::GnarkPlonkBls12_381, ProvingSystemArg::GnarkPlonkBn254 => ProvingSystemId::GnarkPlonkBn254, - ProvingSystemArg::Groth16Bn254 => ProvingSystemId::Groth16Bn254, + ProvingSystemArg::GnarkGroth16Bn254 => ProvingSystemId::GnarkGroth16Bn254, ProvingSystemArg::SP1 => ProvingSystemId::SP1, ProvingSystemArg::Risc0 => ProvingSystemId::Risc0, + ProvingSystemArg::CircomGroth16Bn256 => ProvingSystemId::CircomGroth16Bn256, ProvingSystemArg::Mina => ProvingSystemId::Mina, ProvingSystemArg::MinaAccount => ProvingSystemId::MinaAccount, } @@ -328,7 +451,10 @@ enum NetworkNameArg { Devnet, Holesky, HoleskyStage, + Hoodi, Mainnet, + MainnetStage, + Sepolia, } impl FromStr for NetworkNameArg { @@ -339,9 +465,12 @@ impl FromStr for NetworkNameArg { "devnet" => Ok(NetworkNameArg::Devnet), "holesky" => Ok(NetworkNameArg::Holesky), "holesky-stage" => Ok(NetworkNameArg::HoleskyStage), + "hoodi" => Ok(NetworkNameArg::Hoodi), "mainnet" => Ok(NetworkNameArg::Mainnet), + "mainnet-stage" => Ok(NetworkNameArg::MainnetStage), + "sepolia" => Ok(NetworkNameArg::Sepolia), _ => Err( - "Unknown network. Possible values: devnet, holesky, holesky-stage, mainnet" + "Unknown network. Possible values: devnet, holesky, holesky-stage, hoodi, mainnet, mainnet-stage, sepolia" .to_string(), ), } @@ -354,9 +483,10 @@ struct NetworkArg { name = "The working network's name", long = "network", default_value = "devnet", - help = "[possible values: devnet, holesky, holesky-stage, mainnet]" + help = "[possible values: devnet, holesky, holesky-stage, hoodi, mainnet, mainnet-stage, sepolia]" )] network: Option, + #[arg( name = "Aligned Service Manager Contract Address", long = "aligned_service_manager", @@ -405,7 +535,10 @@ impl From for Network { Some(NetworkNameArg::Devnet) => Network::Devnet, Some(NetworkNameArg::Holesky) => Network::Holesky, Some(NetworkNameArg::HoleskyStage) => Network::HoleskyStage, + Some(NetworkNameArg::Hoodi) => Network::Hoodi, Some(NetworkNameArg::Mainnet) => Network::Mainnet, + Some(NetworkNameArg::MainnetStage) => Network::MainnetStage, + Some(NetworkNameArg::Sepolia) => Network::Sepolia, } } } @@ -476,10 +609,7 @@ async fn main() -> Result<(), AlignedError> { match LocalWallet::from_str(ANVIL_PRIVATE_KEY) { Ok(wallet) => wallet, Err(e) => { - warn!( - "Failed to create wallet from anvil private key: {}", - e.to_string() - ); + warn!("Failed to create wallet from anvil private key: {}", e); return Ok(()); } } @@ -488,48 +618,59 @@ async fn main() -> Result<(), AlignedError> { let chain_id = get_chain_id(eth_rpc_url.as_str()).await?; wallet = wallet.with_chain_id(chain_id); + let used_network: Network = submit_args.network.clone().into(); + let nonce = match &submit_args.nonce { Some(nonce) => U256::from_dec_str(nonce).map_err(|_| SubmitError::InvalidNonce)?, - None => { - get_nonce_from_batcher(submit_args.network.clone().into(), wallet.address()) - .await - .map_err(|e| match e { - aligned_sdk::core::errors::GetNonceError::EthRpcError(e) => { - SubmitError::GetNonceError(e) - } - aligned_sdk::core::errors::GetNonceError::ConnectionFailed(e) => { - SubmitError::GenericError(e) - } - aligned_sdk::core::errors::GetNonceError::InvalidRequest(e) => { - SubmitError::GenericError(e) - } - aligned_sdk::core::errors::GetNonceError::SerializationError(e) => { - SubmitError::GenericError(e) - } - aligned_sdk::core::errors::GetNonceError::ProtocolMismatch { - current, - expected, - } => SubmitError::ProtocolVersionMismatch { current, expected }, - aligned_sdk::core::errors::GetNonceError::UnexpectedResponse(e) => { - SubmitError::UnexpectedBatcherResponse(e) - } - })? - } + None => get_nonce_from_batcher(used_network.clone(), wallet.address()) + .await + .map_err(|e| match e { + aligned_sdk::common::errors::GetNonceError::EthRpcError(e) => { + SubmitError::GetNonceError(e) + } + aligned_sdk::common::errors::GetNonceError::ConnectionFailed(e) => { + SubmitError::GenericError(e) + } + aligned_sdk::common::errors::GetNonceError::InvalidRequest(e) => { + SubmitError::GenericError(e) + } + aligned_sdk::common::errors::GetNonceError::SerializationError(e) => { + SubmitError::GenericError(e) + } + aligned_sdk::common::errors::GetNonceError::ProtocolMismatch { + current, + expected, + } => SubmitError::ProtocolVersionMismatch { current, expected }, + aligned_sdk::common::errors::GetNonceError::UnexpectedResponse(e) => { + SubmitError::UnexpectedBatcherResponse(e) + } + aligned_sdk::common::errors::GetNonceError::GenericError(e) => { + SubmitError::GenericError(e) + } + })?, }; warn!("Nonce: {nonce}"); let verification_data = verification_data_from_args(&submit_args)?; - let verification_data_arr = vec![verification_data; repetitions]; + let mut verification_data_arr = vec![verification_data; repetitions]; + + // If random_address flag is enabled, change every address with a random value + if submit_args.random_address { + info!("Randomizing proof generator address for each proof..."); + for verification_data in verification_data_arr.iter_mut() { + verification_data.proof_generator_addr = Address::random(); + } + } info!("Submitting proofs to the Aligned batcher..."); let aligned_verification_data_vec = submit_multiple( - submit_args.network.into(), + used_network.clone(), &verification_data_arr, max_fee_wei, - wallet.clone(), + wallet, nonce, ) .await; @@ -564,9 +705,22 @@ async fn main() -> Result<(), AlignedError> { } for batch_merkle_root in unique_batch_merkle_roots { + let base_url = match used_network { + Network::Holesky => "https://holesky.explorer.alignedlayer.com/batches/0x", + Network::HoleskyStage => "https://stage.explorer.alignedlayer.com/batches/0x", + Network::Hoodi => "https://hoodi.explorer.alignedlayer.com/batches/0x", + Network::Mainnet => "https://explorer.alignedlayer.com/batches/0x", + Network::MainnetStage => { + "https://mainnetstage.explorer.alignedlayer.com/batches/0x" + } + Network::Sepolia => "https://sepolia.explorer.alignedlayer.com/batches/0x", + Network::Devnet => "http://localhost:4000/batches/0x", + _ => "http://localhost:4000/batches/0x", + }; + info!( - "https://explorer.alignedlayer.com/batches/0x{}", - hex::encode(batch_merkle_root) + "{}", + base_url.to_string() + hex::encode(batch_merkle_root).as_str() ); } } @@ -583,7 +737,7 @@ async fn main() -> Result<(), AlignedError> { cbor_deserialize(reader).map_err(SubmitError::SerializationError)?; info!("Verifying response data matches sent proof data..."); - let response = is_proof_verified( + let response = verification_layer::is_proof_verified( &aligned_verification_data, verify_inclusion_args.network.into(), &verify_inclusion_args.eth_rpc_url, @@ -653,7 +807,7 @@ async fn main() -> Result<(), AlignedError> { let chain_id = get_chain_id(eth_rpc_url.as_str()).await?; wallet = wallet.with_chain_id(chain_id); - let client = SignerMiddleware::new(eth_rpc_provider.clone(), wallet.clone()); + let client = SignerMiddleware::new(eth_rpc_provider, wallet); match deposit_to_aligned(amount_wei, client, deposit_to_batcher_args.network.into()) .await @@ -669,6 +823,197 @@ async fn main() -> Result<(), AlignedError> { } } } + UnlockFunds(args) => { + let eth_rpc_url = args.eth_rpc_url; + let eth_rpc_provider = + Provider::::try_from(eth_rpc_url.clone()).map_err(|e| { + SubmitError::EthereumProviderError(format!( + "Error while connecting to Ethereum: {}", + e + )) + })?; + + let keystore_path = &args.private_key_type.keystore_path; + let private_key = &args.private_key_type.private_key; + + let mut wallet = if let Some(keystore_path) = keystore_path { + let password = rpassword::prompt_password("Please enter your keystore password:") + .map_err(|e| SubmitError::GenericError(e.to_string()))?; + Wallet::decrypt_keystore(keystore_path, password) + .map_err(|e| SubmitError::GenericError(e.to_string()))? + } else if let Some(private_key) = private_key { + private_key + .parse::() + .map_err(|e| SubmitError::GenericError(e.to_string()))? + } else { + warn!("Missing keystore or private key used for payment."); + return Ok(()); + }; + + let chain_id = get_chain_id(eth_rpc_url.as_str()).await?; + wallet = wallet.with_chain_id(chain_id); + + let client = SignerMiddleware::new(eth_rpc_provider, wallet); + + match unlock_balance_in_aligned(&client, args.network.into()).await { + Ok(receipt) => { + info!( + "Funds in batcher unlocked successfully. Receipt: 0x{:x}", + receipt.transaction_hash + ); + } + Err(e) => { + error!("Transaction failed: {:?}", e); + } + } + } + LockFunds(args) => { + let eth_rpc_url = args.eth_rpc_url; + let eth_rpc_provider = + Provider::::try_from(eth_rpc_url.clone()).map_err(|e| { + SubmitError::EthereumProviderError(format!( + "Error while connecting to Ethereum: {}", + e + )) + })?; + + let keystore_path = &args.private_key_type.keystore_path; + let private_key = &args.private_key_type.private_key; + + let mut wallet = if let Some(keystore_path) = keystore_path { + let password = rpassword::prompt_password("Please enter your keystore password:") + .map_err(|e| SubmitError::GenericError(e.to_string()))?; + Wallet::decrypt_keystore(keystore_path, password) + .map_err(|e| SubmitError::GenericError(e.to_string()))? + } else if let Some(private_key) = private_key { + private_key + .parse::() + .map_err(|e| SubmitError::GenericError(e.to_string()))? + } else { + warn!("Missing keystore or private key used for payment."); + return Ok(()); + }; + + let chain_id = get_chain_id(eth_rpc_url.as_str()).await?; + wallet = wallet.with_chain_id(chain_id); + + let client = SignerMiddleware::new(eth_rpc_provider, wallet); + + match lock_balance_in_aligned(&client, args.network.into()).await { + Ok(receipt) => { + info!( + "Funds in batcher locked successfully. Receipt: 0x{:x}", + receipt.transaction_hash + ); + } + Err(e) => { + error!("Transaction failed: {:?}", e); + } + } + } + WithdrawFunds(args) => { + if !args.amount.ends_with("ether") { + error!("Amount should be in the format XX.XXether"); + return Ok(()); + } + + let amount_ether = args.amount.replace("ether", ""); + + let amount_wei = parse_ether(&amount_ether).map_err(|e| { + SubmitError::EthereumProviderError(format!("Error while parsing amount: {}", e)) + })?; + + let eth_rpc_url = args.eth_rpc_url; + let eth_rpc_provider = + Provider::::try_from(eth_rpc_url.clone()).map_err(|e| { + SubmitError::EthereumProviderError(format!( + "Error while connecting to Ethereum: {}", + e + )) + })?; + + let keystore_path = &args.private_key_type.keystore_path; + let private_key = &args.private_key_type.private_key; + + let mut wallet = if let Some(keystore_path) = keystore_path { + let password = rpassword::prompt_password("Please enter your keystore password:") + .map_err(|e| SubmitError::GenericError(e.to_string()))?; + Wallet::decrypt_keystore(keystore_path, password) + .map_err(|e| SubmitError::GenericError(e.to_string()))? + } else if let Some(private_key) = private_key { + private_key + .parse::() + .map_err(|e| SubmitError::GenericError(e.to_string()))? + } else { + warn!("Missing keystore or private key used for payment."); + return Ok(()); + }; + + let unlock_block_time = match get_unlock_block_time( + wallet.address(), + ð_rpc_url, + args.network.clone().into(), + ) + .await + { + Ok(value) => value, + Err(e) => { + error!("Failed to get unlock time: {:?}", e); + return Ok(()); + } + }; + + let current_timestamp = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("Time went backwards") + .as_secs(); + + let unlock_time = UtcTime::from_unix_duration(Duration::from_secs(unlock_block_time)) + .expect("invalid unlock time"); + let now_time = + UtcTime::from_system_time(SystemTime::now()).expect("invalid system time"); + + let retry_after_minutes = if unlock_block_time > current_timestamp { + (unlock_block_time - current_timestamp) / 60 + } else { + 0 + }; + + if unlock_block_time == 0 { + error!("Funds are locked, you need to unlock them first."); + return Ok(()); + } + + if unlock_block_time > current_timestamp { + warn!( + "Funds are still locked. You need to wait {} minutes before being able to withdraw after unlocking the funds.\n\ + Unlocks in block time: {}\n\ + Current time: {}", + retry_after_minutes, + format_utc_time(unlock_time), + format_utc_time(now_time) + ); + + return Ok(()); + } + + let chain_id = get_chain_id(eth_rpc_url.as_str()).await?; + wallet = wallet.with_chain_id(chain_id); + + let client = SignerMiddleware::new(eth_rpc_provider, wallet); + + match withdraw_balance_from_aligned(&client, args.network.into(), amount_wei).await { + Ok(receipt) => { + info!( + "Balance withdraw from batcher successfully. Receipt: 0x{:x}", + receipt.transaction_hash + ); + } + Err(e) => { + error!("Transaction failed: {:?}", e); + } + } + } GetUserBalance(get_user_balance_args) => { let user_address = H160::from_str(&get_user_balance_args.user_address).unwrap(); match get_balance_in_aligned( @@ -705,8 +1050,7 @@ async fn main() -> Result<(), AlignedError> { } GetUserNonceFromEthereum(args) => { let address = H160::from_str(&args.address).unwrap(); - let network = args.network.into(); - match get_nonce_from_ethereum(&args.eth_rpc_url, address, network).await { + match get_nonce_from_ethereum(&args.eth_rpc_url, address, args.network.into()).await { Ok(nonce) => { info!( "Nonce for address {} in BatcherPaymentService contract is {}", @@ -719,6 +1063,22 @@ async fn main() -> Result<(), AlignedError> { } } } + GetUserLastMaxFee(args) => { + let address = H160::from_str(&args.address).unwrap(); + match get_last_max_fee(args.network.into(), address).await { + Ok(last_max_fee) => { + let last_max_fee_ether = ethers::utils::format_ether(last_max_fee); + info!( + "Last max fee for address {} is {}eth", + address, last_max_fee_ether + ); + } + Err(e) => { + error!("Error while getting last max fee: {:?}", e); + return Ok(()); + } + } + } GetUserAmountOfQueuedProofs(args) => { let address = H160::from_str(&args.address).unwrap(); let network: Network = args.network.into(); @@ -737,6 +1097,64 @@ async fn main() -> Result<(), AlignedError> { ); return Ok(()); } + AlignedCommands::VerifyProofInAggMode(args) => { + let program_id_key = read_file(args.program_id_file)? + .try_into() + .expect("Invalid hexadecimal encoded vk hash"); + + let Some(pub_inputs_file_name) = args.pub_input_file_name else { + error!("Public input file not provided"); + return Ok(()); + }; + let public_inputs = read_file(pub_inputs_file_name)?; + + let proof_data = match args.proving_system { + ProvingSystemArg::SP1 => AggregationModeVerificationData::SP1 { + vk: program_id_key, + public_inputs, + }, + ProvingSystemArg::Risc0 => AggregationModeVerificationData::Risc0 { + image_id: program_id_key, + public_inputs, + }, + _ => { + error!("Proving system not supported in aggregation mode"); + return Ok(()); + } + }; + + let proof_status = match aggregation_layer::check_proof_verification( + &proof_data, + args.network.into(), + args.eth_rpc_url, + args.beacon_client_url, + args.from_block, + ) + .await + { + Ok(res) => res, + Err(e) => { + error!("Error while trying to verify proof {:?}", e); + return Ok(()); + } + }; + + match proof_status { + aggregation_layer::ProofStatus::Verified { merkle_root, .. } => { + info!("Your proof has been verified in the aggregated proof with merkle root 0x{}", hex::encode(merkle_root)); + } + aggregation_layer::ProofStatus::Invalid => { + error!( + "Your proof was found in the blob but the Merkle Root verification failed." + ) + } + aggregation_layer::ProofStatus::NotFound => { + error!("Your proof wasn't found in the logs. Try specifying an earlier `from_block` to search further back in history.") + } + } + + return Ok(()); + } } Ok(()) @@ -748,7 +1166,7 @@ fn verification_data_from_args(args: &SubmitArgs) -> Result> = None; + let pub_input: Option>; let mut verification_key: Option> = None; let mut vm_program_code: Option> = None; @@ -758,6 +1176,11 @@ fn verification_data_from_args(args: &SubmitArgs) -> Result { vm_program_code = Some(read_file_option( @@ -774,7 +1197,7 @@ fn verification_data_from_args(args: &SubmitArgs) -> Result { + | ProvingSystemId::GnarkGroth16Bn254 => { verification_key = Some(read_file_option( "--vk", args.verification_key_file_name.clone(), @@ -784,6 +1207,23 @@ fn verification_data_from_args(args: &SubmitArgs) -> Result { + verification_key = Some(read_file_option( + "--vk", + args.verification_key_file_name.clone(), + )?); + let pub_input_file = + read_file_option("--public_input", args.pub_input_file_name.clone())?; + let pub_inputs: Vec = serde_json::from_slice(&pub_input_file) + .map_err(|e| SubmitError::MissingRequiredParameter(e.to_string()))?; + + let decode_inputs = aligned_sdk::common::utils::encode_circom_pub_inputs(&pub_inputs) + .map_err(|_| { + SubmitError::MissingRequiredParameter("Invalid public inputs".into()) + })?; + + pub_input = Some(decode_inputs); + } ProvingSystemId::Mina => { pub_input = Some(read_file_option( "--public_input", @@ -871,3 +1311,17 @@ pub async fn get_user_balance( )) } } + +fn format_utc_time(date: UtcTime) -> String { + let dt = date.to_date_time(); + + format!( + "{:04}-{:02}-{:02} {:02}:{:02}:{:02}Z", + dt.year(), + dt.month(), + dt.day(), + dt.hour(), + dt.minutes(), + dt.seconds() + ) +} diff --git a/batcher/aligned-sdk/Cargo.toml b/crates/sdk/Cargo.toml similarity index 80% rename from batcher/aligned-sdk/Cargo.toml rename to crates/sdk/Cargo.toml index 019a659842..767e2ed266 100644 --- a/batcher/aligned-sdk/Cargo.toml +++ b/crates/sdk/Cargo.toml @@ -17,11 +17,13 @@ tokio = { version = "1.37.0", features = [ "rt-multi-thread", "sync", ] } -lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "efd46f0b0aea3aa95d94bba7de86cb96611b40d3", features = ["serde"] } +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"]} serde = { version = "1.0.201", features = ["derive"] } +serde_bytes = "0.11" sha3 = { version = "0.10.8" } url = "2.5.0" hex = "0.4.3" ciborium = "=0.2.2" serde_repr = "0.1.19" dialoguer = "0.11.0" +reqwest = { version = "0.12", features = ["json"] } diff --git a/batcher/aligned-sdk/abi/AlignedLayerServiceManager.json b/crates/sdk/abi/AlignedLayerServiceManager.json similarity index 100% rename from batcher/aligned-sdk/abi/AlignedLayerServiceManager.json rename to crates/sdk/abi/AlignedLayerServiceManager.json diff --git a/crates/sdk/abi/AlignedProofAggregationService.json b/crates/sdk/abi/AlignedProofAggregationService.json new file mode 100644 index 0000000000..be27495306 --- /dev/null +++ b/crates/sdk/abi/AlignedProofAggregationService.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"VERIFIER_MOCK_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"aggregatedProofs","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"alignedAggregatorAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"newOwner","type":"address","internalType":"address"},{"name":"_alignedAggregatorAddress","type":"address","internalType":"address"},{"name":"_sp1VerifierAddress","type":"address","internalType":"address"},{"name":"_risc0VerifierAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"risc0VerifierAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setRisc0VerifierAddress","inputs":[{"name":"_risc0VerifierAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sp1VerifierAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"verifyProofInclusion","inputs":[{"name":"merklePath","type":"bytes32[]","internalType":"bytes32[]"},{"name":"programId","type":"bytes32","internalType":"bytes32"},{"name":"publicInputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifyRisc0","inputs":[{"name":"blobVersionedHash","type":"bytes32","internalType":"bytes32"},{"name":"risc0ReceiptSeal","type":"bytes","internalType":"bytes"},{"name":"risc0ImageId","type":"bytes32","internalType":"bytes32"},{"name":"risc0JournalBytes","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifySP1","inputs":[{"name":"blobVersionedHash","type":"bytes32","internalType":"bytes32"},{"name":"sp1ProgramVKey","type":"bytes32","internalType":"bytes32"},{"name":"sp1PublicValues","type":"bytes","internalType":"bytes"},{"name":"sp1ProofBytes","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AggregatedProofVerified","inputs":[{"name":"merkleRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"blobVersionedHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OnlyAlignedAggregator","inputs":[{"name":"sender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a080604052346100dc57306080526000549060ff8260081c1661008a575060ff8082161061004f575b6040516113f790816100e28239608051818181610562015281816106890152610b460152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a138610029565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c908163015f866814610ea85750806327d3bc9a14610e79578063294e3ccb14610e505780633659cfe614610b2757806339c94cbf146109ab5780634c46688c146109825780634f1ef2861461061357806352d1902d1461054f5780635bea7ad614610446578063616af4f71461041d578063715018a6146103c057806383501b21146103a45780638da5cb5b1461037b578063a52f681b1461033b578063f2fde38b146102aa5763f8c8765e146100d157600080fd5b346102a75760803660031901126102a7576100ea611043565b6024356001600160a01b038116908190036102a5576044356001600160a01b038116908190036102a1576064356001600160a01b038116929083900361029d57845460ff8160081c161594858096610290575b8015610279575b1561021d5760ff1982166001178755610195918661020c575b5061017760ff885460081c1661017281611231565b611231565b610180336111e8565b61019060ff885460081c16611231565b6111e8565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc556101d55780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787553861015d565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156101445750600160ff831614610144565b50600160ff83161061013d565b8480fd5b8380fd5b825b80fd5b50346102a75760203660031901126102a7576102c4611043565b6102cc611190565b6001600160a01b038116156102e7576102e4906111e8565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102a75760203660031901126102a757610355611043565b61035d611190565b60018060a01b03166001600160601b0360a01b60cc54161760cc5580f35b50346102a757806003193601126102a7576033546040516001600160a01b039091168152602090f35b50346102a757806003193601126102a757602060405160ff8152f35b50346102a757806003193601126102a7576103d9611190565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102a757806003193601126102a75760cc546040516001600160a01b039091168152602090f35b50346102a75760603660031901126102a75760043567ffffffffffffffff811161054b573660238201121561054b5780600401359067ffffffffffffffff82116102a5573660248360051b830101116102a55760443567ffffffffffffffff81116102a1576104b9903690600401611015565b6104e7604080518381946020830196602435885284840137810188838201520301601f198101835282611059565b5190209083915b838310156105305760248360051b830101359081811060001461051f5785526020526001604085205b9201916104ee565b908552602052600160408520610517565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b50346102a757806003193601126102a7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036105a85760206040516000805160206113a28339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b5060403660031901126102a757610628611043565b60243567ffffffffffffffff81116102a557366023820112156102a5578060040135908361065583611091565b916106636040519384611059565b838352602083019336602482840101116102a557806024602093018637830101526106dc7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106bd308214156110ce565b6000805160206113a2833981519152546001600160a01b03161461112f565b6106e4611190565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107195750506102e490611291565b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa86918161094a575b506107a35760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b6000805160206113a2833981519152036108f3576107c084611291565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a28151158015906108eb575b6107ff575b5050505080f35b833b1561089a5750610889928492839251915af43d15610893573d61082381611091565b906108316040519283611059565b81523d84602083013e5b6040519161084a606084611059565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b604084015261132a565b50388080806107f8565b606061083b565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5060016107f3565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d60201161097a575b8161096660209383611059565b8101031261097657519038610742565b8680fd5b3d9150610959565b50346102a757806003193601126102a75760cb546040516001600160a01b039091168152602090f35b50346102a75760803660031901126102a75760443567ffffffffffffffff811161054b576109dd903690600401611015565b60643567ffffffffffffffff81116102a1576109fd903690600401611015565b60cb54919290916001600160a01b03163303610b14576020848281010312610b0f5760ca548435948694916001600160a01b03169060fe198201610a84575b858780825260c960205260408220600160ff198254161790557ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260206040516004358152a280f35b813b15610b0b578593610ad3610ac1946040519788968795869563020a49e360e51b875260243560048801526060602488015260648701916110ad565b848103600319016044860152916110ad565b03915afa8015610b0057610aeb575b80808080610a3c565b81610af591611059565b61054b578138610ae2565b6040513d84823e3d90fd5b8580fd5b600080fd5b63921f325560e01b855233600452602485fd5b50346102a75760203660031901126102a757610b41611043565b610b7a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106bd308214156110ce565b610b82611190565b6020604051610b918282611059565b83815281810190601f1983013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610bd6575050506102e490611291565b6040516352d1902d60e01b8152939492936001600160a01b038616908581600481855afa859181610e21575b50610c635760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b9394937fc9f76b5ec45e5cdef99837d7b6d2467235c1df8933c8ca56df5c35afa2c7d44401610dca57610c9586611291565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a2815115801590610dc3575b610cd6575b50505050905080f35b853b15610d7257509280948192610d5f9551915af43d15610d6a573d90610cfc82611091565b91610d0a6040519384611059565b82523d858484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610d43606086611059565b60278552840152660819985a5b195960ca1b604084015261132a565b508038808080610ccd565b606090610d13565b62461bcd60e51b815260048101849052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5084610cc8565b60405162461bcd60e51b815260048101859052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311610e49575b610e398183611059565b81010312610b0b57519038610c02565b503d610e2f565b50346102a757806003193601126102a75760ca546040516001600160a01b039091168152602090f35b50346102a75760203660031901126102a75760ff6040602092600435815260c984522054166040519015158152f35b82346102a75760803660031901126102a75760243567ffffffffffffffff811161054b57610eda903690600401611015565b909260643567ffffffffffffffff81116102a157610efc903690600401611015565b60cb5490959192906001600160a01b03163303610b1457602083878101031261029d5760cc548335966001600160a01b039091169360fe198501610f83575b868880825260c960205260408220600160ff198254161790557ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260206040516004358152a280f35b918082889360209583378101838152039060025afa1561100a57835192823b1561029d5791610fd39185936040519586948593849363ab750e7560e01b85526060600486015260648501916110ad565b906044356024840152604483015203915afa8015610b0057610ffa575b8080808080610f3b565b8161100491611059565b82610ff0565b6040513d85823e3d90fd5b9181601f84011215610b0f5782359167ffffffffffffffff8311610b0f5760208381860195010111610b0f57565b600435906001600160a01b0382168203610b0f57565b90601f8019910116810190811067ffffffffffffffff82111761107b57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161107b57601f01601f191660200190565b908060209392818452848401376000828201840152601f01601f1916010190565b156110d557565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561113657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b6033546001600160a01b031633036111a457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561123857565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156112cf5760018060a01b03166001600160601b0360a01b6000805160206113a28339815191525416176000805160206113a283398151915255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90919015611336575090565b8151156113465750805190602001fd5b6040519062461bcd60e51b8252602060048301528181519182602483015260005b8381106113895750508160006044809484010152601f80199101168101030190fd5b6020828201810151604487840101528593500161136756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220baa022b64bc77809dd98bd582b0c6fcff84f65ba27a4f4a7730fe5ee48b7cb4364736f6c634300081c0033","sourceMap":"687:4474:76:-:0;;;;;;;1332:4:22;1324:13;;5456::21;687:4474:76;;;;;;;;;;;;;;5527:30:21;5523:138;;-1:-1:-1;687:4474:76;;;;;;;;1324:13:22;687:4474:76;;;;;;;;;;;;;;;;5523:138:21;687:4474:76;;;;;;5456:13:21;687:4474:76;5622:28:21;687:4474:76;;;;;;5622:28:21;5523:138;;;687:4474:76;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001357600080fd5b600090813560e01c908163015f866814610ea85750806327d3bc9a14610e79578063294e3ccb14610e505780633659cfe614610b2757806339c94cbf146109ab5780634c46688c146109825780634f1ef2861461061357806352d1902d1461054f5780635bea7ad614610446578063616af4f71461041d578063715018a6146103c057806383501b21146103a45780638da5cb5b1461037b578063a52f681b1461033b578063f2fde38b146102aa5763f8c8765e146100d157600080fd5b346102a75760803660031901126102a7576100ea611043565b6024356001600160a01b038116908190036102a5576044356001600160a01b038116908190036102a1576064356001600160a01b038116929083900361029d57845460ff8160081c161594858096610290575b8015610279575b1561021d5760ff1982166001178755610195918661020c575b5061017760ff885460081c1661017281611231565b611231565b610180336111e8565b61019060ff885460081c16611231565b6111e8565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc556101d55780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787553861015d565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156101445750600160ff831614610144565b50600160ff83161061013d565b8480fd5b8380fd5b825b80fd5b50346102a75760203660031901126102a7576102c4611043565b6102cc611190565b6001600160a01b038116156102e7576102e4906111e8565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102a75760203660031901126102a757610355611043565b61035d611190565b60018060a01b03166001600160601b0360a01b60cc54161760cc5580f35b50346102a757806003193601126102a7576033546040516001600160a01b039091168152602090f35b50346102a757806003193601126102a757602060405160ff8152f35b50346102a757806003193601126102a7576103d9611190565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346102a757806003193601126102a75760cc546040516001600160a01b039091168152602090f35b50346102a75760603660031901126102a75760043567ffffffffffffffff811161054b573660238201121561054b5780600401359067ffffffffffffffff82116102a5573660248360051b830101116102a55760443567ffffffffffffffff81116102a1576104b9903690600401611015565b6104e7604080518381946020830196602435885284840137810188838201520301601f198101835282611059565b5190209083915b838310156105305760248360051b830101359081811060001461051f5785526020526001604085205b9201916104ee565b908552602052600160408520610517565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b50346102a757806003193601126102a7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036105a85760206040516000805160206113a28339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b5060403660031901126102a757610628611043565b60243567ffffffffffffffff81116102a557366023820112156102a5578060040135908361065583611091565b916106636040519384611059565b838352602083019336602482840101116102a557806024602093018637830101526106dc7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106bd308214156110ce565b6000805160206113a2833981519152546001600160a01b03161461112f565b6106e4611190565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107195750506102e490611291565b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa86918161094a575b506107a35760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b6000805160206113a2833981519152036108f3576107c084611291565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a28151158015906108eb575b6107ff575b5050505080f35b833b1561089a5750610889928492839251915af43d15610893573d61082381611091565b906108316040519283611059565b81523d84602083013e5b6040519161084a606084611059565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b604084015261132a565b50388080806107f8565b606061083b565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5060016107f3565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d60201161097a575b8161096660209383611059565b8101031261097657519038610742565b8680fd5b3d9150610959565b50346102a757806003193601126102a75760cb546040516001600160a01b039091168152602090f35b50346102a75760803660031901126102a75760443567ffffffffffffffff811161054b576109dd903690600401611015565b60643567ffffffffffffffff81116102a1576109fd903690600401611015565b60cb54919290916001600160a01b03163303610b14576020848281010312610b0f5760ca548435948694916001600160a01b03169060fe198201610a84575b858780825260c960205260408220600160ff198254161790557ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260206040516004358152a280f35b813b15610b0b578593610ad3610ac1946040519788968795869563020a49e360e51b875260243560048801526060602488015260648701916110ad565b848103600319016044860152916110ad565b03915afa8015610b0057610aeb575b80808080610a3c565b81610af591611059565b61054b578138610ae2565b6040513d84823e3d90fd5b8580fd5b600080fd5b63921f325560e01b855233600452602485fd5b50346102a75760203660031901126102a757610b41611043565b610b7a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106bd308214156110ce565b610b82611190565b6020604051610b918282611059565b83815281810190601f1983013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610bd6575050506102e490611291565b6040516352d1902d60e01b8152939492936001600160a01b038616908581600481855afa859181610e21575b50610c635760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b9394937fc9f76b5ec45e5cdef99837d7b6d2467235c1df8933c8ca56df5c35afa2c7d44401610dca57610c9586611291565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a2815115801590610dc3575b610cd6575b50505050905080f35b853b15610d7257509280948192610d5f9551915af43d15610d6a573d90610cfc82611091565b91610d0a6040519384611059565b82523d858484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610d43606086611059565b60278552840152660819985a5b195960ca1b604084015261132a565b508038808080610ccd565b606090610d13565b62461bcd60e51b815260048101849052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b5084610cc8565b60405162461bcd60e51b815260048101859052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311610e49575b610e398183611059565b81010312610b0b57519038610c02565b503d610e2f565b50346102a757806003193601126102a75760ca546040516001600160a01b039091168152602090f35b50346102a75760203660031901126102a75760ff6040602092600435815260c984522054166040519015158152f35b82346102a75760803660031901126102a75760243567ffffffffffffffff811161054b57610eda903690600401611015565b909260643567ffffffffffffffff81116102a157610efc903690600401611015565b60cb5490959192906001600160a01b03163303610b1457602083878101031261029d5760cc548335966001600160a01b039091169360fe198501610f83575b868880825260c960205260408220600160ff198254161790557ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260206040516004358152a280f35b918082889360209583378101838152039060025afa1561100a57835192823b1561029d5791610fd39185936040519586948593849363ab750e7560e01b85526060600486015260648501916110ad565b906044356024840152604483015203915afa8015610b0057610ffa575b8080808080610f3b565b8161100491611059565b82610ff0565b6040513d85823e3d90fd5b9181601f84011215610b0f5782359167ffffffffffffffff8311610b0f5760208381860195010111610b0f57565b600435906001600160a01b0382168203610b0f57565b90601f8019910116810190811067ffffffffffffffff82111761107b57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161107b57601f01601f191660200190565b908060209392818452848401376000828201840152601f01601f1916010190565b156110d557565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561113657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b6033546001600160a01b031633036111a457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561123857565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156112cf5760018060a01b03166001600160601b0360a01b6000805160206113a28339815191525416176000805160206113a283398151915255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90919015611336575090565b8151156113465750805190602001fd5b6040519062461bcd60e51b8252602060048301528181519182602483015260005b8381106113895750508160006044809484010152601f80199101168101030190fd5b6020828201810151604487840101528593500161136756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220baa022b64bc77809dd98bd582b0c6fcff84f65ba27a4f4a7730fe5ee48b7cb4364736f6c634300081c0033","sourceMap":"687:4474:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;687:4474:76;;;;;;:::i;:::-;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;;;;;;;;;3133:14:21;;;;3179:34;;;687:4474:76;3178:108:21;;;;687:4474:76;;;;-1:-1:-1;;687:4474:76;;3383:1:21;687:4474:76;;;2307:8;;687:4474;3394:65:21;;687:4474:76;;4902:69:21;687:4474:76;;;;;;4902:69:21;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:25;1195:12:17;:::i;:::-;4902:69:21;687:4474:76;;;;;;4902:69:21;:::i;:::-;2307:8:76;:::i;:::-;-1:-1:-1;;;;;687:4474:76;;2326:52;687:4474;;;2326:52;687:4474;-1:-1:-1;;;;;687:4474:76;;2388:40;687:4474;;;2388:40;687:4474;-1:-1:-1;;;;;687:4474:76;;2438:44;687:4474;;;2438:44;687:4474;3479:99:21;;687:4474:76;;3479:99:21;687:4474:76;;;;;;;3553:14:21;687:4474:76;;;3383:1:21;687:4474:76;;3553:14:21;687:4474:76;;3394:65:21;-1:-1:-1;;687:4474:76;;;;;3394:65:21;;;687:4474:76;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;3178:108:21;3258:4;;1476:19:24;:23;3219:66:21;;3178:108;3219:66;687:4474:76;3284:1:21;687:4474:76;;;3268:17:21;3178:108;;3179:34;687:4474:76;3212:1:21;687:4474:76;;;3197:16:21;3179:34;;687:4474:76;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;687:4474:76;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;687:4474:76;;2409:22:17;687:4474:76;;2503:8:17;;;:::i;:::-;687:4474:76;;;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;-1:-1:-1;;687:4474:76;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;687:4474:76;;;;;;-1:-1:-1;;;;;687:4474:76;;5108:44;687:4474;;;5108:44;687:4474;;;;;;;;;;;;;;;;1513:6:17;687:4474:76;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;;;;;;;;;;;;;;;;;1957:4;687:4474;;;;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2765:6;687:4474:76;;-1:-1:-1;;;;;;687:4474:76;;;;;;;-1:-1:-1;;;;;687:4474:76;2813:40:17;687:4474:76;;2813:40:17;687:4474:76;;;;;;;;;;;;;;;1723:35;687:4474;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;;;;;;;;-1:-1:-1;;687:4474:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4054:41;687:4474;;;4054:41;;;687:4474;4054:41;;687:4474;;;;;;;;;;;;;;;;4054:41;;687:4474;;4054:41;;;;;;:::i;:::-;687:4474;4044:52;;2480:13:69;;2475:116;2513:3;2495:16;;;;;;687:4474:76;;;;;;;;9318:51:69;:5;;;:51;:5;;;9632:119;;687:4474:76;9632:119:69;687:4474:76;;9632:119:69;;9318:51;2513:3;687:4474:76;2480:13:69;;;9318:51;9632:119;;;687:4474:76;9632:119:69;687:4474:76;;9632:119:69;;9318:51;;2495:16;687:4474:76;;2495:16:69;687:4474:76;2495:16:69;687:4474:76;;4205:16;687:4474;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2333:6:22;-1:-1:-1;;;;;687:4474:76;2324:4:22;2316:23;687:4474:76;;;;;-1:-1:-1;;;;;;;;;;;687:4474:76;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;687:4474:76;;-1:-1:-1;;687:4474:76;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1963:87:22;1898:6;-1:-1:-1;;;;;687:4474:76;1873:80:22;1889:4;1881:23;;;1873:80;:::i;:::-;-1:-1:-1;;;;;;;;;;;687:4474:76;-1:-1:-1;;;;;687:4474:76;1971:30:22;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;951:66:19;687:4474:76;;;;;;3478:17:19;;;;;:::i;3380:526::-;687:4474:76;;-1:-1:-1;;;3531:63:19;;-1:-1:-1;;;;;687:4474:76;;;;;;;;3531:63:19;;;;;;;3380:526;-1:-1:-1;3527:302:19;;687:4474:76;;-1:-1:-1;;;3758:56:19;;687:4474:76;;3758:56:19;;951:66;;687:4474:76;951:66:19;;687:4474:76;951:66:19;687:4474:76;;;951:66:19;-1:-1:-1;;;951:66:19;;;;3758:56;;;3527:302;-1:-1:-1;;;;;;;;;;;3644:28:19;951:66;;2277:17;;;:::i;:::-;687:4474:76;;2310:27:19;;;;;687:4474:76;;2659:15:19;;;:28;;;3527:302;2655:105;;3527:302;3380:526;;;;687:4474:76;;2655:105:19;1476:19:24;;:23;687:4474:76;;7395:25:19;7437:99;7395:25;;;;;;;;;687:4474:76;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;7437:99:19;:::i;:::-;;2655:105;;;;;;687:4474:76;;;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;2659:28:19;;3971:4:22;2659:28:19;;951:66;687:4474:76;;-1:-1:-1;;;951:66:19;;687:4474:76;;951:66:19;;;;687:4474:76;951:66:19;;687:4474:76;951:66:19;687:4474:76;;;951:66:19;-1:-1:-1;;;951:66:19;;;;;;;3531:63;;;;687:4474:76;3531:63:19;;687:4474:76;3531:63:19;;;;;;687:4474:76;3531:63:19;;;:::i;:::-;;;951:66;;;;;3531:63;;;;951:66;687:4474:76;;;3531:63:19;;;-1:-1:-1;3531:63:19;;687:4474:76;;;;;;;;;;;;;1478:39;687:4474;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;;;;;;;;-1:-1:-1;;687:4474:76;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;4752:24;687:4474;;;;;-1:-1:-1;;;;;687:4474:76;4738:10;:38;4734:109;;687:4474;2727:38;;;;687:4474;;;;4329:18;687:4474;;;;;;;-1:-1:-1;;;;;687:4474:76;;-1:-1:-1;;4329:43:76;;2851:150;;687:4474;;;;;;3011:16;687:4474;;;;;;;;;;;;;;3061:54;687:4474;;;;;;;3061:54;687:4474;;2851:150;2898:92;;;;;687:4474;;;;;;;;;;;;;;;;;2898:92;;687:4474;;;2898:92;;687:4474;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;687:4474:76;;;;;;;:::i;:::-;2898:92;;;;;;;;;;2851:150;;;;;;;2898:92;;;;;:::i;:::-;687:4474;;2898:92;;;;;687:4474;;;;;;;;;2898:92;687:4474;;;;-1:-1:-1;687:4474:76;;4734:109;-1:-1:-1;;;4799:33:76;;4738:10;687:4474;;;4799:33;;687:4474;;;;;;;-1:-1:-1;;687:4474:76;;;;;;:::i;:::-;1963:87:22;1898:6;-1:-1:-1;;;;;687:4474:76;1873:80:22;1889:4;1881:23;;;1873:80;:::i;1963:87::-;1303:62:17;;:::i;:::-;687:4474:76;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;687:4474:76;;;;;951:66:19;687:4474:76;;;;;;3478:17:19;;;;;;:::i;3380:526::-;687:4474:76;;-1:-1:-1;;;3531:63:19;;687:4474:76;;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;3531:63:19;;;;;;;3380:526;-1:-1:-1;3527:302:19;;687:4474:76;;-1:-1:-1;;;3758:56:19;;687:4474:76;3758:56:19;;951:66;;;;;;;687:4474:76;951:66:19;687:4474:76;;;951:66:19;-1:-1:-1;;;951:66:19;;;;3758:56;;;3527:302;3644:28;;;;;951:66;;2277:17;;;:::i;:::-;687:4474:76;;2310:27:19;;;;;687:4474:76;;2659:15:19;;;:28;;;3527:302;2655:105;;3527:302;3380:526;;;;;;687:4474:76;;2655:105:19;1476:19:24;;:23;687:4474:76;;7395:25:19;;;;;;7437:99;7395:25;;;;;687:4474:76;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;687:4474:76;;;;7437:99:19;:::i;:::-;;2655:105;;;;;;;687:4474:76;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;2659:28:19;;;;;951:66;687:4474:76;;-1:-1:-1;;;951:66:19;;687:4474:76;951:66:19;;;;;;;;;687:4474:76;951:66:19;687:4474:76;;;951:66:19;-1:-1:-1;;;951:66:19;;;;;;;3531:63;;;;;;;;;;;;;;;;;:::i;:::-;;;951:66;;;;;3531:63;;;;;;;;;687:4474:76;;;;;;;;;;;;;1351:33;687:4474;;;-1:-1:-1;;;;;687:4474:76;;;;;;;;;;;;;;;-1:-1:-1;;687:4474:76;;;;;;;;;;;;913:48;687:4474;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;687:4474:76;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;4752:24;687:4474;;;;;;-1:-1:-1;;;;;687:4474:76;4738:10;:38;4734:109;;687:4474;3365:40;;;;687:4474;;;;4470:20;687:4474;;;;-1:-1:-1;;;;;687:4474:76;;;;-1:-1:-1;;4470:45:76;;3491:226;;687:4474;;;;;;3727:16;687:4474;;;;;;;;;;;;;;3777:54;687:4474;;;;;;;3777:54;687:4474;;3491:226;687:4474;;;;;;;;;;;;;;3569:25;;;;;;;;;;3608:98;;;;;;687:4474;;;;;;;;;;;;;;;;;3608:98;;687:4474;;3608:98;;687:4474;;;;;;:::i;:::-;;;;;;;;;;;;3608:98;;;;;;;;;;3491:226;;;;;;;;3608:98;;;;;:::i;:::-;;;;3569:25;687:4474;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;687:4474:76;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;687:4474:76;;;;;-1:-1:-1;687:4474:76;;;;;;;;;-1:-1:-1;;687:4474:76;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;687:4474:76;;;;;;;;-1:-1:-1;;687:4474:76;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;1599:130:17;1513:6;687:4474:76;-1:-1:-1;;;;;687:4474:76;929:10:25;1662:23:17;687:4474:76;;1599:130:17:o;687:4474:76:-;;;;951:66:19;;;687:4474:76;;;;;;;;;;;;;;;;;;2673:187:17;2765:6;687:4474:76;;-1:-1:-1;;;;;687:4474:76;;;-1:-1:-1;;;;;;687:4474:76;;;;;;;;;;2813:40:17;-1:-1:-1;;2813:40:17;2673:187::o;687:4474:76:-;;;;:::o;:::-;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;1805:281:19;1476:19:24;;:23;687:4474:76;;;;;;;;-1:-1:-1;;;;;687:4474:76;;-1:-1:-1;;;;;;;;;;;687:4474:76;;;-1:-1:-1;;;;;;;;;;;687:4474:76;1805:281:19:o;687:4474:76:-;;;-1:-1:-1;;;687:4474:76;;;;;;;;;;;;;;;;;-1:-1:-1;;;687:4474:76;;;;;;;6622:742:24;;;;6792:566;;;6819:17;;:::o;6792:566::-;687:4474:76;;6937:21:24;:17;;7121:154;;;;;;;6933:415;687:4474:76;;951:66:19;;;;7313:20:24;;687:4474:76;7313:20:24;;;687:4474:76;;;;;;;;;;6957:1:24;687:4474:76;;;;;;;;;6957:1:24;687:4474:76;;;;;;;;;;;;;;;7313:20:24;;;;687:4474:76;;;;;;;;;;;;;;;;-1:-1:-1;687:4474:76;;","linkReferences":{},"immutableReferences":{"4221":[{"start":1378,"length":32},{"start":1673,"length":32},{"start":2886,"length":32}]}},"methodIdentifiers":{"VERIFIER_MOCK_ADDRESS()":"83501b21","aggregatedProofs(bytes32)":"27d3bc9a","alignedAggregatorAddress()":"4c46688c","initialize(address,address,address,address)":"f8c8765e","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","risc0VerifierAddress()":"616af4f7","setRisc0VerifierAddress(address)":"a52f681b","sp1VerifierAddress()":"294e3ccb","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286","verifyProofInclusion(bytes32[],bytes32,bytes)":"5bea7ad6","verifyRisc0(bytes32,bytes,bytes32,bytes)":"015f8668","verifySP1(bytes32,bytes32,bytes,bytes)":"39c94cbf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"OnlyAlignedAggregator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"}],\"name\":\"AggregatedProofVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERIFIER_MOCK_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"aggregatedProofs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"alignedAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_alignedAggregatorAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sp1VerifierAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_risc0VerifierAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"risc0VerifierAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_risc0VerifierAddress\",\"type\":\"address\"}],\"name\":\"setRisc0VerifierAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sp1VerifierAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"merklePath\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"programId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"publicInputs\",\"type\":\"bytes\"}],\"name\":\"verifyProofInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"risc0ReceiptSeal\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"risc0ImageId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"risc0JournalBytes\",\"type\":\"bytes\"}],\"name\":\"verifyRisc0\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sp1ProgramVKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sp1PublicValues\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sp1ProofBytes\",\"type\":\"bytes\"}],\"name\":\"verifySP1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setRisc0VerifierAddress(address)\":{\"params\":{\"_risc0VerifierAddress\":\"The new address for the Risc0 verifier contract\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"verifySP1(bytes32,bytes32,bytes,bytes)\":{\"details\":\"This function is called by the aligned proof aggregator after collecting the proofs and aggregating them to be verified on-chain. We expect the blobTransactionHash to be called before\",\"params\":{\"blobVersionedHash\":\"the versioned hash of the blob transaction that contains the leaves that compose the merkle root.\",\"sp1ProgramVKey\":\"Public verifying key\",\"sp1ProofBytes\":\"Groth16 proof\",\"sp1PublicValues\":\"Values used to perform the execution\"}}},\"stateVariables\":{\"risc0VerifierAddress\":{\"details\":\"See supported verifier here: https://dev.risczero.com/api/blockchain-integration/contracts/verifier#contract-addresses\"},\"sp1VerifierAddress\":{\"details\":\"This can either be a specific SP1Verifier for a specific version, or the SP1VerifierGateway which can be used to verify proofs for any version of SP1. For the list of supported verifiers on each chain, see: https://docs.succinct.xyz/onchain-verification/contract-addresses\"}},\"version\":1},\"userdoc\":{\"events\":{\"AggregatedProofVerified(bytes32,bytes32)\":{\"notice\":\"event that gets emitted after a successful aggregated proof verification\"}},\"kind\":\"user\",\"methods\":{\"VERIFIER_MOCK_ADDRESS()\":{\"notice\":\"whether we are in dev mode or not if the sp1 verifier address is set to this address, then we skip verification\"},\"aggregatedProofs(bytes32)\":{\"notice\":\"Map the merkle root to a boolean to indicate it was verified\"},\"alignedAggregatorAddress()\":{\"notice\":\"The address of the Wallet that is allowed to call the verify function.\"},\"risc0VerifierAddress()\":{\"notice\":\"The address of the Risc0 verifier contract\"},\"setRisc0VerifierAddress(address)\":{\"notice\":\"Sets the address of the Risc0 verifier contract\"},\"sp1VerifierAddress()\":{\"notice\":\"The address of the SP1 verifier contract.\"},\"verifySP1(bytes32,bytes32,bytes,bytes)\":{\"notice\":\"Method to verify an aggregated proof from aligned\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/AlignedProofAggregationService.sol\":\"AlignedProofAggregationService\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/\",\":@risc0-contracts/=lib/risc0-ethereum/contracts/src/\",\":@sp1-contracts/=lib/sp1-contracts/contracts/src/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/risc0-ethereum/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/risc0-ethereum/lib/openzeppelin-contracts/\",\":risc0-ethereum/=lib/risc0-ethereum/\",\":sp1-contracts/=lib/sp1-contracts/contracts/\"],\"viaIR\":true},\"sources\":{\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abfa467c53a0d60b4d09bf04aa952b1d1d44e5766fcc053aace078d7859b8419\",\"dweb:/ipfs/QmebVTZpyNxYfKYTuLMywzEJTdc1Ca8ME4xm3kR9gQgToG\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0x6400c4bee15052e043e5d10315135972529bd1c8012f43da494dc6b4f4661058\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5d3d47d35af4373743a559ea4b9b7ecfe4bab6f0703f410c1e59959b7966ac\",\"dweb:/ipfs/QmTHdoghh4WLu4yURjGEgRk162pcwwdsG52MPGa12GqnGR\"]},\"lib/risc0-ethereum/contracts/src/IRiscZeroVerifier.sol\":{\"keccak256\":\"0x3e74a4b2940b88837fb8399a0012b435d1d513a622d3ea3ba58088af9ad7e2fd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b06299cc68e3c79e4eb22705bb814ce816a7fd549e78614b318ae44d35e56f9b\",\"dweb:/ipfs/QmPpX5ciRdEH6MVRVt7qYQqy7B68qxG5v3mxkgYm3kGxi5\"]},\"lib/risc0-ethereum/contracts/src/Util.sol\":{\"keccak256\":\"0x230a9a58bb2b0c68d4921ecc3672783f941890a2fa3a238dbe5188cfb7658b82\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://586cb5296c564761609ca8aaae5b1fbbdb19ab1e174f7197f602572d9e82b70c\",\"dweb:/ipfs/QmWxDmucSfg3Wgdk1rVcheDHwkziTsXWvKpKSCnxtpQBqg\"]},\"lib/sp1-contracts/contracts/src/ISP1Verifier.sol\":{\"keccak256\":\"0x9e3ba64860bea920772dcf16be7946de2a2900d80bd51e9c0771184138f4f4d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ec7230ca1fdd74edc6ab597d80bb345282aed3f0db4788ed96b4cc373ff46a3\",\"dweb:/ipfs/QmXPuSS5gzxMhFKWr1gsxBVu6WHh53ZZEvWkGgzrkM6Y7Q\"]},\"src/core/AlignedProofAggregationService.sol\":{\"keccak256\":\"0x75205cc87df1f0de2635872e14d0c83a7a17eb47bec0dc26b29f7c247c93248e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2401bdc755ab73c6e2c0727c85f54d4d7b9c788288b31ab09cd772d928dfebd0\",\"dweb:/ipfs/QmZwnEx2iNGQVa4wLvtbqaz4BBCgSTwR2ZGRogn8QgEjex\"]},\"src/core/IAlignedProofAggregationService.sol\":{\"keccak256\":\"0x1b3582468b9014fa2d50ac5545b9e42318bb7a9344f44ea2f62dcbc4ab1f2523\",\"urls\":[\"bzz-raw://a12e2e49cb018dc09d5fd9240efd1db2ffe4aab7a2c4fbd1049fc8d5cfdfe35b\",\"dweb:/ipfs/QmNkZJF4AQxkYqx34zz1cYxCWzFq23DGUixok4Cfq7Ttrc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"OnlyAlignedAggregator"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32","indexed":false}],"type":"event","name":"AggregatedProofVerified","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"VERIFIER_MOCK_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"aggregatedProofs","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"alignedAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"address","name":"_alignedAggregatorAddress","type":"address"},{"internalType":"address","name":"_sp1VerifierAddress","type":"address"},{"internalType":"address","name":"_risc0VerifierAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"risc0VerifierAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_risc0VerifierAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRisc0VerifierAddress"},{"inputs":[],"stateMutability":"view","type":"function","name":"sp1VerifierAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"bytes32[]","name":"merklePath","type":"bytes32[]"},{"internalType":"bytes32","name":"programId","type":"bytes32"},{"internalType":"bytes","name":"publicInputs","type":"bytes"}],"stateMutability":"view","type":"function","name":"verifyProofInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32"},{"internalType":"bytes","name":"risc0ReceiptSeal","type":"bytes"},{"internalType":"bytes32","name":"risc0ImageId","type":"bytes32"},{"internalType":"bytes","name":"risc0JournalBytes","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"verifyRisc0"},{"inputs":[{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32"},{"internalType":"bytes32","name":"sp1ProgramVKey","type":"bytes32"},{"internalType":"bytes","name":"sp1PublicValues","type":"bytes"},{"internalType":"bytes","name":"sp1ProofBytes","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"verifySP1"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"setRisc0VerifierAddress(address)":{"params":{"_risc0VerifierAddress":"The new address for the Risc0 verifier contract"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"verifySP1(bytes32,bytes32,bytes,bytes)":{"details":"This function is called by the aligned proof aggregator after collecting the proofs and aggregating them to be verified on-chain. We expect the blobTransactionHash to be called before","params":{"blobVersionedHash":"the versioned hash of the blob transaction that contains the leaves that compose the merkle root.","sp1ProgramVKey":"Public verifying key","sp1ProofBytes":"Groth16 proof","sp1PublicValues":"Values used to perform the execution"}}},"version":1},"userdoc":{"kind":"user","methods":{"VERIFIER_MOCK_ADDRESS()":{"notice":"whether we are in dev mode or not if the sp1 verifier address is set to this address, then we skip verification"},"aggregatedProofs(bytes32)":{"notice":"Map the merkle root to a boolean to indicate it was verified"},"alignedAggregatorAddress()":{"notice":"The address of the Wallet that is allowed to call the verify function."},"risc0VerifierAddress()":{"notice":"The address of the Risc0 verifier contract"},"setRisc0VerifierAddress(address)":{"notice":"Sets the address of the Risc0 verifier contract"},"sp1VerifierAddress()":{"notice":"The address of the SP1 verifier contract."},"verifySP1(bytes32,bytes32,bytes,bytes)":{"notice":"Method to verify an aggregated proof from aligned"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/","@risc0-contracts/=lib/risc0-ethereum/contracts/src/","@sp1-contracts/=lib/sp1-contracts/contracts/src/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/risc0-ethereum/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/risc0-ethereum/lib/openzeppelin-contracts/","risc0-ethereum/=lib/risc0-ethereum/","sp1-contracts/=lib/sp1-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/core/AlignedProofAggregationService.sol":"AlignedProofAggregationService"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823","urls":["bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2","dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270","urls":["bzz-raw://abfa467c53a0d60b4d09bf04aa952b1d1d44e5766fcc053aace078d7859b8419","dweb:/ipfs/QmebVTZpyNxYfKYTuLMywzEJTdc1Ca8ME4xm3kR9gQgToG"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a","urls":["bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3","dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol":{"keccak256":"0x6400c4bee15052e043e5d10315135972529bd1c8012f43da494dc6b4f4661058","urls":["bzz-raw://da5d3d47d35af4373743a559ea4b9b7ecfe4bab6f0703f410c1e59959b7966ac","dweb:/ipfs/QmTHdoghh4WLu4yURjGEgRk162pcwwdsG52MPGa12GqnGR"],"license":"MIT"},"lib/risc0-ethereum/contracts/src/IRiscZeroVerifier.sol":{"keccak256":"0x3e74a4b2940b88837fb8399a0012b435d1d513a622d3ea3ba58088af9ad7e2fd","urls":["bzz-raw://b06299cc68e3c79e4eb22705bb814ce816a7fd549e78614b318ae44d35e56f9b","dweb:/ipfs/QmPpX5ciRdEH6MVRVt7qYQqy7B68qxG5v3mxkgYm3kGxi5"],"license":"Apache-2.0"},"lib/risc0-ethereum/contracts/src/Util.sol":{"keccak256":"0x230a9a58bb2b0c68d4921ecc3672783f941890a2fa3a238dbe5188cfb7658b82","urls":["bzz-raw://586cb5296c564761609ca8aaae5b1fbbdb19ab1e174f7197f602572d9e82b70c","dweb:/ipfs/QmWxDmucSfg3Wgdk1rVcheDHwkziTsXWvKpKSCnxtpQBqg"],"license":"Apache-2.0"},"lib/sp1-contracts/contracts/src/ISP1Verifier.sol":{"keccak256":"0x9e3ba64860bea920772dcf16be7946de2a2900d80bd51e9c0771184138f4f4d3","urls":["bzz-raw://0ec7230ca1fdd74edc6ab597d80bb345282aed3f0db4788ed96b4cc373ff46a3","dweb:/ipfs/QmXPuSS5gzxMhFKWr1gsxBVu6WHh53ZZEvWkGgzrkM6Y7Q"],"license":"MIT"},"src/core/AlignedProofAggregationService.sol":{"keccak256":"0x75205cc87df1f0de2635872e14d0c83a7a17eb47bec0dc26b29f7c247c93248e","urls":["bzz-raw://2401bdc755ab73c6e2c0727c85f54d4d7b9c788288b31ab09cd772d928dfebd0","dweb:/ipfs/QmZwnEx2iNGQVa4wLvtbqaz4BBCgSTwR2ZGRogn8QgEjex"],"license":"UNLICENSED"},"src/core/IAlignedProofAggregationService.sol":{"keccak256":"0x1b3582468b9014fa2d50ac5545b9e42318bb7a9344f44ea2f62dcbc4ab1f2523","urls":["bzz-raw://a12e2e49cb018dc09d5fd9240efd1db2ffe4aab7a2c4fbd1049fc8d5cfdfe35b","dweb:/ipfs/QmNkZJF4AQxkYqx34zz1cYxCWzFq23DGUixok4Cfq7Ttrc"],"license":null}},"version":1},"id":76} \ No newline at end of file diff --git a/batcher/aligned-sdk/abi/BatcherPaymentService.json b/crates/sdk/abi/BatcherPaymentService.json similarity index 100% rename from batcher/aligned-sdk/abi/BatcherPaymentService.json rename to crates/sdk/abi/BatcherPaymentService.json diff --git a/crates/sdk/src/aggregation_layer/helpers.rs b/crates/sdk/src/aggregation_layer/helpers.rs new file mode 100644 index 0000000000..607197a6c4 --- /dev/null +++ b/crates/sdk/src/aggregation_layer/helpers.rs @@ -0,0 +1,147 @@ +use crate::{beacon::BeaconClient, common::types::Network}; +use ethers::{ + providers::{Http, Middleware, Provider}, + types::{Filter, Log}, +}; + +use super::ProofVerificationAggModeError; + +/// How much to go back from current block if from_block is not provided +/// 7500 blocks = 25hr +const FROM_BLOCKS_AGO_DEFAULT: u64 = 7500; + +pub async fn fetch_verified_proofs_events( + network: Network, + eth_rpc_url: String, + from_block: Option, +) -> Result, ProofVerificationAggModeError> { + let eth_rpc_provider = Provider::::try_from(eth_rpc_url) + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))?; + + let from_block = match from_block { + Some(from_block) => from_block, + None => { + let block_number = eth_rpc_provider + .get_block_number() + .await + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))?; + + block_number + .as_u64() + .saturating_sub(FROM_BLOCKS_AGO_DEFAULT) + } + }; + + let filter = Filter::new() + .address(network.get_aligned_proof_agg_service_address()) + .event("AggregatedProofVerified(bytes32,bytes32)") + .from_block(from_block); + + let logs = eth_rpc_provider + .get_logs(&filter) + .await + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))?; + + Ok(logs) +} + +pub async fn get_blob_data_from_verified_proof_event( + eth_rpc_url: String, + beacon_client_url: String, + log: Log, +) -> Result<([u8; 32], Vec<[u8; 32]>), ProofVerificationAggModeError> { + let eth_rpc_provider = Provider::::try_from(eth_rpc_url) + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))?; + let beacon_client = BeaconClient::new(beacon_client_url); + + // First 32 bytes of the data are the bytes of the blob versioned hash + let blob_versioned_hash: [u8; 32] = log.data[0..32] + .try_into() + .map_err(|_| ProofVerificationAggModeError::EventDecoding)?; + + // Event is indexed by merkle root + let merkle_root = log.topics[1].0; + + // Block Number shouldn't be empty, in case it is, + // there is a problem with this log, and we skip it + // This same logic is replicated for other checks. + let Some(block_number) = log.block_number else { + return Err(ProofVerificationAggModeError::EventDecoding); + }; + + let Some(block) = eth_rpc_provider + .get_block(block_number.as_u64()) + .await + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))? + else { + return Err(ProofVerificationAggModeError::EventDecoding); + }; + + let Some(beacon_parent_root) = block.parent_beacon_block_root else { + return Err(ProofVerificationAggModeError::EventDecoding); + }; + + let Some(beacon_block) = beacon_client + .get_block_header_from_parent_hash(beacon_parent_root.0) + .await + .map_err(ProofVerificationAggModeError::BeaconClient)? + else { + return Err(ProofVerificationAggModeError::EventDecoding); + }; + + let slot: u64 = beacon_block + .header + .message + .slot + .parse() + .expect("Slot to be parsable number"); + + let Some(blob_data) = beacon_client + .get_blob_by_versioned_hash(slot, blob_versioned_hash) + .await + .map_err(ProofVerificationAggModeError::BeaconClient)? + else { + return Err(ProofVerificationAggModeError::EventDecoding); + }; + + let blob_bytes = + hex::decode(blob_data.blob.replace("0x", "")).expect("A valid hex encoded data"); + let proof_commitments = decoded_blob(&blob_bytes); + + Ok((merkle_root, proof_commitments)) +} + +fn decoded_blob(blob_data: &[u8]) -> Vec<[u8; 32]> { + let mut proof_hashes = vec![]; + + let mut current_hash = [0u8; 32]; + let mut current_hash_count = 0; + let mut total_bytes_count = 0; + + while total_bytes_count < blob_data.len() { + // Every 32 bytes there is a 0x0 acting as padding, so we need to skip the byte + let is_pad = total_bytes_count % 32 == 0; + if is_pad { + total_bytes_count += 1; + continue; + } + + current_hash[current_hash_count] = blob_data[total_bytes_count]; + + if current_hash_count + 1 == 32 { + // if the current_hash is the zero hash, then there are no more proofs in the blob + if current_hash == [0u8; 32] { + break; + } + proof_hashes.push(current_hash); + current_hash = [0u8; 32]; + current_hash_count = 0; + } else { + current_hash_count += 1; + } + + total_bytes_count += 1; + } + + proof_hashes +} diff --git a/crates/sdk/src/aggregation_layer/mod.rs b/crates/sdk/src/aggregation_layer/mod.rs new file mode 100644 index 0000000000..8c8c46859d --- /dev/null +++ b/crates/sdk/src/aggregation_layer/mod.rs @@ -0,0 +1,139 @@ +// Modules +mod helpers; +mod types; + +// Makes only the two types on this use public +pub use types::{AggregationModeVerificationData, ProofVerificationAggModeError}; + +use crate::{ + common::types::Network, eth::aligned_proof_agg_service::aligned_proof_aggregation_service, +}; +use ethers::{ + providers::{Http, Provider}, + types::Bytes, +}; +use helpers::{fetch_verified_proofs_events, get_blob_data_from_verified_proof_event}; +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; +use types::Hash32; + +pub enum ProofStatus { + Verified { + merkle_root: [u8; 32], + merkle_path: Vec<[u8; 32]>, + }, + Invalid, + NotFound, +} + +/// Given the [`AggregationModeVerificationData`], this function checks whether the proof was included +/// in a recent aggregated proof and verifies the corresponding Merkle root commitment. +/// +/// ### Notes +/// - This functionality is currently in Beta. As a result, we cannot determine with certainty. +/// which specific aggregation a proof belongs to. Instead, we check the events from the specified `from_block`. +/// - The `from_block` must not be older than 18 days, as blobs expire after that period and will no longer be retrievable. +/// - If not provided, it defaults to fetch logs from [`FROM_BLOCKS_AGO_DEFAULT`] +/// +/// ### The verification process includes: +/// 1. Querying the blob versioned hash from the events emitted by the aligned proof aggregation service contract since `from_block` +/// 2. Retrieving the corresponding beacon block using the block's parent beacon root +/// 3. Fetching the blobs associated with that slot +/// 4. Filtering the blob that matches the queried blob versioned hash +/// 5. Decoding the blob to extract the proofs commitments +/// 6. Checking if the given proof commitment exists within the blob's proofs +/// 7. Reconstructing the Merkle root and verifying it against the root stored in the contract +/// +/// This function is typically used in conjunction with `verifyProofInclusion` for complete on-chain verification. +pub async fn check_proof_verification( + verification_data: &AggregationModeVerificationData, + network: Network, + eth_rpc_url: String, + beacon_client_url: String, + from_block: Option, +) -> Result { + let logs = fetch_verified_proofs_events(network, eth_rpc_url.clone(), from_block).await?; + let proof_commitment = verification_data.commitment(); + + for log in logs { + let (merkle_root, leaves) = get_blob_data_from_verified_proof_event( + eth_rpc_url.clone(), + beacon_client_url.clone(), + log, + ) + .await?; + + let leaves: Vec = leaves.iter().map(|leaf| Hash32(*leaf)).collect(); + + let Some(pos) = leaves.iter().position(|p| p.0 == proof_commitment) else { + continue; + }; + + let Some(merkle_tree) = MerkleTree::::build(&leaves) else { + continue; + }; + + let Some(proof) = merkle_tree.get_proof_by_pos(pos) else { + continue; + }; + + let result = proof.verify::(&merkle_root, pos, &Hash32(proof_commitment)); + if !result { + return Ok(ProofStatus::Invalid); + } + + return Ok(ProofStatus::Verified { + merkle_path: proof.merkle_path, + merkle_root, + }); + } + + Ok(ProofStatus::NotFound) +} + +/// Simulates an on-chain verification of the proof by calling the `verifyProofInclusion` function +/// on the `ProofAggregationService` contract. +/// +/// This function is intended to complement [`check_proof_verification`], which performs off-chain verification. +/// After calling `check_proof_verification` to confirm the proof's inclusion and obtain the Merkle path, +/// this function can be used to simulate the corresponding contract call. +/// +/// ### How it works: +/// 1. Uses the provided Merkle path (as returned by [`check_proof_verification`]). +/// 2. Calls the `verifyProofInclusion` function on the contract with: +/// - The Merkle path, +/// - The proof program id. +/// - The proof public inputs bytes +/// +/// ### Purpose: +/// This is mainly useful for **testing or simulation**, to confirm that the on-chain contract would +/// accept a given proof commitment and Merkle path. It does **not** perform an actual transaction on-chain, +/// but instead simulates the call via `eth_call`. +/// +/// For off-chain verification use cases, prefer using [`check_proof_verification`]. +pub async fn is_proof_verified_on_chain( + verification_data: AggregationModeVerificationData, + merkle_path: Vec<[u8; 32]>, + network: Network, + eth_rpc_url: String, +) -> Result { + let eth_rpc_provider = Provider::::try_from(eth_rpc_url) + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))?; + let contract_provider = aligned_proof_aggregation_service( + eth_rpc_provider, + network.get_aligned_proof_agg_service_address(), + ) + .await + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))?; + + let res = contract_provider + .verify_proof_inclusion( + merkle_path, + verification_data.program_id(), + Bytes::from(verification_data.public_inputs().clone()), + ) + .call() + .await + .map_err(|e| ProofVerificationAggModeError::EthereumProviderError(e.to_string()))?; + + Ok(res) +} diff --git a/crates/sdk/src/aggregation_layer/types.rs b/crates/sdk/src/aggregation_layer/types.rs new file mode 100644 index 0000000000..ef743ea5b4 --- /dev/null +++ b/crates/sdk/src/aggregation_layer/types.rs @@ -0,0 +1,108 @@ +use lambdaworks_crypto::merkle_tree::traits::IsMerkleTreeBackend; +use sha3::{Digest, Keccak256}; + +use crate::beacon::BeaconClientError; + +#[derive(Debug)] +pub enum AggregationModeVerificationData { + SP1 { + vk: [u8; 32], + public_inputs: Vec, + }, + Risc0 { + image_id: [u8; 32], + public_inputs: Vec, + }, +} + +impl AggregationModeVerificationData { + pub fn program_id(&self) -> [u8; 32] { + match self { + Self::Risc0 { image_id, .. } => *image_id, + Self::SP1 { vk, .. } => *vk, + } + } + + pub fn public_inputs(&self) -> &Vec { + match self { + Self::Risc0 { public_inputs, .. } => public_inputs, + Self::SP1 { public_inputs, .. } => public_inputs, + } + } + + pub fn commitment(&self) -> [u8; 32] { + match self { + AggregationModeVerificationData::SP1 { vk, public_inputs } => { + let mut hasher = Keccak256::new(); + hasher.update(vk); + hasher.update(public_inputs); + hasher.finalize().into() + } + AggregationModeVerificationData::Risc0 { + image_id, + public_inputs, + } => { + let mut hasher = Keccak256::new(); + hasher.update(image_id); + hasher.update(public_inputs); + hasher.finalize().into() + } + } + } +} + +// We use a newtype wrapper around `[u8; 32]` because Rust's orphan rule +// prevents implementing a foreign trait (`IsMerkleTreeBackend`) for a foreign type (`[u8; 32]`). +#[derive(Default, Debug, PartialEq, Eq)] +pub struct Hash32(pub [u8; 32]); + +// Note: +// We define a version of the backend that takes the leaves as hashed data +// since the user may not have access to the proofs that he didn't submit +// The original MerkleTreeBackend is defined in three locations +// - aggregation_mode/src/aggregators/mod.rs +// - aggregation_mode/src/aggregators/risc0_aggregator.rs +// - aggregation_mode/src/aggregators/sp1_aggregator.rs +// The definition on aggregator/mod.rs supports taking proofs from both Risc0 and SP1 +// Hashes of all implementations should match +impl IsMerkleTreeBackend for Hash32 { + type Data = Hash32; + type Node = [u8; 32]; + + /// We don't have to hash the data, as the blob already contains the proof commitments (which represent the merkle leaves) + fn hash_data(leaf: &Self::Data) -> Self::Node { + leaf.0 + } + + /// Computes a commutative Keccak256 hash, ensuring H(a, b) == H(b, a). + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#Hashes + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/Hashes.sol#L17-L19 + /// + /// Compliant with OpenZeppelin's `processProofCalldata` function from MerkleProof.sol. + /// + /// See: https://docs.openzeppelin.com/contracts/5.x/api/utils#MerkleProof + /// + /// Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol#L114-L128 + fn hash_new_parent(child_1: &Self::Node, child_2: &Self::Node) -> Self::Node { + let mut hasher = Keccak256::new(); + if child_1 < child_2 { + hasher.update(child_1); + hasher.update(child_2); + } else { + hasher.update(child_2); + hasher.update(child_1); + } + hasher.finalize().into() + } +} + +#[derive(Debug, Clone)] +pub enum ProofVerificationAggModeError { + ProvingSystemNotSupportedInAggMode, + EthereumProviderError(String), + BeaconClient(BeaconClientError), + EventDecoding, + MerkleTreeConstruction, +} diff --git a/crates/sdk/src/beacon.rs b/crates/sdk/src/beacon.rs new file mode 100644 index 0000000000..99933a794a --- /dev/null +++ b/crates/sdk/src/beacon.rs @@ -0,0 +1,153 @@ +use std::str::FromStr; + +use ethers::core::k256::sha2::{Digest, Sha256}; +use reqwest::{Client, Url}; +use serde::{Deserialize, Serialize}; +use serde_json::Value; + +// See https://eips.ethereum.org/EIPS/eip-4844#parameters +pub const KZG_VERSIONED_HASH: u8 = 0x1; + +pub struct BeaconClient { + beacon_client_url: String, + api_client: Client, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(untagged)] +enum BeaconAPIResponse { + Success { data: Value }, + Error { code: u64, message: String }, +} + +#[derive(Debug, Clone)] +pub enum BeaconClientError { + Url(url::ParseError), + ReqwestError(String), + APIError { code: u64, message: String }, + Deserialization(String), +} + +#[derive(Deserialize, Debug)] +#[allow(dead_code)] +// https://ethereum.github.io/beacon-APIs/#/Beacon/getBlobSidecars +pub struct BlobData { + pub index: String, + pub blob: String, + pub kzg_commitment: String, + pub kzg_proof: String, + pub kzg_commitment_inclusion_proof: Vec, +} + +#[derive(Deserialize, Debug)] +#[allow(dead_code)] +// https://ethereum.github.io/beacon-APIs/#/Beacon/getBlockHeaders +pub struct BeaconBlock { + pub root: String, + pub canonical: bool, + pub header: BeaconBlockHeader, +} + +#[derive(Deserialize, Debug)] + +pub struct BeaconBlockHeader { + pub message: BeaconBlockMessage, +} + +#[derive(Deserialize, Debug)] +#[allow(dead_code)] +pub struct BeaconBlockMessage { + pub slot: String, + pub proposer_index: String, + pub parent_root: String, + pub state_root: String, + pub body_root: String, +} + +impl BeaconClient { + pub fn new(beacon_client_url: String) -> Self { + Self { + api_client: Client::new(), + beacon_client_url, + } + } + + pub async fn get_block_header_from_parent_hash( + &self, + parent_block_hash: [u8; 32], + ) -> Result, BeaconClientError> { + let parent_block_hash_hex = format!("0x{}", hex::encode(parent_block_hash)); + let data = self + .beacon_get(&format!( + "/eth/v1/beacon/headers?parent_root={}", + parent_block_hash_hex + )) + .await?; + + let res = Vec::::deserialize(data) + .map_err(|e| BeaconClientError::Deserialization(e.to_string()))?; + + let block = res + .into_iter() + .find(|block| block.header.message.parent_root == parent_block_hash_hex); + + Ok(block) + } + + pub async fn get_blobs_from_slot(&self, slot: u64) -> Result, BeaconClientError> { + let data = self + .beacon_get(&format!("/eth/v1/beacon/blob_sidecars/{}", slot)) + .await?; + + Vec::::deserialize(data) + .map_err(|e| BeaconClientError::Deserialization(e.to_string())) + } + + pub async fn get_blob_by_versioned_hash( + &self, + slot: u64, + blob_versioned_hash: [u8; 32], + ) -> Result, BeaconClientError> { + let res = self.get_blobs_from_slot(slot).await?; + + let blob = res.into_iter().find(|blob| { + let kzg_commitment_bytes = + hex::decode(blob.kzg_commitment.replace("0x", "")).expect("A valid commitment"); + + let mut hasher = Sha256::new(); + hasher.update(&kzg_commitment_bytes); + let mut versioned_hash: [u8; 32] = hasher.finalize().into(); + versioned_hash[0] = KZG_VERSIONED_HASH; + + versioned_hash == blob_versioned_hash + }); + + Ok(blob) + } + + async fn beacon_get(&self, path: &str) -> Result { + let url = Url::from_str(&format!("{}{}", self.beacon_client_url, path)) + .map_err(BeaconClientError::Url)?; + let req = self + .api_client + .get(url) + .header("content-type", "application/json") + .header("accept", "application/json"); + + let res = req + .send() + .await + .map_err(|e| BeaconClientError::ReqwestError(e.to_string()))?; + let beacon_response = res + .json() + .await + .map_err(|e| BeaconClientError::ReqwestError(e.to_string()))?; + + match beacon_response { + BeaconAPIResponse::Success { data } => Ok(data), + BeaconAPIResponse::Error { code, message } => { + Err(BeaconClientError::APIError { code, message }) + } + } + } +} diff --git a/batcher/aligned-sdk/src/core/constants.rs b/crates/sdk/src/common/constants.rs similarity index 71% rename from batcher/aligned-sdk/src/core/constants.rs rename to crates/sdk/src/common/constants.rs index 4fef4cf01f..03c48f5ae4 100644 --- a/batcher/aligned-sdk/src/core/constants.rs +++ b/crates/sdk/src/common/constants.rs @@ -41,7 +41,7 @@ pub const DEFAULT_MAX_FEE_BATCH_SIZE: usize = 10; pub const ETHEREUM_CALL_MIN_RETRY_DELAY: u64 = 500; // milliseconds pub const ETHEREUM_CALL_MAX_RETRIES: usize = 5; pub const ETHEREUM_CALL_BACKOFF_FACTOR: f32 = 2.0; -pub const ETHEREUM_CALL_MAX_RETRY_DELAY: u64 = 3600; // seconds +pub const ETHEREUM_CALL_MAX_RETRY_DELAY: u64 = 60; // seconds /// Ethereum transaction retry constants pub const BUMP_MIN_RETRY_DELAY: u64 = 500; // milliseconds @@ -57,16 +57,45 @@ pub const BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY: &str = "0x815aeCA64a974297942D2Bbf034ABEe22a38A003"; pub const BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY_STAGE: &str = "0x7577Ec4ccC1E6C529162ec8019A49C13F6DAd98b"; +pub const BATCHER_PAYMENT_SERVICE_ADDRESS_HOODI: &str = + "0x041af25Fce2413570aaa0029D36DeA1eFdeff083"; pub const BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET: &str = "0xb0567184A52cB40956df6333510d6eF35B89C8de"; +pub const BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET_STAGE: &str = + "0x88ad27EfBeF16b6fC5b2E40c5155d61876f847c5"; +pub const BATCHER_PAYMENT_SERVICE_ADDRESS_SEPOLIA: &str = + "0x403dE630751e148bD71BFFcE762E5667C0825399"; + /// AlignedServiceManager pub const ALIGNED_SERVICE_MANAGER_DEVNET: &str = "0x851356ae760d987E095750cCeb3bC6014560891C"; pub const ALIGNED_SERVICE_MANAGER_HOLESKY: &str = "0x58F280BeBE9B34c9939C3C39e0890C81f163B623"; pub const ALIGNED_SERVICE_MANAGER_HOLESKY_STAGE: &str = "0x9C5231FC88059C086Ea95712d105A2026048c39B"; +pub const ALIGNED_SERVICE_MANAGER_HOODI: &str = "0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c"; pub const ALIGNED_SERVICE_MANAGER_MAINNET: &str = "0xeF2A435e5EE44B2041100EF8cbC8ae035166606c"; +pub const ALIGNED_SERVICE_MANAGER_MAINNET_STAGE: &str = + "0x96b6a29D7B98519Ae66E6398BD27A76B30a5dC3f"; +pub const ALIGNED_SERVICE_MANAGER_SEPOLIA: &str = "0xFf731AB7b3653dc66878DC77E851D174f472d137"; + +// AlignedProofAggregationService +pub const ALIGNED_PROOF_AGG_SERVICE_ADDRESS_MAINNET: &str = "0x0"; +pub const ALIGNED_PROOF_AGG_SERVICE_ADDRESS_MAINNET_STAGE: &str = "0x0"; +pub const ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOLESKY_STAGE: &str = + "0x7Eace34A8d4C4CacE633946C6F7CF4BeF3F33513"; +pub const ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOLESKY: &str = + "0xe84CD4084d8131841CE6DC265361f81F4C59a1d4"; +pub const ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOODI: &str = + "0xEFeD2fd949995BE1a1C7f61AbFC0A33412c37f95"; +pub const ALIGNED_PROOF_AGG_SERVICE_ADDRESS_DEVNET: &str = + "0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc"; +pub const ALIGNED_PROOF_AGG_SERVICE_ADDRESS_SEPOLIA: &str = + "0xb5D46304c30B1AeB3a8Da6ab599c336f7946C8A4"; + /// Batcher URL's pub const BATCHER_URL_DEVNET: &str = "ws://localhost:8080"; pub const BATCHER_URL_HOLESKY: &str = "wss://batcher.alignedlayer.com"; pub const BATCHER_URL_HOLESKY_STAGE: &str = "wss://stage.batcher.alignedlayer.com"; +pub const BATCHER_URL_HOODI: &str = "wss://hoodi.batcher.alignedlayer.com"; pub const BATCHER_URL_MAINNET: &str = "wss://mainnet.batcher.alignedlayer.com"; +pub const BATCHER_URL_MAINNET_STAGE: &str = "wss://mainnetstage.batcher.alignedlayer.com"; +pub const BATCHER_URL_SEPOLIA: &str = "wss://sepolia.batcher.alignedlayer.com"; diff --git a/batcher/aligned-sdk/src/core/errors.rs b/crates/sdk/src/common/errors.rs similarity index 93% rename from batcher/aligned-sdk/src/core/errors.rs rename to crates/sdk/src/common/errors.rs index 31fc3ee54a..70e8375f95 100644 --- a/batcher/aligned-sdk/src/core/errors.rs +++ b/crates/sdk/src/common/errors.rs @@ -96,7 +96,10 @@ pub enum SubmitError { AddToBatchError, InvalidProofInclusionData, GetNonceError(String), + BatchQueueLimitExceededError, GenericError(String), + UserFundsUnlocked, + ProofReplaced, } impl From for SubmitError { @@ -210,7 +213,21 @@ impl fmt::Display for SubmitError { SubmitError::InvalidProofInclusionData => { write!(f, "Batcher responded with invalid batch inclusion data. Can't verify your proof was correctly included in the batch.") } + SubmitError::BatchQueueLimitExceededError => { + write!( + f, + "Error while adding entry to batch, queue limit exceeded." + ) + } + SubmitError::ProofReplaced => write!( + f, + "Proof has been replaced by a higher fee for the same nonce" + ), SubmitError::GetNonceError(e) => write!(f, "Error while getting nonce {}", e), + SubmitError::UserFundsUnlocked => write!( + f, + "User funds have been unlocked and proofs removed from queue" + ), } } } @@ -246,6 +263,17 @@ pub enum GetNonceError { UnexpectedResponse(String), InvalidRequest(String), ProtocolMismatch { current: u16, expected: u16 }, + GenericError(String), +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub enum GetLastMaxFeeError { + ConnectionFailed(String), + SerializationError(String), + UnexpectedResponse(String), + InvalidRequest(String), + ProtocolMismatch { current: u16, expected: u16 }, + GenericError(String), } #[derive(Debug)] diff --git a/crates/sdk/src/common/mod.rs b/crates/sdk/src/common/mod.rs new file mode 100644 index 0000000000..497d26485f --- /dev/null +++ b/crates/sdk/src/common/mod.rs @@ -0,0 +1,4 @@ +pub mod constants; +pub mod errors; +pub mod types; +pub mod utils; diff --git a/batcher/aligned-sdk/src/core/types.rs b/crates/sdk/src/common/types.rs similarity index 73% rename from batcher/aligned-sdk/src/core/types.rs rename to crates/sdk/src/common/types.rs index e0ee703d2e..9c753f49fc 100644 --- a/batcher/aligned-sdk/src/core/types.rs +++ b/crates/sdk/src/common/types.rs @@ -3,9 +3,8 @@ use std::fmt::Display; use std::fmt::Formatter; use std::str::FromStr; -use ethers::core::k256::ecdsa::SigningKey; -use ethers::signers::Signer; -use ethers::signers::Wallet; +pub use ethers::core::k256::ecdsa::SigningKey; +pub use ethers::signers::{Signer, Wallet}; use ethers::types::transaction::eip712::EIP712Domain; use ethers::types::transaction::eip712::Eip712; use ethers::types::transaction::eip712::Eip712Error; @@ -20,11 +19,19 @@ use serde::{Deserialize, Serialize}; use sha3::{Digest, Keccak256}; use super::constants::{ - ALIGNED_SERVICE_MANAGER_DEVNET, ALIGNED_SERVICE_MANAGER_HOLESKY, - ALIGNED_SERVICE_MANAGER_HOLESKY_STAGE, ALIGNED_SERVICE_MANAGER_MAINNET, + ALIGNED_PROOF_AGG_SERVICE_ADDRESS_DEVNET, ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOLESKY, + ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOLESKY_STAGE, ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOODI, + ALIGNED_PROOF_AGG_SERVICE_ADDRESS_MAINNET, ALIGNED_PROOF_AGG_SERVICE_ADDRESS_MAINNET_STAGE, + ALIGNED_PROOF_AGG_SERVICE_ADDRESS_SEPOLIA, ALIGNED_SERVICE_MANAGER_DEVNET, + ALIGNED_SERVICE_MANAGER_HOLESKY, ALIGNED_SERVICE_MANAGER_HOLESKY_STAGE, + ALIGNED_SERVICE_MANAGER_HOODI, ALIGNED_SERVICE_MANAGER_MAINNET, + ALIGNED_SERVICE_MANAGER_MAINNET_STAGE, ALIGNED_SERVICE_MANAGER_SEPOLIA, BATCHER_PAYMENT_SERVICE_ADDRESS_DEVNET, BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY, - BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY_STAGE, BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET, - BATCHER_URL_DEVNET, BATCHER_URL_HOLESKY, BATCHER_URL_HOLESKY_STAGE, BATCHER_URL_MAINNET, + BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY_STAGE, BATCHER_PAYMENT_SERVICE_ADDRESS_HOODI, + BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET, BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET_STAGE, + BATCHER_PAYMENT_SERVICE_ADDRESS_SEPOLIA, BATCHER_URL_DEVNET, BATCHER_URL_HOLESKY, + BATCHER_URL_HOLESKY_STAGE, BATCHER_URL_HOODI, BATCHER_URL_MAINNET, BATCHER_URL_MAINNET_STAGE, + BATCHER_URL_SEPOLIA, }; use super::errors::VerifySignatureError; @@ -39,10 +46,11 @@ const NONCED_VERIFICATION_DATA_TYPE: &[u8] = pub enum ProvingSystemId { GnarkPlonkBls12_381, GnarkPlonkBn254, - Groth16Bn254, + GnarkGroth16Bn254, #[default] SP1, Risc0, + CircomGroth16Bn256, Mina, MinaAccount, } @@ -52,9 +60,10 @@ impl Display for ProvingSystemId { match self { ProvingSystemId::GnarkPlonkBls12_381 => write!(f, "GnarkPlonkBls12_381"), ProvingSystemId::GnarkPlonkBn254 => write!(f, "GnarkPlonkBn254"), - ProvingSystemId::Groth16Bn254 => write!(f, "Groth16Bn254"), + ProvingSystemId::GnarkGroth16Bn254 => write!(f, "GnarkGroth16Bn254"), ProvingSystemId::SP1 => write!(f, "SP1"), ProvingSystemId::Risc0 => write!(f, "Risc0"), + ProvingSystemId::CircomGroth16Bn256 => write!(f, "CircomGroth16Bn256"), ProvingSystemId::Mina => write!(f, "Mina"), ProvingSystemId::MinaAccount => write!(f, "MinaAccount"), } @@ -64,9 +73,28 @@ impl Display for ProvingSystemId { #[derive(Debug, Serialize, Deserialize, Clone)] pub struct VerificationData { pub proving_system: ProvingSystemId, + #[serde(with = "serde_bytes")] pub proof: Vec, + #[serde( + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_option_bytes", + serialize_with = "serialize_option_bytes" + )] pub pub_input: Option>, + #[serde( + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_option_bytes", + serialize_with = "serialize_option_bytes" + )] pub verification_key: Option>, + #[serde( + default, + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_option_bytes", + serialize_with = "serialize_option_bytes" + )] pub vm_program_code: Option>, pub proof_generator_addr: Address, } @@ -96,6 +124,34 @@ impl NoncedVerificationData { payment_service_addr, } } + + /// Returns an upper bound for the CBOR encoding size without performing serialization. + /// Sums the length of all Vec fields in the inner VerificationData and adds 1024 bytes as overhead. This covers the constant size data and extra headers + pub fn cbor_size_upper_bound(&self) -> usize { + const CBOR_OVERHEAD_BYTES: usize = 1024; + let mut total_size = 0; + + // Add length of proof Vec + total_size += self.verification_data.proof.len(); + + // Add length of pub_input Option> + if let Some(ref pub_input) = self.verification_data.pub_input { + total_size += pub_input.len(); + } + + // Add length of verification_key Option> + if let Some(ref verification_key) = self.verification_data.verification_key { + total_size += verification_key.len(); + } + + // Add length of vm_program_code Option> + if let Some(ref vm_program_code) = self.verification_data.vm_program_code { + total_size += vm_program_code.len(); + } + + // Add overhead bytes for the full NoncedVerificationData structure + total_size + CBOR_OVERHEAD_BYTES + } } // Defines a price estimate type for the user. @@ -243,6 +299,7 @@ pub enum ClientMessage { // Needs to be wrapped in box as the message is 3x bigger than the others // see https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant SubmitProof(Box), + GetLastMaxFee(Address), } impl Display for ClientMessage { @@ -251,6 +308,7 @@ impl Display for ClientMessage { match self { ClientMessage::GetNonceForAddress(_) => write!(f, "GetNonceForAddress"), ClientMessage::SubmitProof(_) => write!(f, "SubmitProof"), + ClientMessage::GetLastMaxFee(_) => write!(f, "GetLastMaxFee"), } } } @@ -399,6 +457,10 @@ pub enum SubmitProofResponseMessage { AddToBatchError, EthRpcError, InvalidPaymentServiceAddress(Address, Address), + UnderpricedProof, + ServerBusy, + UserFundsUnlocked, + ProofReplaced, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -406,6 +468,14 @@ pub enum GetNonceResponseMessage { Nonce(U256), EthRpcError(String), InvalidRequest(String), + ServerBusy, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum GetLastMaxFeeResponseMessage { + LastMaxFee(U256), + InvalidRequest(String), + ServerBusy, } #[derive(Debug, Clone)] @@ -413,7 +483,10 @@ pub enum Network { Devnet, Holesky, HoleskyStage, + Hoodi, Mainnet, + MainnetStage, + Sepolia, Custom(String, String, String), } @@ -423,7 +496,10 @@ impl Network { Self::Devnet => H160::from_str(ALIGNED_SERVICE_MANAGER_DEVNET).unwrap(), Self::Holesky => H160::from_str(ALIGNED_SERVICE_MANAGER_HOLESKY).unwrap(), Self::HoleskyStage => H160::from_str(ALIGNED_SERVICE_MANAGER_HOLESKY_STAGE).unwrap(), + Self::Hoodi => H160::from_str(ALIGNED_SERVICE_MANAGER_HOODI).unwrap(), Self::Mainnet => H160::from_str(ALIGNED_SERVICE_MANAGER_MAINNET).unwrap(), + Self::MainnetStage => H160::from_str(ALIGNED_SERVICE_MANAGER_MAINNET_STAGE).unwrap(), + Self::Sepolia => H160::from_str(ALIGNED_SERVICE_MANAGER_SEPOLIA).unwrap(), Self::Custom(s, _, _) => H160::from_str(s.as_str()).unwrap(), } } @@ -435,7 +511,29 @@ impl Network { Self::HoleskyStage => { H160::from_str(BATCHER_PAYMENT_SERVICE_ADDRESS_HOLESKY_STAGE).unwrap() } + Self::Hoodi => H160::from_str(BATCHER_PAYMENT_SERVICE_ADDRESS_HOODI).unwrap(), Self::Mainnet => H160::from_str(BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET).unwrap(), + Self::MainnetStage => { + H160::from_str(BATCHER_PAYMENT_SERVICE_ADDRESS_MAINNET_STAGE).unwrap() + } + Self::Sepolia => H160::from_str(BATCHER_PAYMENT_SERVICE_ADDRESS_SEPOLIA).unwrap(), + Self::Custom(_, s, _) => H160::from_str(s.as_str()).unwrap(), + } + } + + pub fn get_aligned_proof_agg_service_address(&self) -> ethers::types::H160 { + match self { + Self::Devnet => H160::from_str(ALIGNED_PROOF_AGG_SERVICE_ADDRESS_DEVNET).unwrap(), + Self::Holesky => H160::from_str(ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOLESKY).unwrap(), + Self::HoleskyStage => { + H160::from_str(ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOLESKY_STAGE).unwrap() + } + Self::Hoodi => H160::from_str(ALIGNED_PROOF_AGG_SERVICE_ADDRESS_HOODI).unwrap(), + Self::Mainnet => H160::from_str(ALIGNED_PROOF_AGG_SERVICE_ADDRESS_MAINNET).unwrap(), + Self::MainnetStage => { + H160::from_str(ALIGNED_PROOF_AGG_SERVICE_ADDRESS_MAINNET_STAGE).unwrap() + } + Self::Sepolia => H160::from_str(ALIGNED_PROOF_AGG_SERVICE_ADDRESS_SEPOLIA).unwrap(), Self::Custom(_, s, _) => H160::from_str(s.as_str()).unwrap(), } } @@ -445,12 +543,34 @@ impl Network { Self::Devnet => BATCHER_URL_DEVNET, Self::Holesky => BATCHER_URL_HOLESKY, Self::HoleskyStage => BATCHER_URL_HOLESKY_STAGE, + Self::Hoodi => BATCHER_URL_HOODI, Self::Mainnet => BATCHER_URL_MAINNET, + Self::MainnetStage => BATCHER_URL_MAINNET_STAGE, + Self::Sepolia => BATCHER_URL_SEPOLIA, Self::Custom(_, _, s) => s.as_str(), } } } +// Helper functions for serializing Option> with serde_bytes +fn serialize_option_bytes(value: &Option>, serializer: S) -> Result +where + S: serde::Serializer, +{ + match value { + Some(bytes) => serde_bytes::serialize(bytes, serializer), + None => serializer.serialize_none(), + } +} + +fn deserialize_option_bytes<'de, D>(deserializer: D) -> Result>, D::Error> +where + D: serde::Deserializer<'de>, +{ + let opt: Option = Option::deserialize(deserializer)?; + Ok(opt.map(|buf| buf.into_vec())) +} + #[cfg(test)] mod tests { use ethers::signers::LocalWallet; @@ -467,7 +587,7 @@ mod tests { let proof = [42, 42, 42, 42].to_vec(); let pub_input = Some([32, 32, 32, 32].to_vec()); let verification_key = Some([8, 8, 8, 8].to_vec()); - let proving_system = ProvingSystemId::Groth16Bn254; + let proving_system = ProvingSystemId::GnarkGroth16Bn254; let verification_data = VerificationData { proving_system, diff --git a/crates/sdk/src/common/utils.rs b/crates/sdk/src/common/utils.rs new file mode 100644 index 0000000000..97266f9191 --- /dev/null +++ b/crates/sdk/src/common/utils.rs @@ -0,0 +1,32 @@ +use ethers::{abi::ethereum_types::FromDecStrErr, types::U256}; + +/// Encodes Circom public inputs into a single byte vector. +/// +/// Circom normally outputs public inputs as a JSON array of strings, where each +/// entry is actually a big integer represented in decimal. For example: +/// +/// ```json +/// { "pubInputs": ["123", "456", "789"] } +/// ``` +/// +/// For on-chain usage (e.g. in Solidity), working with JSON is inefficient. +/// Instead, we prefer the **raw form**: each input is converted to a 32-byte +/// big-endian encoding of the integer, concatenated together. This makes it +/// simple to compute commitments and verify proofs on-chain, since the contract +/// receives a compact `bytes` array rather than parsing JSON. +/// +/// Each input must fit in 32 bytes (i.e. < 2^256). +pub fn encode_circom_pub_inputs(input: &[String]) -> Result, FromDecStrErr> { + let mut out = Vec::with_capacity(input.len() * 32); + + for s in input { + // parse as decimal (base 10). Use from_str_radix(s, 16) if they're hex. + let n = U256::from_dec_str(s)?; + let mut bytes = [0u8; 32]; + n.to_big_endian(&mut bytes); + + out.extend_from_slice(&bytes); + } + + Ok(out) +} diff --git a/batcher/aligned-sdk/src/communication/batch.rs b/crates/sdk/src/communication/batch.rs similarity index 97% rename from batcher/aligned-sdk/src/communication/batch.rs rename to crates/sdk/src/communication/batch.rs index 56c0b2ad11..78481f8bdb 100644 --- a/batcher/aligned-sdk/src/communication/batch.rs +++ b/crates/sdk/src/communication/batch.rs @@ -1,14 +1,14 @@ use log::debug; use crate::{ - core::{ + common::{ errors, types::{ AlignedVerificationData, BatchInclusionData, Network, VerificationCommitmentBatch, VerificationDataCommitment, }, }, - sdk::is_proof_verified, + verification_layer::is_proof_verified, }; const RETRIES: u64 = 10; diff --git a/batcher/aligned-sdk/src/communication/messaging.rs b/crates/sdk/src/communication/messaging.rs similarity index 92% rename from batcher/aligned-sdk/src/communication/messaging.rs rename to crates/sdk/src/communication/messaging.rs index 8677ff1b44..5127b6429b 100644 --- a/batcher/aligned-sdk/src/communication/messaging.rs +++ b/crates/sdk/src/communication/messaging.rs @@ -10,17 +10,17 @@ use futures_util::future::Ready; use futures_util::stream::{SplitSink, TryFilter}; use tokio_tungstenite::{tungstenite::Message, MaybeTlsStream, WebSocketStream}; +use crate::common::types::{BatchInclusionData, SubmitProofMessage}; use crate::communication::serialization::{cbor_deserialize, cbor_serialize}; -use crate::core::types::{BatchInclusionData, SubmitProofMessage}; use crate::{ - communication::batch::process_batcher_response, - core::{ + common::{ errors::SubmitError, types::{ AlignedVerificationData, ClientMessage, NoncedVerificationData, SubmitProofResponseMessage, VerificationData, VerificationDataCommitment, }, }, + communication::batch::process_batcher_response, }; pub type ResponseStream = TryFilter< @@ -265,6 +265,24 @@ async fn handle_batcher_response(msg: Message) -> Result { + error!("Batcher responded with error: proof underpriced. Funds have not been spent."); + Err(SubmitError::InvalidMaxFee) + } + Ok(SubmitProofResponseMessage::ServerBusy) => { + error!("Server is busy processing requests, please retry. Funds have not been spent."); + Err(SubmitError::GenericError( + "Server is busy processing requests, please retry".to_string(), + )) + } + Ok(SubmitProofResponseMessage::UserFundsUnlocked) => { + error!("User funds have been unlocked and proofs removed from queue. Funds have not been spent."); + Err(SubmitError::UserFundsUnlocked) + } + Ok(SubmitProofResponseMessage::ProofReplaced) => { + error!("Proof has been replaced by a higher fee for the same nonce. Funds have not been spent."); + Err(SubmitError::ProofReplaced) + } Err(e) => { error!( "Error while deserializing batch inclusion data: {}. Funds have not been spent.", diff --git a/crates/sdk/src/communication/mod.rs b/crates/sdk/src/communication/mod.rs new file mode 100644 index 0000000000..1e3218d34e --- /dev/null +++ b/crates/sdk/src/communication/mod.rs @@ -0,0 +1,4 @@ +pub mod batch; +pub mod messaging; +pub mod protocol; +pub mod serialization; diff --git a/batcher/aligned-sdk/src/communication/protocol.rs b/crates/sdk/src/communication/protocol.rs similarity index 94% rename from batcher/aligned-sdk/src/communication/protocol.rs rename to crates/sdk/src/communication/protocol.rs index aba52b97ff..8e03801004 100644 --- a/batcher/aligned-sdk/src/communication/protocol.rs +++ b/crates/sdk/src/communication/protocol.rs @@ -2,7 +2,7 @@ use futures_util::{stream::SplitStream, StreamExt}; use tokio::net::TcpStream; use tokio_tungstenite::{MaybeTlsStream, WebSocketStream}; -use crate::core::{errors::SubmitError, types::SubmitProofResponseMessage}; +use crate::common::{errors::SubmitError, types::SubmitProofResponseMessage}; use super::serialization::cbor_deserialize; diff --git a/batcher/aligned-sdk/src/communication/serialization.rs b/crates/sdk/src/communication/serialization.rs similarity index 100% rename from batcher/aligned-sdk/src/communication/serialization.rs rename to crates/sdk/src/communication/serialization.rs diff --git a/crates/sdk/src/eth/aligned_proof_agg_service.rs b/crates/sdk/src/eth/aligned_proof_agg_service.rs new file mode 100644 index 0000000000..ff2cdd65b9 --- /dev/null +++ b/crates/sdk/src/eth/aligned_proof_agg_service.rs @@ -0,0 +1,33 @@ +use std::sync::Arc; + +use ethers::prelude::*; + +use crate::common::errors::VerificationError; + +abigen!( + ProofAggregationServiceContract, + "abi/AlignedProofAggregationService.json" +); + +pub type AlignedProofAggregationService = ProofAggregationServiceContract>; + +pub async fn aligned_proof_aggregation_service( + provider: Provider, + contract_address: H160, +) -> Result { + let client = Arc::new(provider); + + // Verify that the contract has code at the given address + let code = client + .get_code(contract_address, None) + .await + .map_err(|e| VerificationError::EthereumProviderError(e.to_string()))?; + if code.is_empty() { + return Err(VerificationError::EthereumNotAContract(contract_address)); + } + + Ok(AlignedProofAggregationService::new( + contract_address, + client, + )) +} diff --git a/batcher/aligned-sdk/src/eth/aligned_service_manager.rs b/crates/sdk/src/eth/aligned_service_manager.rs similarity index 96% rename from batcher/aligned-sdk/src/eth/aligned_service_manager.rs rename to crates/sdk/src/eth/aligned_service_manager.rs index 1190c2a0f3..8703e86333 100644 --- a/batcher/aligned-sdk/src/eth/aligned_service_manager.rs +++ b/crates/sdk/src/eth/aligned_service_manager.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use ethers::prelude::*; -use crate::core::errors::VerificationError; +use crate::common::errors::VerificationError; abigen!( AlignedLayerServiceManagerContract, diff --git a/batcher/aligned-sdk/src/eth/batcher_payment_service.rs b/crates/sdk/src/eth/batcher_payment_service.rs similarity index 73% rename from batcher/aligned-sdk/src/eth/batcher_payment_service.rs rename to crates/sdk/src/eth/batcher_payment_service.rs index b42f14fe26..7d93658fae 100644 --- a/batcher/aligned-sdk/src/eth/batcher_payment_service.rs +++ b/crates/sdk/src/eth/batcher_payment_service.rs @@ -1,8 +1,8 @@ use std::sync::Arc; -use ethers::prelude::*; +use ethers::{core::k256::ecdsa::SigningKey, prelude::*}; -use crate::core::errors::VerificationError; +use crate::common::errors::VerificationError; abigen!( BatcherPaymentServiceContract, @@ -11,6 +11,9 @@ abigen!( pub type BatcherPaymentService = BatcherPaymentServiceContract>; +pub type SignerMiddlewareT = SignerMiddleware, Wallet>; +pub type BatcherPaymentServiceWithSigner = BatcherPaymentServiceContract; + pub async fn batcher_payment_service( provider: Provider, contract_address: H160, diff --git a/crates/sdk/src/eth/mod.rs b/crates/sdk/src/eth/mod.rs new file mode 100644 index 0000000000..ca9dbb29d5 --- /dev/null +++ b/crates/sdk/src/eth/mod.rs @@ -0,0 +1,3 @@ +pub mod aligned_proof_agg_service; +pub mod aligned_service_manager; +pub mod batcher_payment_service; diff --git a/crates/sdk/src/lib.rs b/crates/sdk/src/lib.rs new file mode 100644 index 0000000000..edb1ed7e4a --- /dev/null +++ b/crates/sdk/src/lib.rs @@ -0,0 +1,14 @@ +pub mod aggregation_layer; +pub mod verification_layer; + +/// Common types used across the Aggregation Layer and the Verification Layer AVS +pub mod common; + +// Eth and Communication modules should be outside the SDK in the future +/// Communication module is mostly for internal use +/// It contains code for communication protocols +pub mod communication; +/// Eth module is mostly for internal use +pub mod eth; + +pub(crate) mod beacon; diff --git a/batcher/aligned-sdk/src/sdk.rs b/crates/sdk/src/verification_layer/mod.rs similarity index 69% rename from batcher/aligned-sdk/src/sdk.rs rename to crates/sdk/src/verification_layer/mod.rs index b2623d03d0..203bee8f95 100644 --- a/batcher/aligned-sdk/src/sdk.rs +++ b/crates/sdk/src/verification_layer/mod.rs @@ -1,25 +1,26 @@ use crate::{ - communication::{ - batch::await_batch_verification, - messaging::{receive, send_messages, ResponseStream}, - protocol::check_protocol_version, - serialization::{cbor_deserialize, cbor_serialize}, - }, - core::{ + common::{ constants::{ ADDITIONAL_SUBMISSION_GAS_COST_PER_PROOF, DEFAULT_CONSTANT_GAS_COST, DEFAULT_MAX_FEE_BATCH_SIZE, GAS_PRICE_PERCENTAGE_MULTIPLIER, INSTANT_MAX_FEE_BATCH_SIZE, PERCENTAGE_DIVIDER, }, - errors::{self, GetNonceError}, + errors::{self, GetLastMaxFeeError, GetNonceError, PaymentError}, types::{ - AlignedVerificationData, ClientMessage, FeeEstimationType, GetNonceResponseMessage, - Network, ProvingSystemId, VerificationData, + AlignedVerificationData, ClientMessage, FeeEstimationType, + GetLastMaxFeeResponseMessage, GetNonceResponseMessage, Network, ProvingSystemId, + VerificationData, }, }, + communication::{ + batch::await_batch_verification, + messaging::{receive, send_messages, ResponseStream}, + protocol::check_protocol_version, + serialization::{cbor_deserialize, cbor_serialize}, + }, eth::{ aligned_service_manager::aligned_service_manager, - batcher_payment_service::batcher_payment_service, + batcher_payment_service::{batcher_payment_service, BatcherPaymentServiceWithSigner}, }, }; @@ -49,16 +50,18 @@ use std::io::Write; use std::path::PathBuf; /// Submits multiple proofs to the batcher to be verified in Aligned and waits for the verification on-chain. +/// /// # Arguments /// * `eth_rpc_url` - The URL of the Ethereum RPC node. -/// * `chain` - The chain on which the verification will be done. +/// * `network` - The network on which the verification will be done. /// * `verification_data` - An array of verification data of each proof. -/// * `max_fees` - An array of the maximum fee that the submitter is willing to pay for each proof verification. +/// * `max_fee` - The maximum fee that the submitter is willing to pay for the verification for each proof. /// * `wallet` - The wallet used to sign the proof. /// * `nonce` - The nonce of the submitter address. See [`get_nonce_from_ethereum`] or [`get_nonce_from_batcher`]. -/// * `payment_service_addr` - The address of the payment service contract. +/// /// # Returns /// * An array of aligned verification data obtained when submitting the proof. +/// /// # Errors /// * `MissingRequiredParameter` if the verification data vector is empty. /// * `ProtocolVersionMismatch` if the version of the SDK is lower than the expected one. @@ -76,6 +79,7 @@ use std::path::PathBuf; /// * `ProofTooLarge` if the proof is too large. /// * `InsufficientBalance` if the sender balance is insufficient or unlocked /// * `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. +/// * `ProofReplaced` if the proof has been replaced. /// * `GenericError` if the error doesn't match any of the previous ones. #[allow(clippy::too_many_arguments)] // TODO: Refactor this function, use NoncedVerificationData pub async fn submit_multiple_and_wait_verification( @@ -109,19 +113,21 @@ pub async fn submit_multiple_and_wait_verification( } /// Returns the estimated `max_fee` depending on the batch inclusion preference of the user, computed based on the current gas price, and the number of proofs in a batch. -/// NOTE: The `max_fee` is computed from an rpc nodes max priority gas price. +/// NOTE: The `max_fee` is computed from a rpc node's max priority gas price. /// To estimate the `max_fee` of a batch we compute it based on a batch size of 1 (Instant), 10 (Default), or a user supplied `number_proofs_in_batch` (Custom). /// The `max_fee` estimates therefore are: -/// * `Default`: Specifies a `max_fee` equivalent to the cost of paying for one proof within a batch of 10 proofs ie. 1 / 10 proofs. -/// This estimates a default `max_fee` the user should specify for including there proof within the batch. +/// * `Default`: Specifies a `max_fee` equivalent to the cost of paying for one proof within a batch of 10 proofs i.e. 1 / 10 proofs. +/// This estimates a default `max_fee` the user should specify for including there proof within the batch. /// * `Instant`: Specifies a `max_fee` equivalent to the cost of paying for an entire batch ensuring the user's proof is included instantly assuming the proof is not competing with others for inclusion. /// * `Custom (number_proofs_in_batch)`: Specifies a `max_fee` equivalent to the cost of paying 1 proof / `number_proofs_in_batch` allowing the user a user to estimate the `max_fee` precisely based on the `number_proofs_in_batch`. /// /// # Arguments /// * `eth_rpc_url` - The URL of the Ethereum RPC node. -/// * `estimate_type` - Enum specifying the type of price estimate: Default, Instant. Custom(usize) +/// * `fee_estimation_type` - Enum specifying the type of price estimate: Default, Instant. Custom(usize) +/// /// # Returns /// The estimated `max_fee` in gas for a proof based on the users `FeeEstimateType` as a `U256`. +/// /// # Errors /// * `EthereumProviderError` if there is an error in the connection with the RPC provider. /// * `EthereumGasPriceError` if there is an error retrieving the Ethereum gas price. @@ -131,31 +137,33 @@ pub async fn estimate_fee( ) -> Result { match fee_estimation_type { FeeEstimationType::Default => { - calculate_fee_per_proof_for_batch_of_size(eth_rpc_url, DEFAULT_MAX_FEE_BATCH_SIZE).await + estimate_fee_per_proof_with_rpc(DEFAULT_MAX_FEE_BATCH_SIZE, eth_rpc_url).await } FeeEstimationType::Instant => { - calculate_fee_per_proof_for_batch_of_size(eth_rpc_url, INSTANT_MAX_FEE_BATCH_SIZE).await - } - FeeEstimationType::Custom(n) => { - calculate_fee_per_proof_for_batch_of_size(eth_rpc_url, n).await + estimate_fee_per_proof_with_rpc(INSTANT_MAX_FEE_BATCH_SIZE, eth_rpc_url).await } + FeeEstimationType::Custom(n) => estimate_fee_per_proof_with_rpc(n, eth_rpc_url).await, } } /// Returns the `fee_per_proof` based on the current gas price for a batch compromised of `num_proofs_per_batch` /// i.e. (1 / `num_proofs_per_batch`). -// NOTE: The `fee_per_proof` is computed from an rpc nodes max priority gas price. +/// +/// NOTE: The `fee_per_proof` is computed from a rpc node's max priority gas price. +/// /// # Arguments /// * `eth_rpc_url` - The URL of the users Ethereum RPC node. -/// * `num_proofs_per_batch` - number of proofs within a batch. +/// * `num_proofs_in_batch` - number of proofs within a batch. +/// /// # Returns /// * The fee per proof of a batch as a `U256`. +/// /// # Errors /// * `EthereumProviderError` if there is an error in the connection with the RPC provider. /// * `EthereumGasPriceError` if there is an error retrieving the Ethereum gas price. -pub async fn calculate_fee_per_proof_for_batch_of_size( - eth_rpc_url: &str, +pub async fn estimate_fee_per_proof_with_rpc( num_proofs_in_batch: usize, + eth_rpc_url: &str, ) -> Result { let eth_rpc_provider = Provider::::try_from(eth_rpc_url).map_err(|e: url::ParseError| { @@ -163,20 +171,39 @@ pub async fn calculate_fee_per_proof_for_batch_of_size( })?; let gas_price = fetch_gas_price(ð_rpc_provider).await?; - // Cost for estimate `num_proofs_per_batch` proofs + let fee_per_proof = calculate_fee_per_proof_with_gas_price(num_proofs_in_batch, gas_price); + Ok(fee_per_proof) +} + +/// Estimates the fee per proof based on the given batch size and gas price. +/// +/// This function models the cost of submitting a batch of proofs to the network +/// by computing an estimated gas cost per proof. The total gas cost is composed of: +/// - a constant base gas cost for any batch submission (`DEFAULT_CONSTANT_GAS_COST`) +/// - an additional gas cost that scales linearly with the number of proofs in the batch +/// (`ADDITIONAL_SUBMISSION_GAS_COST_PER_PROOF * num_proofs_in_batch`) +/// +/// The final fee per proof is calculated by: +/// (estimated_gas_per_proof * gas_price * GAS_PRICE_PERCENTAGE_MULTIPLIER) / PERCENTAGE_DIVIDER +/// +/// +/// # Arguments +/// * `num_proofs_in_batch` - Number of proofs in the batch (must be > 0). +/// * `gas_price` - Current gas price (in wei). +/// +/// # Returns +/// * Estimated fee per individual proof (in wei). +/// +/// # Panics +/// This function panics if `num_proofs_in_batch` is 0 due to division by zero. +pub fn calculate_fee_per_proof_with_gas_price(num_proofs_in_batch: usize, gas_price: U256) -> U256 { + // Gas cost for `num_proofs_per_batch` proofs let estimated_gas_per_proof = (DEFAULT_CONSTANT_GAS_COST + ADDITIONAL_SUBMISSION_GAS_COST_PER_PROOF * num_proofs_in_batch as u128) / num_proofs_in_batch as u128; - // Price of 1 proof in a batch of size `num_proofs_in_batch` i.e. (1 / `num_proofs_in_batch`). - // The computed price is adjusted with respect to the percentage multiplier from: - // https://github.com/yetanotherco/aligned_layer/blob/staging/batcher/aligned-batcher/src/lib.rs#L1401 - let fee_per_proof = (U256::from(estimated_gas_per_proof) - * gas_price - * U256::from(GAS_PRICE_PERCENTAGE_MULTIPLIER)) - / U256::from(PERCENTAGE_DIVIDER); - - Ok(fee_per_proof) + (U256::from(estimated_gas_per_proof) * gas_price * U256::from(GAS_PRICE_PERCENTAGE_MULTIPLIER)) + / U256::from(PERCENTAGE_DIVIDER) } async fn fetch_gas_price( @@ -195,14 +222,17 @@ async fn fetch_gas_price( } /// Submits multiple proofs to the batcher to be verified in Aligned. +/// /// # Arguments -/// * `network` - The netork on which the verification will be done. +/// * `network` - The network on which the verification will be done. /// * `verification_data` - An array of verification data of each proof. -/// * `max_fees` - An array of the maximum fee that the submitter is willing to pay for each proof verification. +/// * `max_fee` - The maximum fee that the submitter is willing to pay for the verification for each proof. /// * `wallet` - The wallet used to sign the proof. /// * `nonce` - The nonce of the submitter address. See [`get_nonce_from_ethereum`] or [`get_nonce_from_batcher`]. +/// /// # Returns /// * An array of aligned verification data obtained when submitting the proof. +/// /// # Errors /// * `MissingRequiredParameter` if the verification data vector is empty. /// * `ProtocolVersionMismatch` if the version of the SDK is lower than the expected one. @@ -217,6 +247,7 @@ async fn fetch_gas_price( /// * `ProofTooLarge` if the proof is too large. /// * `InsufficientBalance` if the sender balance is insufficient or unlocked. /// * `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. +/// * `ProofReplaced` if the proof has been replaced. /// * `GenericError` if the error doesn't match any of the previous ones. pub async fn submit_multiple( network: Network, @@ -307,16 +338,18 @@ async fn _submit_multiple( } /// Submits a proof to the batcher to be verified in Aligned and waits for the verification on-chain. +/// /// # Arguments /// * `eth_rpc_url` - The URL of the Ethereum RPC node. -/// * `chain` - The chain on which the verification will be done. +/// * `network` - The network on which the verification will be done. /// * `verification_data` - The verification data of the proof. /// * `max_fee` - The maximum fee that the submitter is willing to pay for the verification. /// * `wallet` - The wallet used to sign the proof. /// * `nonce` - The nonce of the submitter address. See [`get_nonce_from_ethereum`] or [`get_nonce_from_batcher`]. -/// * `payment_service_addr` - The address of the payment service contract. +/// /// # Returns /// * The aligned verification data obtained when submitting the proof. +/// /// # Errors /// * `MissingRequiredParameter` if the verification data vector is empty. /// * `ProtocolVersionMismatch` if the version of the SDK is lower than the expected one. @@ -334,6 +367,7 @@ async fn _submit_multiple( /// * `ProofTooLarge` if the proof is too large. /// * `InsufficientBalance` if the sender balance is insufficient or unlocked /// * `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. +/// * `ProofReplaced` if the proof has been replaced. /// * `GenericError` if the error doesn't match any of the previous ones. #[allow(clippy::too_many_arguments)] // TODO: Refactor this function, use NoncedVerificationData pub async fn submit_and_wait_verification( @@ -366,14 +400,17 @@ pub async fn submit_and_wait_verification( } /// Submits a proof to the batcher to be verified in Aligned. +/// /// # Arguments -/// * `chain` - The chain on which the verification will be done. +/// * `network` - The network on which the verification will be done. /// * `verification_data` - The verification data of the proof. /// * `max_fee` - The maximum fee that the submitter is willing to pay for the verification. /// * `wallet` - The wallet used to sign the proof. /// * `nonce` - The nonce of the submitter address. See [`get_nonce_from_ethereum`] or [`get_nonce_from_batcher`]. +/// /// # Returns /// * The aligned verification data obtained when submitting the proof. +/// /// # Errors /// * `MissingRequiredParameter` if the verification data vector is empty. /// * `ProtocolVersionMismatch` if the version of the SDK is lower than the expected one. @@ -388,6 +425,7 @@ pub async fn submit_and_wait_verification( /// * `ProofTooLarge` if the proof is too large. /// * `InsufficientBalance` if the sender balance is insufficient or unlocked /// * `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. +/// * `ProofReplaced` if the proof has been replaced. /// * `GenericError` if the error doesn't match any of the previous ones. pub async fn submit( network: Network, @@ -411,13 +449,15 @@ pub async fn submit( } /// Checks if the proof has been verified with Aligned and is included in the batch. +/// /// # Arguments /// * `aligned_verification_data` - The aligned verification data obtained when submitting the proofs. -/// * `chain` - The chain on which the verification will be done. +/// * `network` - The network on which the verification will be done. /// * `eth_rpc_url` - The URL of the Ethereum RPC node. -/// * `payment_service_addr` - The address of the payment service. +/// /// # Returns /// * A boolean indicating whether the proof was verified on-chain and is included in the batch. +/// /// # Errors /// * `EthereumProviderError` if there is an error in the connection with the RPC provider. /// * `EthereumCallError` if there is an error in the Ethereum call. @@ -452,9 +492,7 @@ async fn _is_proof_verified( .flatten() .collect(); - let verification_data_comm = aligned_verification_data - .verification_data_commitment - .clone(); + let verification_data_comm = &aligned_verification_data.verification_data_commitment; let service_manager = aligned_service_manager(eth_rpc_provider, contract_address).await?; @@ -477,11 +515,14 @@ async fn _is_proof_verified( } /// Returns the commitment for the verification key, taking into account the corresponding proving system. +/// /// # Arguments /// * `verification_key_bytes` - The serialized contents of the verification key. /// * `proving_system` - The corresponding proving system ID. +/// /// # Returns /// * The commitment. +/// /// # Errors /// * None. pub fn get_vk_commitment( @@ -496,14 +537,18 @@ pub fn get_vk_commitment( } /// Returns the next nonce for a given address from the batcher. +/// /// You should prefer this method instead of [`get_nonce_from_ethereum`] if you have recently sent proofs, /// as the batcher proofs might not yet be on ethereum, -/// producing an out-of-sync nonce with the payment service contract on ethereum +/// producing an out-of-sync nonce with the payment service contract on ethereum. +/// /// # Arguments -/// * `address` - The user address for which the nonce will be retrieved. /// * `network` - The network from which the nonce will be retrieved. +/// * `address` - The user address for which the nonce will be retrieved. +/// /// # Returns /// * The next nonce of the proof submitter account. +/// /// # Errors /// * `EthRpcError` if the batcher has an error in the Ethereum call when retrieving the nonce if not already cached. pub async fn get_nonce_from_batcher( @@ -561,6 +606,9 @@ pub async fn get_nonce_from_batcher( Ok(GetNonceResponseMessage::Nonce(nonce)) => Ok(nonce), Ok(GetNonceResponseMessage::EthRpcError(e)) => Err(GetNonceError::EthRpcError(e)), Ok(GetNonceResponseMessage::InvalidRequest(e)) => Err(GetNonceError::InvalidRequest(e)), + Ok(GetNonceResponseMessage::ServerBusy) => Err(GetNonceError::GenericError( + "Server is busy processing requests, please retry".to_string(), + )), Err(_) => Err(GetNonceError::SerializationError( "Failed to deserialize batcher message".to_string(), )), @@ -569,11 +617,15 @@ pub async fn get_nonce_from_batcher( /// Returns the next nonce for a given address in Ethereum from aligned payment service contract. /// Note that it might be out of sync if you recently sent proofs. For that see [`get_nonce_from_batcher`] +/// /// # Arguments /// * `eth_rpc_url` - The URL of the Ethereum RPC node. -/// * `address` - The user address for which the nonce will be retrieved. +/// * `submitter_addr` - The user address for which the nonce will be retrieved. +/// * `network` - The network from which the nonce will be retrieved. +/// /// # Returns /// * The next nonce of the proof submitter account from ethereum. +/// /// # Errors /// * `EthRpcError` if the batcher has an error in the Ethereum call when retrieving the nonce if not already cached. pub async fn get_nonce_from_ethereum( @@ -599,11 +651,95 @@ pub async fn get_nonce_from_ethereum( } } +/// Retrieves the `max_fee` of the proof with the highest nonce in the batcher queue for a given address. +/// +/// This value represents the maximum fee limit that can be used when submitting the next proof. +/// To increase the fee limit for a new proof, you must first bump the fee of the previous proofs, +/// and continue doing so recursively until you reach the proof with the highest nonce (this one). +/// +/// Read more here: https://docs.alignedlayer.com/architecture/1_proof_verification_layer/1_batcher#max-fee-priority-queue +/// +/// # Arguments +/// * `network` - The network from which to retrieve the last `max_fee`. +/// * `address` - The user address whose last `max_fee` will be retrieved. +/// +/// # Returns +/// * `Ok(U256)` - The `max_fee` of the proof with the highest nonce for the given user. +/// * `Ok(U256::MAX)` - If the user has no proofs in the queue. +pub async fn get_last_max_fee( + network: Network, + address: Address, +) -> Result { + let (ws_stream, _) = connect_async(network.get_batcher_url()) + .await + .map_err(|_| { + GetLastMaxFeeError::ConnectionFailed("Ws connection to batcher failed".to_string()) + })?; + + debug!("WebSocket handshake has been successfully completed"); + let (mut ws_write, mut ws_read) = ws_stream.split(); + check_protocol_version(&mut ws_read) + .map_err(|e| match e { + errors::SubmitError::ProtocolVersionMismatch { current, expected } => { + GetLastMaxFeeError::ProtocolMismatch { current, expected } + } + _ => GetLastMaxFeeError::UnexpectedResponse( + "Unexpected response, expected protocol version".to_string(), + ), + }) + .await?; + + let msg = ClientMessage::GetLastMaxFee(address); + + let msg_bin = cbor_serialize(&msg).map_err(|_| { + GetLastMaxFeeError::SerializationError("Failed to serialize msg".to_string()) + })?; + ws_write + .send(Message::Binary(msg_bin.clone())) + .await + .map_err(|_| { + GetLastMaxFeeError::ConnectionFailed( + "Ws connection failed to send message to batcher".to_string(), + ) + })?; + + let mut response_stream: ResponseStream = + ws_read.try_filter(|msg| futures_util::future::ready(msg.is_binary())); + + let msg = match response_stream.next().await { + Some(Ok(msg)) => msg, + _ => { + return Err(GetLastMaxFeeError::ConnectionFailed( + "Connection was closed without close message before receiving all messages" + .to_string(), + )); + } + }; + + let _ = ws_write.close().await; + + match cbor_deserialize(msg.into_data().as_slice()) { + Ok(GetLastMaxFeeResponseMessage::LastMaxFee(last_max_fee)) => Ok(last_max_fee), + Ok(GetLastMaxFeeResponseMessage::InvalidRequest(e)) => { + Err(GetLastMaxFeeError::InvalidRequest(e)) + } + Ok(GetLastMaxFeeResponseMessage::ServerBusy) => Err(GetLastMaxFeeError::GenericError( + "Server is busy processing requests, please retry".to_string(), + )), + Err(_) => Err(GetLastMaxFeeError::SerializationError( + "Failed to deserialize batcher message".to_string(), + )), + } +} + /// Returns the chain ID of the Ethereum network. +/// /// # Arguments /// * `eth_rpc_url` - The URL of the Ethereum RPC node. +/// /// # Returns /// * The chain ID of the Ethereum network. +/// /// # Errors /// * `EthereumProviderError` if there is an error in the connection with the RPC provider. /// * `EthereumCallError` if there is an error in the Ethereum call. @@ -619,13 +755,16 @@ pub async fn get_chain_id(eth_rpc_url: &str) -> Result, LocalWallet>, + network: Network, +) -> Result { + let payment_service_address = network.get_batcher_payment_service_address(); + let payment_service = + BatcherPaymentServiceWithSigner::new(payment_service_address, signer.clone().into()); + + let receipt = payment_service + .unlock() + .send() + .await + .map_err(|e| PaymentError::SendError(e.to_string()))? + .await + .map_err(|e| PaymentError::SubmitError(e.to_string()))?; + + match receipt { + Some(hash) => Ok(hash), + None => Err(PaymentError::SubmitError("".into())), + } +} + +/// Locks the balance of a user in the Aligned payment service. +/// +/// This function locks the user's balance, preventing it from being withdrawn. +/// Locked balances can be used for proof verification payments but cannot be withdrawn +/// until they are unlocked using [`unlock_balance_in_aligned`] and the unlock period expires. +/// +/// # Arguments +/// * `signer` - The signer middleware containing the user's wallet and provider. +/// * `network` - The network on which the lock operation will be performed. +/// +/// # Returns +/// * The transaction receipt of the lock operation. +/// +/// # Errors +/// * `SendError` if there is an error sending the transaction. +/// * `SubmitError` if there is an error submitting the transaction. +pub async fn lock_balance_in_aligned( + signer: &SignerMiddleware, LocalWallet>, + network: Network, +) -> Result { + let payment_service_address = network.get_batcher_payment_service_address(); + let payment_service = + BatcherPaymentServiceWithSigner::new(payment_service_address, signer.clone().into()); + + let receipt = payment_service + .lock() + .send() + .await + .map_err(|e| PaymentError::SendError(e.to_string()))? + .await + .map_err(|e| PaymentError::SubmitError(e.to_string()))?; + + match receipt { + Some(hash) => Ok(hash), + None => Err(PaymentError::SubmitError("".into())), + } +} + +/// Returns the timestamp when a user's balance will be unlocked and available for withdrawal. +/// +/// After calling [`unlock_balance_in_aligned`], users must wait for the lock period +/// before they can withdraw their funds using [`withdraw_balance_from_aligned`]. +/// +/// # Arguments +/// * `user` - The address of the user to check the unlock time for. +/// * `eth_rpc_url` - The URL of the Ethereum RPC node. +/// * `network` - The network on which to check the unlock time. +/// +/// # Returns +/// * The timestamp when the user's balance will be unlocked (as u64). +/// +/// # Errors +/// * `EthereumProviderError` if there is an error in the connection with the RPC provider. +/// * `EthereumCallError` if there is an error in the Ethereum call. +pub async fn get_unlock_block_time( + user: Address, + eth_rpc_url: &str, + network: Network, +) -> Result { + let eth_rpc_provider = Provider::::try_from(eth_rpc_url) + .map_err(|e| errors::BalanceError::EthereumProviderError(e.to_string()))?; + + let payment_service_address = network.get_batcher_payment_service_address(); + + match batcher_payment_service(eth_rpc_provider, payment_service_address).await { + Ok(batcher_payment_service) => { + let call = batcher_payment_service.user_unlock_block(user); + + let result = call + .call() + .await + .map_err(|e| errors::BalanceError::EthereumCallError(e.to_string()))?; + + Ok(result.as_u64()) + } + Err(e) => Err(errors::BalanceError::EthereumCallError(e.to_string())), + } +} + +/// Withdraws a specified amount from the user's balance in the Aligned payment service. +/// +/// This function can only be called after the balance has been unlocked using [`unlock_balance_in_aligned`] +/// and the lock period has expired. Use [`get_unlock_block_time`] to check when the withdrawal becomes available. +/// +/// # Arguments +/// * `signer` - The signer middleware containing the user's wallet and provider. +/// * `network` - The network on which the withdrawal will be performed. +/// * `amount` - The amount to withdraw from the user's balance. +/// +/// # Returns +/// * The transaction receipt of the withdrawal operation. +/// +/// # Errors +/// * `SendError` if there is an error sending the transaction. +/// * `SubmitError` if there is an error submitting the transaction. +pub async fn withdraw_balance_from_aligned( + signer: &SignerMiddleware, LocalWallet>, + network: Network, + amount: U256, +) -> Result { + let payment_service_address = network.get_batcher_payment_service_address(); + let payment_service = + BatcherPaymentServiceWithSigner::new(payment_service_address, signer.clone().into()); + + let receipt = payment_service + .withdraw(amount) + .send() + .await + .map_err(|e| PaymentError::SendError(e.to_string()))? + .await + .map_err(|e| PaymentError::SubmitError(e.to_string()))?; + + match receipt { + Some(hash) => Ok(hash), + None => Err(PaymentError::SubmitError("".into())), + } +} + /// Saves AlignedVerificationData in a file. +/// /// # Arguments /// * `batch_inclusion_data_directory_path` - The path of the directory where the data will be saved. /// * `aligned_verification_data` - The aligned verification data to be saved. +/// /// # Returns /// * Ok if the data is saved successfully. +/// /// # Errors /// * `FileError` if there is an error writing the data to the file. pub fn save_response( @@ -773,15 +1074,15 @@ fn save_response_json( #[cfg(test)] mod test { //Public constants for convenience - pub const HOLESKY_PUBLIC_RPC_URL: &str = "https://ethereum-holesky-rpc.publicnode.com"; + pub const HOODI_PUBLIC_RPC_URL: &str = "https://ethereum-hoodi-rpc.publicnode.com"; use super::*; #[tokio::test] async fn computed_max_fee_for_larger_batch_is_smaller() { - let small_fee = calculate_fee_per_proof_for_batch_of_size(HOLESKY_PUBLIC_RPC_URL, 5) + let small_fee = estimate_fee_per_proof_with_rpc(5, HOODI_PUBLIC_RPC_URL) .await .unwrap(); - let large_fee = calculate_fee_per_proof_for_batch_of_size(HOLESKY_PUBLIC_RPC_URL, 2) + let large_fee = estimate_fee_per_proof_with_rpc(2, HOODI_PUBLIC_RPC_URL) .await .unwrap(); @@ -790,10 +1091,10 @@ mod test { #[tokio::test] async fn computed_max_fee_for_more_proofs_larger_than_for_less_proofs() { - let small_fee = calculate_fee_per_proof_for_batch_of_size(HOLESKY_PUBLIC_RPC_URL, 20) + let small_fee = estimate_fee_per_proof_with_rpc(20, HOODI_PUBLIC_RPC_URL) .await .unwrap(); - let large_fee = calculate_fee_per_proof_for_batch_of_size(HOLESKY_PUBLIC_RPC_URL, 10) + let large_fee = estimate_fee_per_proof_with_rpc(10, HOODI_PUBLIC_RPC_URL) .await .unwrap(); @@ -802,13 +1103,13 @@ mod test { #[tokio::test] async fn estimate_fee_are_larger_than_one_another() { - let min_fee = estimate_fee(HOLESKY_PUBLIC_RPC_URL, FeeEstimationType::Custom(100)) + let min_fee = estimate_fee(HOODI_PUBLIC_RPC_URL, FeeEstimationType::Custom(100)) .await .unwrap(); - let default_fee = estimate_fee(HOLESKY_PUBLIC_RPC_URL, FeeEstimationType::Default) + let default_fee = estimate_fee(HOODI_PUBLIC_RPC_URL, FeeEstimationType::Default) .await .unwrap(); - let instant_fee = estimate_fee(HOLESKY_PUBLIC_RPC_URL, FeeEstimationType::Instant) + let instant_fee = estimate_fee(HOODI_PUBLIC_RPC_URL, FeeEstimationType::Instant) .await .unwrap(); diff --git a/batcher/aligned-sdk/test_files/groth16_bn254/plonk.proof b/crates/sdk/test_files/groth16_bn254/plonk.proof similarity index 100% rename from batcher/aligned-sdk/test_files/groth16_bn254/plonk.proof rename to crates/sdk/test_files/groth16_bn254/plonk.proof diff --git a/batcher/aligned-sdk/test_files/groth16_bn254/plonk.vk b/crates/sdk/test_files/groth16_bn254/plonk.vk similarity index 100% rename from batcher/aligned-sdk/test_files/groth16_bn254/plonk.vk rename to crates/sdk/test_files/groth16_bn254/plonk.vk diff --git a/batcher/aligned-sdk/test_files/groth16_bn254/plonk_pub_input.pub b/crates/sdk/test_files/groth16_bn254/plonk_pub_input.pub similarity index 100% rename from batcher/aligned-sdk/test_files/groth16_bn254/plonk_pub_input.pub rename to crates/sdk/test_files/groth16_bn254/plonk_pub_input.pub diff --git a/batcher/aligned-sdk/test_files/sp1/sp1_fibonacci.elf b/crates/sdk/test_files/sp1/sp1_fibonacci.elf similarity index 100% rename from batcher/aligned-sdk/test_files/sp1/sp1_fibonacci.elf rename to crates/sdk/test_files/sp1/sp1_fibonacci.elf diff --git a/batcher/aligned-sdk/test_files/sp1/sp1_fibonacci.proof b/crates/sdk/test_files/sp1/sp1_fibonacci.proof similarity index 100% rename from batcher/aligned-sdk/test_files/sp1/sp1_fibonacci.proof rename to crates/sdk/test_files/sp1/sp1_fibonacci.proof diff --git a/batcher/aligned-task-sender/Cargo.toml b/crates/task-sender/Cargo.toml similarity index 94% rename from batcher/aligned-task-sender/Cargo.toml rename to crates/task-sender/Cargo.toml index 94f08fb5ef..50d7099e2c 100644 --- a/batcher/aligned-task-sender/Cargo.toml +++ b/crates/task-sender/Cargo.toml @@ -27,6 +27,6 @@ log = "0.4.21" env_logger = "0.11.3" clap = { version = "4.5.4", features = ["derive"] } ethers = { version = "2.0", features = ["ws", "rustls", "eip712"] } -aligned-sdk = { path = "../aligned-sdk" } +aligned-sdk = { path = "../sdk" } rpassword = "7.3.1" sha3 = { version = "0.10.8" } diff --git a/batcher/aligned-task-sender/README.md b/crates/task-sender/README.md similarity index 56% rename from batcher/aligned-task-sender/README.md rename to crates/task-sender/README.md index c73d454b1e..d62378728b 100644 --- a/batcher/aligned-task-sender/README.md +++ b/crates/task-sender/README.md @@ -1,4 +1,5 @@ # Task Sender + This CLI is made to stress-test the network. It has the following commands: @@ -8,6 +9,7 @@ It has the following commands: This command is to generate N Groth16 proofs. To run it, you can: + ```bash cargo run --release -- generate-proofs \ --number-of-proofs --proof-type groth16 \ @@ -15,14 +17,17 @@ cargo run --release -- generate-proofs \ ``` We also have a make target: + ```bash NUMBER_OF_PROOFS=15 make task_sender_generate_groth16_proofs ``` + ## GenerateAndFundWallets This command is to generate N wallets, and fund them in the BatcherPaymentService. To run it, you can: + ```bash cargo run --release -- generate-and-fund-wallets \ --eth-rpc-url \ @@ -35,17 +40,20 @@ cargo run --release -- generate-and-fund-wallets \ ``` ### In Testnet + ```bash NUM_WALLETS= make task_sender_generate_and_fund_wallets_holesky_stage ``` ### In Devnet: Run anvil with more prefunded accounts, using the following make target: + ```bash -make anvil_start_with_block_time_with_more_prefunded +make anvil_start_with_more_prefunded_accounts ``` Then run the following make target, with `NUM_WALLETS` being the amount of wallets you want to deposit funds to aligned payment service, up to 1000. + ```bash NUM_WALLETS= make task_sender_generate_and_fund_wallets_devnet ``` @@ -56,20 +64,55 @@ This command sends `BURST_SIZE` proofs from each private key in `PATH_TO_PRIVATE To vary the amount of senders, it is recommended to have a backup with all private keys, and add/remove keys from the file being used. -To run it, you can: +Note: The `--random-address` flag is optional and will use the address a salt to avoid the repetitions of batches. + +### RISC Zero Proofs + ```bash cargo run --release -- send-infinite-proofs \ - --burst-size --burst-time-secs \ - --eth-rpc-url \ - --network \ - --proofs-dirpath $(PWD)/scripts/test_files/task_sender/proofs \ - --private-keys-filepath + --private-keys-filepath \ + --random-address \ + --burst-size \ + --burst-time-secs \ + --network \ + risc0 \ + --proof-path ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof \ + --bin-path ./scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ + --pub-path ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub +``` + +### Gnark Groth16 Proofs + +```bash +cargo run --release -- send-infinite-proofs \ + --private-keys-filepath \ + --random-address \ + --burst-size \ + --burst-time-secs \ + --network \ + gnark-groth16 --proofs-dir ./scripts/test_files/gnark_groth16_bn254_script +``` + +### SP1 Proofs + +```bash +cargo run --release --manifest-path ./crates/task-sender/Cargo.toml -- send-infinite-proofs \ + --private-keys-filepath \ + --burst-size \ + --burst-time-secs \ + --random-address \ + sp1 \ + --proof-path ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \ + --elf-path ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \ + --pub-path ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub ``` -We also have the following related make targets +We also have the following related make targets: + ```bash BURST_SIZE= BURST_TIME_SECS= make task_sender_send_infinite_proofs_devnet ``` + ```bash BURST_SIZE= BURST_TIME_SECS= make task_sender_send_infinite_proofs_holesky_stage ``` @@ -79,15 +122,18 @@ BURST_SIZE= BURST_TIME_SECS= make task_sender_send_infinite_proofs_holesky This command enables and hangs N connections with the Batcher. To run it, you can: -``` -cargo run --release -- test-connections \ + +```bash +cargo run --release --manifest-path ./crates/task-sender/Cargo.toml -- test-connections \ --num-senders ``` We also have the following related make targets: + ```bash NUM_SENDERS= make task_sender_test_connections_devnet ``` + ```bash NUM_SENDERS= make task_sender_test_connections_holesky_stage ``` diff --git a/batcher/aligned/rust-toolchain b/crates/task-sender/rust-toolchain similarity index 63% rename from batcher/aligned/rust-toolchain rename to crates/task-sender/rust-toolchain index 989860f406..9397b95266 100644 --- a/batcher/aligned/rust-toolchain +++ b/crates/task-sender/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2024-04-17" +channel = "stable" components = ["llvm-tools", "rustc-dev"] diff --git a/batcher/aligned-task-sender/src/commands.rs b/crates/task-sender/src/commands.rs similarity index 56% rename from batcher/aligned-task-sender/src/commands.rs rename to crates/task-sender/src/commands.rs index 6a163c1910..d03b9aa02a 100644 --- a/batcher/aligned-task-sender/src/commands.rs +++ b/crates/task-sender/src/commands.rs @@ -1,5 +1,7 @@ -use aligned_sdk::core::types::{Network, ProvingSystemId, VerificationData}; -use aligned_sdk::sdk::{deposit_to_aligned, get_nonce_from_batcher, submit_multiple}; +use aligned_sdk::common::types::{Network, ProvingSystemId, VerificationData}; +use aligned_sdk::verification_layer::{ + deposit_to_aligned, get_nonce_from_batcher, submit_multiple, +}; use ethers::prelude::*; use ethers::utils::parse_ether; use k256::ecdsa::SigningKey; @@ -17,8 +19,8 @@ use tokio::join; use tokio_tungstenite::connect_async; use crate::structs::{ - GenerateAndFundWalletsArgs, GenerateProofsArgs, ProofType, SendInfiniteProofsArgs, - TestConnectionsArgs, + GenerateAndFundWalletsArgs, GenerateProofsArgs, InfiniteProofType, ProofType, + SendInfiniteProofsArgs, TestConnectionsArgs, }; const GROTH_16_PROOF_GENERATOR_FILE_PATH: &str = @@ -78,7 +80,7 @@ pub async fn generate_and_fund_wallets(args: GenerateAndFundWalletsArgs) { let file = match File::open(&args.private_keys_filepath) { Ok(f) => f, Err(err) => { - error!("Could not open private keys file: {}", err.to_string()); + error!("Could not open private keys file: {}", err); return; } }; @@ -136,7 +138,7 @@ pub async fn generate_and_fund_wallets(args: GenerateAndFundWalletsArgs) { let mut file = match file { Ok(f) => f, Err(err) => { - error!("Could not open private keys file: {}", err.to_string()); + error!("Could not open private keys file: {}", err); return; } }; @@ -171,12 +173,12 @@ pub async fn generate_and_fund_wallets(args: GenerateAndFundWalletsArgs) { let pending_transaction = match signer.send_transaction(tx, None).await { Ok(tx) => tx, Err(err) => { - error!("Could not fund wallet {}", err.to_string()); + error!("Could not fund wallet {}", err); return; } }; if let Err(err) = pending_transaction.await { - error!("Could not fund wallet {}", err.to_string()); + error!("Could not fund wallet {}", err); } info!("Wallet {} funded", i); @@ -206,7 +208,7 @@ pub async fn generate_and_fund_wallets(args: GenerateAndFundWalletsArgs) { let secret_key_hex = ethers::utils::hex::encode(signer_bytes); if let Err(err) = writeln!(file, "{}", secret_key_hex) { - error!("Could not store private key: {}", err.to_string()); + error!("Could not store private key: {}", err); } else { info!("Private key {} stored", i); } @@ -251,84 +253,60 @@ struct Sender { wallet: Wallet, } -pub async fn send_infinite_proofs(args: SendInfiniteProofsArgs) { - if matches!(args.network.clone().into(), Network::Holesky) { - error!("Network not supported this infinite proof sender"); - return; - } - - info!("Loading wallets"); - let mut senders = vec![]; - let Ok(eth_rpc_provider) = Provider::::try_from(args.eth_rpc_url.clone()) else { - error!("Could not connect to eth rpc"); - return; - }; - let Ok(chain_id) = eth_rpc_provider.get_chainid().await else { - error!("Could not get chain id"); - return; - }; +async fn load_senders_from_file( + eth_rpc_url: &str, + private_keys_filepath: &str, +) -> Result, String> { + let eth_rpc_provider = Provider::::try_from(eth_rpc_url) + .map_err(|_| "Could not connect to eth rpc".to_string())?; + let chain_id = eth_rpc_provider + .get_chainid() + .await + .map_err(|_| "Could not get chain id".to_string())?; - let file = match File::open(&args.private_keys_filepath) { - Ok(file) => file, - Err(err) => { - error!("Could not open private keys file: {}", err.to_string()); - return; - } - }; + let file = File::open(private_keys_filepath) + .map_err(|err| format!("Could not open private keys file: {}", err))?; let reader = BufReader::new(file); + let mut senders = vec![]; - // now here we need to load the senders from the provided files for line in reader.lines() { - let private_key_str = match line { - Ok(line) => line, - Err(err) => { - error!( - "Could not read line from private keys file: {}", - err.to_string() - ); - return; - } - }; - let wallet = Wallet::from_str(private_key_str.trim()).expect("Invalid private key"); - let wallet = wallet.with_chain_id(chain_id.as_u64()); + let private_key_str = + line.map_err(|err| format!("Could not read line from private keys file: {}", err))?; + let wallet = Wallet::from_str(private_key_str.trim()) + .map_err(|_| "Invalid private key".to_string())? + .with_chain_id(chain_id.as_u64()); let sender = Sender { wallet }; - - // info!("Wallet {} loaded", i); senders.push(sender); } if senders.is_empty() { - error!("No wallets in file"); - return; - } - info!("All wallets loaded"); - - info!("Loading proofs verification data"); - let verification_data = - get_verification_data_from_proofs_folder(args.proofs_dir, senders[0].wallet.address()); - if verification_data.is_empty() { - error!("Verification data empty, not continuing"); - return; + return Err("No wallets in file".to_string()); } - info!("Proofs loaded!"); - let max_fee = U256::from_dec_str(&args.max_fee).expect("Invalid max fee"); + Ok(senders) +} +async fn run_infinite_proof_sender( + senders: Vec, + verification_data: Vec, + network: Network, + burst_size: usize, + burst_time_secs: u64, + max_fee: U256, + random_address: bool, +) { let mut handles = vec![]; - let network: Network = args.network.into(); - info!("Starting senders!"); + for (i, sender) in senders.iter().enumerate() { let wallet = sender.wallet.clone(); let verification_data = verification_data.clone(); - // this is necessary because of the move let network_clone = network.clone(); - // a thread to send tasks from each loaded wallet: let handle = tokio::spawn(async move { loop { let n = network_clone.clone(); - let mut result = Vec::with_capacity(args.burst_size); + let mut result = Vec::with_capacity(burst_size); let nonce = get_nonce_from_batcher(n.clone(), wallet.address()) .await .inspect_err(|e| { @@ -339,20 +317,29 @@ pub async fn send_infinite_proofs(args: SendInfiniteProofsArgs) { ) }) .unwrap(); - while result.len() < args.burst_size { + while result.len() < burst_size { let samples = verification_data - .choose_multiple(&mut thread_rng(), args.burst_size - result.len()); - result.extend(samples.cloned()); + .choose_multiple(&mut thread_rng(), burst_size - result.len()); + for mut sample in samples.cloned() { + // Randomize proof generator address if requested + if random_address { + sample.proof_generator_addr = Address::random(); + } else if sample.proof_generator_addr == Address::zero() { + // If it was set to zero (template), use wallet address + sample.proof_generator_addr = wallet.address(); + } + result.push(sample); + } } let verification_data_to_send = result; info!( "Sending {:?} Proofs to Aligned Batcher on {:?} from sender {}, nonce: {}, address: {:?}", - args.burst_size, n.clone(), i, nonce, wallet.address(), + burst_size, n, i, nonce, wallet.address(), ); let aligned_verification_data = submit_multiple( - n.clone(), + n, &verification_data_to_send.clone(), max_fee, wallet.clone(), @@ -375,7 +362,7 @@ pub async fn send_infinite_proofs(args: SendInfiniteProofsArgs) { } info!("All responses received for sender {}", i); - tokio::time::sleep(Duration::from_secs(args.burst_time_secs)).await; + tokio::time::sleep(Duration::from_secs(burst_time_secs)).await; } }); @@ -387,65 +374,233 @@ pub async fn send_infinite_proofs(args: SendInfiniteProofsArgs) { } } +pub async fn send_infinite_proofs(args: SendInfiniteProofsArgs) { + if matches!(args.network.clone().into(), Network::Holesky) { + error!("Network not supported this infinite proof sender"); + return; + } + + // Load wallets using shared function + info!("Loading wallets"); + let senders = match load_senders_from_file(&args.eth_rpc_url, &args.private_keys_filepath).await + { + Ok(senders) => senders, + Err(err) => { + error!("{}", err); + return; + } + }; + info!("All wallets loaded"); + + // Load verification data based on proof type + let verification_data = match &args.proof_type { + InfiniteProofType::GnarkGroth16 { proofs_dir } => { + info!("Loading Groth16 proofs from directory structure"); + let data = get_verification_data_from_proofs_folder( + proofs_dir.clone(), + senders[0].wallet.address(), + ); + if data.is_empty() { + error!("Verification data empty, not continuing"); + return; + } + data + } + InfiniteProofType::Risc0 { + proof_path, + bin_path, + pub_path, + } => { + info!("Loading RISC Zero proof files"); + match load_risc0_verification_data(proof_path, bin_path, pub_path) { + Ok(data) => data, + Err(err) => { + error!("Failed to load RISC Zero files: {}", err); + return; + } + } + } + InfiniteProofType::SP1 { + proof_path, + elf_path, + pub_path, + } => { + info!("Loading SP1 proof files"); + match load_sp1_verification_data(proof_path, elf_path, pub_path) { + Ok(data) => data, + Err(err) => { + error!("Failed to load SP1 files: {}", err); + return; + } + } + } + }; + + info!("Proofs loaded!"); + + let max_fee = U256::from_dec_str(&args.max_fee).expect("Invalid max fee"); + let network: Network = args.network.into(); + + info!("Starting senders!"); + run_infinite_proof_sender( + senders, + verification_data, + network, + args.burst_size, + args.burst_time_secs, + max_fee, + args.random_address, + ) + .await; +} + +fn load_groth16_proof_files( + dir_path: &std::path::Path, + base_name: &str, +) -> Option { + let proof_path = dir_path.join(format!("{}.proof", base_name)); + let public_input_path = dir_path.join(format!("{}.pub", base_name)); + let vk_path = dir_path.join(format!("{}.vk", base_name)); + + let proof = std::fs::read(&proof_path).ok()?; + let public_input = std::fs::read(&public_input_path).ok()?; + let vk = std::fs::read(&vk_path).ok()?; + + Some(VerificationData { + proving_system: ProvingSystemId::GnarkGroth16Bn254, + proof, + pub_input: Some(public_input), + verification_key: Some(vk), + vm_program_code: None, + proof_generator_addr: Address::zero(), // Will be set later + }) +} + +fn load_from_subdirectories(dir_path: &str) -> Vec { + let mut verifications_data = vec![]; + let dir = std::fs::read_dir(dir_path).expect("Directory does not exist"); + + for entry in dir.flatten() { + let proof_folder_dir = entry.path(); + if proof_folder_dir.is_dir() && proof_folder_dir.to_str().unwrap().contains("groth16") { + // Get the first file to determine the base name + if let Some(first_file) = fs::read_dir(&proof_folder_dir) + .ok() + .and_then(|dir| dir.flatten().map(|e| e.path()).find(|path| path.is_file())) + { + if let Some(base_name) = first_file.file_stem().and_then(|s| s.to_str()) { + if let Some(verification_data) = + load_groth16_proof_files(&proof_folder_dir, base_name) + { + verifications_data.push(verification_data); + } + } + } + } + } + + verifications_data +} + +fn load_from_flat_directory(dir_path: &str) -> Vec { + let mut verifications_data = vec![]; + let mut base_names = std::collections::HashSet::new(); + + // Collect all unique base names from .proof files + if let Ok(dir) = std::fs::read_dir(dir_path) { + for entry in dir.flatten() { + let path = entry.path(); + if path.is_file() && path.extension().and_then(|s| s.to_str()) == Some("proof") { + if let Some(base_name) = path.file_stem().and_then(|s| s.to_str()) { + base_names.insert(base_name.to_string()); + } + } + } + } + + // Load verification data for each base name + let dir_path = std::path::Path::new(dir_path); + for base_name in base_names { + if let Some(verification_data) = load_groth16_proof_files(dir_path, &base_name) { + verifications_data.push(verification_data); + } + } + + verifications_data +} + /// Returns the corresponding verification data for the generated proofs directory fn get_verification_data_from_proofs_folder( dir_path: String, default_addr: Address, ) -> Vec { - let mut verifications_data = vec![]; - info!("Reading proofs from {:?}", dir_path); - let dir = std::fs::read_dir(dir_path).expect("Directory does not exists"); - - for proof_folder in dir { - // each proof_folder is a dir called groth16_n - let proof_folder_dir = proof_folder.unwrap().path(); - if proof_folder_dir.is_dir() { - // todo(marcos): this should be improved if we want to support more proofs - // currently we stored the proofs on subdirs with a prefix for the proof type - // and here we check the subdir name and based on build the verification data accordingly - if proof_folder_dir.to_str().unwrap().contains("groth16") { - // Get the first file from the folder - let first_file = fs::read_dir(proof_folder_dir.clone()) - .expect("Can't read proofs directory") - .filter_map(|entry| entry.ok().map(|e| e.path())) - .find(|path| path.is_file()) // Find any valid file - .expect("No valid proof files found"); - - // Extract the base name (file stem) without extension - let base_name = first_file - .file_stem() - .and_then(|s| s.to_str()) - .expect("Failed to extract base name"); - - // Generate the paths for the other files - let proof_path = proof_folder_dir.join(format!("{}.proof", base_name)); - let public_input_path = proof_folder_dir.join(format!("{}.pub", base_name)); - let vk_path = proof_folder_dir.join(format!("{}.vk", base_name)); - - let Ok(proof) = std::fs::read(&proof_path) else { - continue; - }; - let Ok(public_input) = std::fs::read(&public_input_path) else { - continue; - }; - let Ok(vk) = std::fs::read(&vk_path) else { - continue; - }; - - let verification_data = VerificationData { - proving_system: ProvingSystemId::Groth16Bn254, - proof, - pub_input: Some(public_input), - verification_key: Some(vk), - vm_program_code: None, - proof_generator_addr: default_addr, - }; - verifications_data.push(verification_data); - } - } + // Check if we have subdirectories with groth16 in the name + let has_groth16_subdirs = std::fs::read_dir(&dir_path) + .map(|dir| { + dir.flatten().any(|entry| { + entry.path().is_dir() && entry.path().to_str().unwrap().contains("groth16") + }) + }) + .unwrap_or(false); + + let mut verifications_data = if has_groth16_subdirs { + load_from_subdirectories(&dir_path) + } else { + load_from_flat_directory(&dir_path) + }; + + // Set the default address for all verification data + for data in &mut verifications_data { + data.proof_generator_addr = default_addr; } verifications_data } + +fn load_risc0_verification_data( + proof_path: &str, + bin_path: &str, + pub_path: &Option, +) -> Result, std::io::Error> { + let proof = std::fs::read(proof_path)?; + let vm_program = std::fs::read(bin_path)?; + let pub_input = if let Some(pub_path) = pub_path { + std::fs::read(pub_path).ok() + } else { + None + }; + + Ok(vec![VerificationData { + proving_system: ProvingSystemId::Risc0, + proof, + pub_input, + verification_key: None, + vm_program_code: Some(vm_program), + proof_generator_addr: Address::zero(), + }]) +} + +fn load_sp1_verification_data( + proof_path: &str, + elf_path: &str, + pub_path: &Option, +) -> Result, std::io::Error> { + let proof = std::fs::read(proof_path)?; + let vm_program = std::fs::read(elf_path)?; + let pub_input = if let Some(pub_path) = pub_path { + std::fs::read(pub_path).ok() + } else { + None + }; + + Ok(vec![VerificationData { + proving_system: ProvingSystemId::SP1, + proof, + pub_input, + verification_key: None, + vm_program_code: Some(vm_program), + proof_generator_addr: Address::zero(), + }]) +} diff --git a/batcher/aligned-task-sender/src/lib.rs b/crates/task-sender/src/lib.rs similarity index 100% rename from batcher/aligned-task-sender/src/lib.rs rename to crates/task-sender/src/lib.rs diff --git a/batcher/aligned-task-sender/src/main.rs b/crates/task-sender/src/main.rs similarity index 100% rename from batcher/aligned-task-sender/src/main.rs rename to crates/task-sender/src/main.rs diff --git a/batcher/aligned-task-sender/src/structs.rs b/crates/task-sender/src/structs.rs similarity index 81% rename from batcher/aligned-task-sender/src/structs.rs rename to crates/task-sender/src/structs.rs index fdeba460d0..8cb1e17d20 100644 --- a/batcher/aligned-task-sender/src/structs.rs +++ b/crates/task-sender/src/structs.rs @@ -1,4 +1,4 @@ -use aligned_sdk::core::types::Network; +use aligned_sdk::common::types::Network; use clap::Parser; use clap::Subcommand; use clap::ValueEnum; @@ -126,11 +126,50 @@ pub struct SendInfiniteProofsArgs { )] pub private_keys_filepath: String, #[arg( - name = "The generated proofs directory", - long = "proofs-dirpath", - default_value = "devnet" + name = "Use random addresses for proof generator", + long = "random-address", + action = clap::ArgAction::SetTrue )] - pub proofs_dir: String, + pub random_address: bool, + #[clap(subcommand)] + pub proof_type: InfiniteProofType, +} + +#[derive(Parser, Debug)] +pub enum InfiniteProofType { + #[clap(about = "Send infinite Gnark Groth16 proofs from directory")] + GnarkGroth16 { + #[arg( + name = "The generated proofs directory", + long = "proofs-dir", + default_value = "scripts/test_files/task_sender/proofs" + )] + proofs_dir: String, + }, + #[clap(about = "Send infinite RISC Zero proofs from file paths")] + Risc0 { + #[arg(name = "Path to RISC Zero proof file (.proof)", long = "proof-path")] + proof_path: String, + #[arg(name = "Path to RISC Zero binary file (.bin)", long = "bin-path")] + bin_path: String, + #[arg( + name = "Path to RISC Zero public input file (.pub) - optional", + long = "pub-path" + )] + pub_path: Option, + }, + #[clap(about = "Send infinite SP1 proofs from file paths")] + SP1 { + #[arg(name = "Path to SP1 proof file (.proof)", long = "proof-path")] + proof_path: String, + #[arg(name = "Path to SP1 ELF file (.elf)", long = "elf-path")] + elf_path: String, + #[arg( + name = "Path to SP1 public input file (.pub) - optional", + long = "pub-path" + )] + pub_path: Option, + }, } #[derive(Debug, Clone, Copy)] diff --git a/batcher/aligned-task-sender/wallets/devnet b/crates/task-sender/wallets/devnet similarity index 100% rename from batcher/aligned-task-sender/wallets/devnet rename to crates/task-sender/wallets/devnet diff --git a/batcher/aligned-task-sender/wallets/devnet-backup b/crates/task-sender/wallets/devnet-backup similarity index 100% rename from batcher/aligned-task-sender/wallets/devnet-backup rename to crates/task-sender/wallets/devnet-backup diff --git a/batcher/aligned-task-sender/wallets/holesky-stage b/crates/task-sender/wallets/holesky-stage similarity index 100% rename from batcher/aligned-task-sender/wallets/holesky-stage rename to crates/task-sender/wallets/holesky-stage diff --git a/docker-compose.yaml b/docker-compose.yaml index 24237a8569..597677a115 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -7,6 +7,13 @@ services: profiles: - base + localstack2: + extends: + file: storage-docker-compose.yaml + service: localstack2 + profiles: + - base + anvil: image: ghcr.io/yetanotherco/aligned_layer/anvil:latest build: @@ -49,7 +56,7 @@ services: mint-mock-tokens: image: ghcr.io/yetanotherco/aligned_layer/foundry:latest - command: ["sh", "-c", "cast send 09635f643e140090a9a8dcd712ed6285858cebef 'mint(address, uint256)' 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 100000000000000000 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --rpc-url http://anvil:8545 --gas-price $(cast gas-price --rpc-url http://anvil:8545)"] + command: ["sh", "-c", "cast send 09635f643e140090a9a8dcd712ed6285858cebef 'transfer(address recipient, uint256 amount)(bool)' 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 100000000000000000 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --rpc-url http://anvil:8545 --gas-price $(cast gas-price --rpc-url http://anvil:8545)"] build: context: . dockerfile: docker/foundry.Dockerfile @@ -110,6 +117,12 @@ services: AWS_BUCKET_NAME: aligned.storage UPLOAD_ENDPOINT: http://localstack:4566 DOWNLOAD_ENDPOINT: http://localstack:4566/aligned.storage + AWS_SECRET_ACCESS_KEY_SECONDARY: test2 + AWS_REGION_SECONDARY: us-west-1 + AWS_ACCESS_KEY_ID_SECONDARY: test2 + AWS_BUCKET_NAME_SECONDARY: aligned.storage + UPLOAD_ENDPOINT_SECONDARY: http://localstack2:4567 + DOWNLOAD_ENDPOINT_SECONDARY: http://localstack2:4567/aligned.storage.secondary RUST_LOG: info RUST_BACKTRACE: 1 build: diff --git a/docker/README.md b/docker/README.md index 4e7f3c3935..4a903d8a0c 100644 --- a/docker/README.md +++ b/docker/README.md @@ -71,7 +71,7 @@ make docker_batcher_send_plonk_bls12_381_burst ``` ```shell -make docker_batcher_send_infinite_groth16 +make docker_batcher_send_infinite_gnark_groth16 ``` Or you can send all of them together with: diff --git a/docker/aggregator.Dockerfile b/docker/aggregator.Dockerfile index ab31ff6052..4f59667d3a 100644 --- a/docker/aggregator.Dockerfile +++ b/docker/aggregator.Dockerfile @@ -9,7 +9,8 @@ COPY core ./core COPY metrics ./metrics COPY contracts/bindings/ ./contracts/bindings -RUN go get github.com/ethereum/go-ethereum@latest +RUN go get github.com/btcsuite/btcd/btcec/v2@v2.2.0 +RUN go get github.com/ethereum/go-ethereum@v1.14.0 RUN go get github.com/gorilla/websocket@v1.5.1 RUN go build -o ./aligned-layer-aggregator aggregator/cmd/main.go diff --git a/docker/aligned_base.Dockerfile b/docker/aligned_base.Dockerfile index 1fb761357e..1095b8810e 100644 --- a/docker/aligned_base.Dockerfile +++ b/docker/aligned_base.Dockerfile @@ -25,8 +25,8 @@ ENV PATH="/usr/local/go/bin:${PATH}" # Install go deps RUN go install github.com/maoueh/zap-pretty@v0.3.0 -RUN go install github.com/ethereum/go-ethereum/cmd/abigen@latest -RUN go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@latest +RUN go install github.com/ethereum/go-ethereum/cmd/abigen@v1.14.0 +RUN go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@v0.13.0 # Install rust RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y @@ -73,7 +73,7 @@ RUN cargo chef prepare --recipe-path /aligned_layer/operator/mina_account/lib/re FROM chef AS chef_builder -COPY batcher/aligned-sdk /aligned_layer/batcher/aligned-sdk/ +COPY crates/sdk /aligned_layer/crates/sdk/ # build_sp1_linux COPY operator/sp1/ /aligned_layer/operator/sp1/ @@ -112,8 +112,8 @@ ENV TARGET_REL_PATH=release ENV CARGO_NET_GIT_FETCH_WITH_CLI=true COPY operator/ /aligned_layer/operator/ -COPY batcher/ /aligned_layer/batcher/ -COPY --from=chef_builder /aligned_layer/batcher/aligned-sdk /aligned_layer/batcher/aligned-sdk +COPY crates/ /aligned_layer/crates/ +COPY --from=chef_builder /aligned_layer/crates/sdk /aligned_layer/crates/sdk # build_sp1_linux COPY --from=chef_builder /aligned_layer/operator/sp1/lib/target/ /aligned_layer/operator/sp1/lib/target/ diff --git a/docker/batcher.Dockerfile b/docker/batcher.Dockerfile index 5188f866fd..bd2532924a 100644 --- a/docker/batcher.Dockerfile +++ b/docker/batcher.Dockerfile @@ -2,49 +2,48 @@ FROM ghcr.io/yetanotherco/aligned_layer/aligned_base:latest AS base COPY go.mod . COPY go.sum . -COPY batcher/aligned-batcher/gnark/verifier.go /aligned_layer/batcher/aligned-batcher/gnark/verifier.go +COPY crates/batcher/go_verifiers_lib/verifier.go /aligned_layer/crates/batcher/go_verifiers_lib/verifier.go RUN apt update -y && apt install -y gcc -RUN go build -buildmode=c-archive -o libverifier.a /aligned_layer/batcher/aligned-batcher/gnark/verifier.go +RUN go build -buildmode=c-archive -o libverifier.a /aligned_layer/crates/batcher/go_verifiers_lib/verifier.go FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef FROM chef AS planner -COPY batcher/aligned-batcher/Cargo.toml /aligned_layer/batcher/aligned-batcher/Cargo.toml -COPY batcher/aligned-batcher/src/main.rs /aligned_layer/batcher/aligned-batcher/src/main.rs -WORKDIR /aligned_layer/batcher/aligned-batcher/ -RUN cargo chef prepare --recipe-path /aligned_layer/batcher/aligned-batcher/recipe.json +COPY crates/batcher/Cargo.toml /aligned_layer/crates/batcher/Cargo.toml +COPY crates/batcher/src/main.rs /aligned_layer/crates/batcher/src/main.rs +WORKDIR /aligned_layer/crates/batcher/ +RUN cargo chef prepare --recipe-path /aligned_layer/crates/batcher/recipe.json -COPY batcher/aligned/Cargo.toml /aligned_layer/batcher/aligned/Cargo.toml -COPY batcher/aligned/src/main.rs /aligned_layer/batcher/aligned/src/main.rs -WORKDIR /aligned_layer/batcher/aligned/ -RUN cargo chef prepare --recipe-path /aligned_layer/batcher/aligned/recipe.json +COPY crates/cli/Cargo.toml /aligned_layer/crates/cli/Cargo.toml +COPY crates/cli/src/main.rs /aligned_layer/crates/cli/src/main.rs +WORKDIR /aligned_layer/crates/cli/ +RUN cargo chef prepare --recipe-path /aligned_layer/crates/cli/recipe.json FROM chef AS chef_builder -COPY batcher/aligned-sdk/ /aligned_layer/batcher/aligned-sdk/ +COPY crates/sdk/ /aligned_layer/crates/sdk/ +COPY operator/mina/lib/ /aligned_layer/operator/mina/lib/ +COPY operator/mina_account/lib/ /aligned_layer/operator/mina_account/lib/ -COPY operator/mina /aligned_layer/operator/mina -COPY operator/mina_account /aligned_layer/operator/mina_account +COPY --from=planner /aligned_layer/crates/batcher/recipe.json /aligned_layer/crates/batcher/recipe.json +WORKDIR /aligned_layer/crates/batcher +RUN cargo chef cook --release --recipe-path /aligned_layer/crates/batcher/recipe.json -COPY --from=planner /aligned_layer/batcher/aligned-batcher/recipe.json /aligned_layer/batcher/aligned-batcher/recipe.json -WORKDIR /aligned_layer/batcher/aligned-batcher -RUN cargo chef cook --release --recipe-path /aligned_layer/batcher/aligned-batcher/recipe.json - -COPY --from=planner /aligned_layer/batcher/aligned/recipe.json /aligned_layer/batcher/aligned/recipe.json -WORKDIR /aligned_layer/batcher/aligned/ -RUN cargo chef cook --release --recipe-path /aligned_layer/batcher/aligned/recipe.json +COPY --from=planner /aligned_layer/crates/cli/recipe.json /aligned_layer/crates/cli/recipe.json +WORKDIR /aligned_layer/crates/cli/ +RUN cargo chef cook --release --recipe-path /aligned_layer/crates/cli/recipe.json FROM base AS builder COPY . /aligned_layer/ -COPY --from=chef_builder /aligned_layer/batcher/aligned-batcher/target/ /aligned_layer/batcher/aligned-batcher/target/ -WORKDIR /aligned_layer/batcher/aligned-batcher/ -RUN cargo build --manifest-path /aligned_layer/batcher/aligned-batcher/Cargo.toml --release +COPY --from=chef_builder /aligned_layer/crates/batcher/target/ /aligned_layer/crates/batcher/target/ +WORKDIR /aligned_layer/crates/batcher/ +RUN cargo build --manifest-path /aligned_layer/crates/batcher/Cargo.toml --release -COPY --from=chef_builder /aligned_layer/batcher/aligned/target/ /aligned_layer/batcher/aligned/target/ -WORKDIR /aligned_layer/batcher/aligned/ -RUN cargo build --manifest-path /aligned_layer/batcher/aligned/Cargo.toml --release +COPY --from=chef_builder /aligned_layer/crates/cli/target/ /aligned_layer/crates/cli/target/ +WORKDIR /aligned_layer/crates/cli/ +RUN cargo build --manifest-path /aligned_layer/crates/cli/Cargo.toml --release COPY scripts/test_files/gnark_groth16_bn254_infinite_script/ /aligned_layer/scripts/test_files/gnark_groth16_bn254_infinite_script/ WORKDIR /aligned_layer @@ -55,8 +54,8 @@ RUN rm -rf operator/ FROM debian:bookworm-slim AS final COPY --from=builder /aligned_layer /aligned_layer -COPY --from=builder /aligned_layer/batcher/target/release/aligned-batcher /usr/local/bin/ -COPY --from=builder /aligned_layer/batcher/target/release/aligned /usr/local/bin/ +COPY --from=builder /aligned_layer/crates/target/release/aligned-batcher /usr/local/bin/ +COPY --from=builder /aligned_layer/crates/target/release/aligned /usr/local/bin/ COPY --from=builder /aligned_layer/gnark_groth16_bn254_infinite_script /usr/local/bin COPY ./contracts/script ./contracts/script COPY ../scripts/test_files/ ./scripts/test_files diff --git a/docker/eigenlayer-cli.Dockerfile b/docker/eigenlayer-cli.Dockerfile index 3ad0f10337..a7d30921ba 100644 --- a/docker/eigenlayer-cli.Dockerfile +++ b/docker/eigenlayer-cli.Dockerfile @@ -2,4 +2,4 @@ FROM golang:1.22.2-bookworm COPY config-files/ ./config-files -RUN go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@latest +RUN go install github.com/Layr-Labs/eigenlayer-cli/cmd/eigenlayer@v0.13.0 diff --git a/docker/foundry.Dockerfile b/docker/foundry.Dockerfile index 7ca4f3eb43..cd47e2e391 100644 --- a/docker/foundry.Dockerfile +++ b/docker/foundry.Dockerfile @@ -1,6 +1,6 @@ FROM debian:bookworm-slim -ENV FOUNDRY_VERSION=nightly-a428ba6ad8856611339a6319290aade3347d25d9 +ENV FOUNDRY_VERSION=v1.1.0 RUN apt update -y RUN apt upgrade -y diff --git a/docs/0_internal/2_deploy_contracts.md b/docs/0_internal/2_deploy_contracts.md index 70ee8e155e..d50021dab5 100644 --- a/docs/0_internal/2_deploy_contracts.md +++ b/docs/0_internal/2_deploy_contracts.md @@ -17,7 +17,7 @@ Also, you will be able to deploy the Batcher Payment Service contract. - Install foundry ```shell - make install_foundry + make foundry_install foundryup -i nightly-a428ba6ad8856611339a6319290aade3347d25d9 ``` diff --git a/docs/0_internal/ethereum_package.md b/docs/0_internal/ethereum_package.md index f51bdc8f66..173fcc4b8b 100644 --- a/docs/0_internal/ethereum_package.md +++ b/docs/0_internal/ethereum_package.md @@ -34,27 +34,39 @@ make batcher_start_ethereum_package To start the aggregator run: ```bash -make aggregator_start_ethereum_package +make aggregator_start_ethereum_package ENVIRONMENT=devnet ``` To start an operator run: ```bash -make operator_register_start_ethereum_package +make operator_full_registration_and_start_ethereum_package ``` If you want to deploy more operators, you must duplicate the config-operator-1-ethereum-package.yaml and change the private and bls keys and the address. +If operator starting fails due to a failure in operation registration to aligned (not whitelisted), try running the commands separately: + +```bash +make operator_full_registration CONFIG_FILE=config-files/config-operator-1-ethereum-package.yaml ENVIRONMENT=devnet +make operator_start CONFIG_FILE=config-files/config-operator-1-ethereum-package.yaml ENVIRONMENT=devnet +``` + To start Telemetry and the Explorer, run the usual commands: ```bash -make telemetry_full_start -make run_explorer +make telemetry_start_all + +make explorer_build_db +make explorer_start ``` +Note: If you are starting telemetry again and fails, a common failure reason can be forgetting to clean the db running `make telemetry_clean_db`. + To spam transactions install spamoor: + ```bash -make install_spamoor +make spamoor_install ``` and run the following make targets: @@ -69,6 +81,7 @@ make spamoor_send_transactions \\ ``` For Example: + ```bash make spamoor_send_transactions COUNT=1000 TX_CONSUME_GAS=150000 TX_PER_BLOCK=50 NUM_WALLETS=100 TIP_FEE=2 ``` @@ -97,8 +110,8 @@ make spamoor_send_transactions COUNT=1000000000 TX_CONSUME_GAS=150000 TX_PER_BL ``` - Notes: - - A transaction consuming `150000` of gas would be similar to a bridge swap. - - We pass `2` gwei more to the `tipFee` that should be enough if not, you can increase it. + - A transaction consuming `150000` of gas would be similar to a bridge swap. + - We pass `2` gwei more to the `tipFee` that should be enough if not, you can increase it. 3. **Monitor Gas Price Updates:** After a few blocks, the `gasPrice` will adjust. The aligned batcher and aggregator will fetch the updated `gasPrice` and start competing in the mempool with their adjusted bump. 4. **Repeat as Needed:** Re-run the same command with the updated `TIP_FEE` to maintain competition: diff --git a/docs/1_introduction/0_about_aligned.md b/docs/1_introduction/0_about_aligned.md index 0372b24834..831501aedb 100644 --- a/docs/1_introduction/0_about_aligned.md +++ b/docs/1_introduction/0_about_aligned.md @@ -1,76 +1,72 @@ ## What is Aligned? -Aligned is a decentralized network that verifies Zero-Knowledge/validity proofs and posts the results to Ethereum. It is designed to provide high throughput, cheap proof verification with low latency. +Aligned is a vertically integrated stack for building applications on a verifiable internet. Whether it's financial infrastructure or AI systems, we provide the foundation for provable execution with one-click solutions for wallets, rollups, interoperability, and ZK services in a world where trust is no longer a given. + +## Mission + +Aligned is creating the foundation for a trustless, verifiable internet. Our vertically integrated stack empowers developers to build applications across finance, AI, and other sectors with one-click solutions for wallets, rollups, and zero-knowledge services on Ethereum. We’re focused on enabling provable execution in a world where institutional trust is increasingly fragile. + +By providing the tools for trust to be integrated into every layer of application infrastructure, we’re enabling developers to create verifiable systems that can be trusted across a wide range of use cases. Aligned is here to enable a future where trust is not assumed, but proven by design. {% hint style="info" %} If you are unfamiliar with ZK and why this is useful, see [Why ZK and Aligned?](./4_why_zk.md) {% endhint %} -## Mission +## What real value does Aligned bring to the table? -Our mission is to accelerate Ethereum's roadmap and the adoption of verifiable computation by enabling fast and economical verification of ZK and validity proofs. +Aligned is building a full stack of vertically integrated infrastructure designed to make it easier for teams to launch, operate, and scale on Ethereum. -## What real value does Aligned bring to the table? +Aligned suite of products and services includes: -Blockchains are verifiable computers. -We live in a chaotic world where there will be a huge demand for computation that needs to be trusted. +- ZK Verification Layer (offering Proof Verification Layer and Proof Aggregation Service) +- Rollup-as-a-Service (RaaS) Platform +- Meta-Proving Services +- Interoperability Protocol +- Wallet-as-a-Service -Current blockchain models are inefficient: each node must re-execute each transaction or operation, making the weakest and slowest devices the bottleneck. Unlike in Web2, where adding more hardware can increase performance, in these systems, additional hardware primarily enhances reliability rather than speed. Alternative L1s to Ethereum make trade-offs, accepting bigger hardware or changing the consensus to be faster but with fewer security guarantees. In other words, they reduce costs and increase speed at a great expense of lower security guarantees. +![Figure 1: Aligned Suite of Products](../images/aligned_suite_of_products.png) -On the other hand, Zero-knowledge/validity proofs (ZK) provide a new framework where we do not have to make such compromises. The basic premise is that a party can generate a very short proof of a computation, and the nodes can quickly verify that proof instead of re-executing the computation. The computation can be quite large, comprising many different transactions. This enables the delegation of execution off-chain with the same guarantees, leading to increased throughput and lower operational costs. This led to the rollup-centric roadmap of Ethereum, featuring multiple L2s, but at the expense of fragmented liquidity and complex user experience. Many of these problems could be solved by ZK bridges, but they remain expensive, and the go-to-market time is high. +Read more: [The Aligned Roadmap](https://roadmap.alignedlayer.com) -Anyhow, nodes still have to verify those proofs, which can be quite expensive since this is done on-chain: current proof systems can cost between 10 and several hundred dollars (which is strongly dependent on network congestion). +By vertically integrating our stack we can provide the best developer experience and highest performance at the lowest possible cost. -In addition, ZK lets us build other verifiable applications where users do not have to trust the party performing the computation, with impact in areas such as artificial intelligence (AI), the Internet of Things (IoT), and fighting misinformation. This is not clear to most people since proving technologies were not mature enough and verification costs were high. +- Fully open-source—no proprietary code or licenses +- Simplicity and minimalism—easy to maintain +- Modular and flexible—customizable to meet your business needs +- Future-proofed—designed to support emerging technologies -## What limits the development of more complex applications on top of blockchains? +Whether you’re a seasoned crypto builder or an enterprise launching your first blockchain project, Aligned gives you the tools to deploy powerful Ethereum-native infrastructure without compromising on security, performance, or flexibility. -The main limitation for building complex applications on top of blockchains has been that the computation can run only a few milliseconds on chain, and even then, this can be costly. You can't have millions of daily active users using Ethereum or any blockchain at the same time. +As Ethereum continues to be adopted as the financial backend of the internet, we are committed to helping developers and companies tap into its security and global, 24/7 liquidity. -ZK solves this, but due to slow and complex-to-use proving and expensive verification, progress has been limited. -In the case of proving, before the development of general-purpose zero-knowledge virtual machines (zkVMs), -users had to express their computation as arithmetic circuits, -making the developer experience something like coding in assembler, error-prone, and complex. -Moreover, proof systems depended on trusted setups, -adding additional trust guarantees, the need to carry out special ceremonies to initialize parameters, -and delaying go-to-market times. -Besides, -having high verification costs (on the order of 10's to 100's of dollars per proof) -meant that only those projects with a huge capital could afford to build such applications. +## What limits the development of more complex applications on top of blockchains? -## Why didn't anybody do it before? +The main limitation for building complex applications on top of blockchains has been that the computation can run only a few milliseconds on-chain, and even then, this can be costly. You can't have millions of daily active users using Ethereum or any blockchain at the same time. -To build Aligned, we needed several pieces in place. -First, we needed EigenLayer, -which allows building services and applications on top of Ethereum without competing for blockspace. -In our case, we could bootstrap the economic security for a decentralized network of verifiers, -avoiding the limitations of running proof verification on-chain. -Second, proving technology had to improve. -We currently have general-purpose zkVMs (which means we can code in Rust and other high-level languages and prove it), -proof systems are faster, and several improvements and developments are on the way. -This makes writing applications easier (providing a higher demand for proof verification), -and enables faster and simpler proof recursion (for proof compression). +ZK solves this, but due to slow and complex-to-use proving and expensive verification, progress has been limited. In the case of proving, before the development of general-purpose zero-knowledge virtual machines (zkVMs), users had to express their computation as arithmetic circuits, making the developer experience something like coding in assembler, error-prone, and complex. Moreover, proof systems depended on trusted setups, adding additional trust guarantees, the need to carry out special ceremonies to initialize parameters, and delaying go-to-market times. Besides, having high verification costs (on the order of 10's to 100's of dollars per proof) meant that only those projects with a huge capital could afford to build such applications. -## How much can Aligned reduce costs? +## How much can Aligned Aligned’s ZK Verification Layer reduce costs? -Aligned operates using two operation modes: fast and aggregation. The cost reduction depends on throughput, proof system, and mode used. For the least expensive systems, such as Groth16, this can amount to nearly 90%, while STARKs can be nearly 99%. Moreover, Aligned allows the verification of proofs that cannot be currently verified in Ethereum due to cost or size, such as Kimchi or Binius. The verification cost in Aligned is independent of the proof system, giving the choice of the proof system back to developers. +Aligned’s ZK Verification Layer operates using two operation modes: Proof Verification Layer and Proof Aggregation Service. The cost reduction depends on throughput, proof system, and mode used. For the least expensive systems, such as Groth16, this can amount to nearly 90%, while STARKs can be nearly 99%. Moreover, Aligned’s stack allows the verification of proofs that cannot be currently verified in Ethereum due to cost or size, such as Kimchi or Binius. The verification cost using Aligned services is independent of the proof system, giving the choice of the proof system back to developers. -## How does Aligned compare to other solutions? +## How does Aligned’s stack compare to other solutions? -Aligned has created a new category in crypto: ZK verification layer. It is the only solution for now offering fast and aggregation modes while being linked to Ethereum via EigenLayer. The fast mode provides very high throughput (over two orders of magnitude more than Ethereum), low latency, and lower costs than the aggregation mode. The security is provided by restaking, and this mode is well suited for applications with tight limits on latency and costs. The aggregation mode works using the slower proof recursion strategy, also used in rollups to compress proofs. Another key feature is that Aligned is stateless, simplifying the process greatly. +Aligned has created a new category in crypto: ZK verification layer. It is the only solution for now offering Proof Verification and Proof Aggregation modes while being linked to Ethereum via EigenLayer. The Proof Verification Layer provides very high throughput (over two orders of magnitude more than Ethereum), low latency, and lower costs than the Proof Aggregation Layer. The security is provided by restaking, and this mode is well suited for applications with tight limits on latency and costs. The Proof Aggregation Layer works using the slower proof recursion strategy, also used in rollups to compress proofs. Another key feature is that Aligned’s approach is stateless, simplifying the process greatly. Other solutions focus on building a separate L1 for proof verification (which sets them apart from Ethereum and requires bootstrapping the economic security, which can be lowered and subject to volatility, as opposed to that provided by restaking) or focus on the aggregation of proofs from a few proof systems. This last approach adds latency, higher operational costs, and constrains the developer's choice of the proof system. -The following table contains costs estimates for Aligned, assuming a batch size of 20 proofs. +The following table contains cost estimates for Aligned, assuming a batch size of 20 proofs. -| Proof system | Ethereum | Aligned - Fast mode | Aligned - Aggregation | +| Proof system | Ethereum | Aligned's Proof Verification Layer | Aligned's Proof Aggregation Service | | ------------ | ---------- | ------------------- | --------------------- | | Groth16 | 250,000 | 40,000 | TBD | | STARKs | >1,000,000 | 40,000 | TBD | | Kimchi-IPA | ?????? | 40,000 | TBD | | Binius. | ?????? | 40,000 | TBD | -## Why are we building Aligned? +## Why is Aligned building its stack? + +Aligned is building its stack to provide the foundational infrastructure for a trustless, verifiable internet. Aligned’s vertically integrated stack empowers developers to build applications across industries like finance and AI, offering one-click solutions for rollups, wallets, and several zero-knowledge (ZK) services. In recent months, we have witnessed the development and enhancement of general proving virtual machines such as Risc0, Valida, Jolt, and SP1. These innovations allow users to write ordinary code in languages like Rust or C and generate proofs demonstrating the integrity of computations. This evolution is poised to transform application development, provided we have verification networks with high throughput and low cost. This is the core vision of Aligned and the reason we are building it: the future belongs to provable applications. @@ -78,9 +74,9 @@ Currently, proof verification in Ethereum is expensive and throughput is limited Proof technology has been evolving over the last decade, with new arguments, fields, commitments and other tools appearing every day. It is hard to try new ideas if verification costs are high, and there is a considerable go-to-market time, as a consequence of development time of new, gas-optimized smart contracts, or the inclusion of new precompiles to make them affordable. -Aligned provides an alternative to reduce costs and increase throughput significantly. This is achieved by two different modes: **fast mode** and **aggregation mode**. +Aligned’s stack provides an alternative to reduce costs and increase throughput significantly. This is achieved by two different products: Proof Verification Layer and Proof Aggregation Service. -The fast mode works with a subset of Ethereum’s validators via restaking. Validators (also known as Operators) receive proofs, verify them using the verification code written in Rust or any other higher-level language, and then sign messages with BLS signatures. If a two-thirds (2/3) majority agrees, the results are posted in Ethereum. +The Proof Verification Layer works with a subset of Ethereum’s validators via restaking. Validators (also known as Operators) receive proofs, verify them using the verification code written in Rust or any other higher-level language, and then sign messages with BLS signatures. If a two-thirds (2/3) majority agrees, the results are posted in Ethereum. Since Aligned’s operators only need to run the verification code on bare metal, we have several advantages compared to running it on top of the EVM: @@ -89,7 +85,16 @@ Since Aligned’s operators only need to run the verification code on bare metal - Since the gas limit does not constrain us, we can verify proof systems that are too expensive for Ethereum, such as Kimchi or Binius. - Adding new proof systems is straightforward. -Preliminary numbers show that Aligned can verify more than 1000 proofs per second, over two orders of magnitude than the EVM at nominal capacity. Using effective batching techniques, we can split the task creation and verification cost between thousands of proofs. +Preliminary numbers show that Aligned’s Verification Layer can verify more than 1000 proofs per second, over two orders of magnitude more than the EVM at nominal capacity. Using effective batching techniques, we can split the task creation and verification cost between thousands of proofs. + +On the other hand, Aligned’s Proof Aggregation service enables cost-efficient ZK proof verification by combining multiple proofs into one using recursive proof aggregation. It can be used standalone or with our Proof Verification Layer. Ideal for services like rollups that require Ethereum’s full security but can tolerate higher latency. + +To complement these verification capabilities, Aligned’s Meta-proving Services offers an easy interface for accessing centralized and decentralized proving from external providers. Many developers building programs on Aligned with zkVMs will want to delegate proving to different service providers. To address this, we will have a simple SDK that allows developers to code in Rust and easily send their programs for proving to their preferred services. + +Aligned’s stack also provides a one-click solution for wallets and rollups. With Aligned’s Wallet-as-a-service infrastructure, developers can easily generate embedded wallets for users, supporting rollups and mobile integrations. It will leverage the latest account abstraction technology, offering seamless wallet services backed by our robust tech stack. And rollups Aligned's RaaS platform simplifies ZK-rollup deployment, allowing clients to launch L2 chains without needing deep blockchain expertise. It streamlines the process for developers and is also adding support for based rollups, a crucial element of Ethereum’s roadmap. + +As a key component of Aligned’s vision, Aligned’s Interoperability Protocol will offer an intent-based bridge that will be integrated with our RaaS stack. It will leverage based sequencing and enable developers to create native trust-minimized solutions for users and financial institutions to efficiently move liquidity across chains. +With each of these products, we are taking concrete steps toward fulfilling our mission of building a trustless and verifiable internet. By providing developers with the tools to create scalable, efficient, and secure applications, Aligned is tackling the fundamental challenges of trust that have long hindered the potential of blockchain and decentralized technologies. ## Future additions diff --git a/docs/1_introduction/1_try_aligned.md b/docs/1_introduction/1_try_aligned.md index c9d302421d..060d68cf96 100644 --- a/docs/1_introduction/1_try_aligned.md +++ b/docs/1_introduction/1_try_aligned.md @@ -3,26 +3,26 @@ In this tutorial, you will learn how to send your first SP1 proofs to get verified in Aligned in under 3 minutes. {% hint style="warning" %} -This tutorial is for sending proofs on Holesky network. +This tutorial is for sending proofs on Hoodi network. To send proofs on Mainnet, please refer to the [submitting proofs](../3_guides/0_submitting_proofs.md) guide. {% endhint %} ## Quickstart -We will download a previously generated SP1 proof, send it to Aligned for verification, and retrieve the results from Ethereum Holesky testnet. +We will download a previously generated SP1 proof, send it to Aligned for verification, and retrieve the results from Ethereum Hoodi testnet. 1. Download and install Aligned to send proofs in the testnet: ```bash -curl -L https://raw.githubusercontent.com/yetanotherco/aligned_layer/main/batcher/aligned/install_aligned.sh | bash +curl -L https://raw.githubusercontent.com/yetanotherco/aligned_layer/testnet/crates/cli/install_aligned.sh | bash ``` -2. Run the ```source``` command that should appear in the shell +2. Run the `source` command that should appear in the shell 3. Download the example SP1 proof file together with the ELF file of the proved program using: ```bash -curl -L https://raw.githubusercontent.com/yetanotherco/aligned_layer/main/batcher/aligned/get_proof_test_files.sh | bash +curl -L https://raw.githubusercontent.com/yetanotherco/aligned_layer/testnet/crates/cli/get_proof_test_files.sh | bash ``` 4. Send the proof to be verified in Aligned with @@ -31,12 +31,12 @@ curl -L https://raw.githubusercontent.com/yetanotherco/aligned_layer/main/batche rm -rf ~/.aligned/aligned_verification_data/ && aligned submit \ --proving_system SP1 \ ---proof ~/.aligned/test_files/sp1_fibonacci.proof \ ---vm_program ~/.aligned/test_files/sp1_fibonacci.elf \ +--proof ~/.aligned/test_files/sp1_fibonacci_5_0_0.proof \ +--vm_program ~/.aligned/test_files/sp1_fibonacci_5_0_0.elf \ +--public_input ~/.aligned/test_files/sp1_fibonacci_5_0_0.pub \ --aligned_verification_data_path ~/.aligned/aligned_verification_data \ ---batcher_url wss://batcher.alignedlayer.com \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` 5. You should get a response like this: @@ -56,8 +56,8 @@ Use the link in the response to check the status of your transaction in the Alig ```bash aligned verify-proof-onchain \ --aligned-verification-data ~/.aligned/aligned_verification_data/*.cbor \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com \ ---network holesky +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ +--network hoodi ``` This is reading the result of the proof verification in Ethereum. @@ -75,9 +75,10 @@ If the proof wasn't verified, you should get this result: ``` Aligned works in: -- macOS Arm64 (M1 or higher) -- Linux x86 with GLIBC_2.32 or superior (For example, Ubuntu 22.04 or higher) + +- macOS Arm64 (M1 or higher) +- Linux x86 with GLIBC_2.32 or superior (For example, Ubuntu 22.04 or higher) If you don't meet these requirements, you can compile the binaries yourself following the [README](https://github.com/yetanotherco/aligned_layer) -To try Aligned with other proving systems, check [this](../3_guides/0_submitting_proofs.md) guide +To try Aligned with other proving systems, check [this](../3_guides/0_submitting_proofs.md) guide diff --git a/docs/1_introduction/2_use_cases.md b/docs/1_introduction/2_use_cases.md index 89d03a1860..7453c70ba0 100644 --- a/docs/1_introduction/2_use_cases.md +++ b/docs/1_introduction/2_use_cases.md @@ -1,19 +1,147 @@ -# Use cases - -- Soft finality for Rollups and Appchains: Aligned provides fast verification of ZK proofs, which can be used to provide soft finality for rollups or other applications. -- Fast bridging: building ZK bridges requires checking a succinct proof to show that current state of a chain is correct and then users need to show that their account state is correct. Many ZK protocols use hash functions such as Poseidon or Rescue Prime, which do not have Precompiles on Ethereum, making both the verification of the chain's state and account expensive. With Aligned, you can show your account state using another ZK proof, and all proofs can be verified cheaply and with low latency in Aligned. -- New settlement layers (use Aligned + EigenDA) for Rollups and Intent based systems. -- P2P protocols based on SNARKs such as payment systems and social networks. -- Alternative L1s interoperable with Ethereum: similar to fast bridging. -- Verifiable Machine Learning (ML): with general-purpose zkvms we can prove code written in Rust, solving part of the problem of using ML. However, most zkVMs use STARK-based proof systems, which leads to high on-chain costs or expensive wrapping. With Aligned, you can directly verify your proof from the zkVM for much less than Ethereum. -- Cheap verification and interoperability for Identity Protocols. -- ZK Oracles: With ZK oracles we can show that we have a piece of information off-chain and produce a ZK proof doing some computation with that data. Aligned reduces the cost of using those oracles. For more background, see the [following post](https://minaprotocol.com/blog/what-are-zkoracles). -- New credential protocols such as zkTLS based systems: you can create proofs of data shown on your web browser and have the result verified in Ethereum. See the following thread for an [ELI5 on TLS](https://x.com/dabit3/status/1830022029195501799) -- ZK Coprocessor: ZK allows complex computations to be delegated from the blockchain to a coprocessor. This can retrieve information from the blockchain and perform the computations securely in a more efficient way. -- Encrypted Mempools using SNARKs to show the correctness of the encryption. -- Protocols against misinformation and fake news: you can generate proofs that an image or audio comes from a given device, and show that a published image is the result of certain transformations performed on the original image. -- On-chain gaming. - -## Projects built using Aligned - -- The Mina <> Ethereum bridge (in development) uses Aligned's fast mode for ZK proof verification. See the [github repo](https://github.com/lambdaclass/mina_bridge) for more information. +# Use Cases: ZK Verification Layer + +Aligned’s ZK verification layer for Ethereum makes proof verification affordable, fast, and scalable—either via our low-latency [Proof Verification Layer](https://docs.alignedlayer.com/architecture/1_proof_verification_layer) (an EigenLayer AVS) or via our recursive [Proof Aggregation Service](https://docs.alignedlayer.com/architecture/2_aggregation_mode). Use Aligned when you need to verify many proofs, expensive proofs, or proofs that aren’t economical in the EVM, and you still want results settled to Ethereum. + +The ZK verification layer can be useful anytime ZK is used with Ethereum, but some clear use cases are described in this section. + +## ZK-rollups and Ethereum scaling + +Rollups produce ZK proofs of state transitions and need to verify (settle) those results on Ethereum. Verification can cost ZK-rollup operators millions per year, and infrequent verification to save on gas leads to longer exit windows and worse UX. + +### **How Aligned helps:** + +- Offloads verification to a decentralized operator set, reducing per-proof gas by 90–99% and increasing throughput from ~tens of proofs/sec on Ethereum to thousands. +- For full L1 security and no cryptoeconomic trust assumptions, aggregate many rollup proofs into a single recursive proof verified on Ethereum. +- Option to use the Proof Verification Layer or Proof Aggregation Service depending on security and latency needs. + +### **Choose a mode:** + +- **Verification Layer (low latency, high volume):** live on mainnet; ideal for the fastest confirmations and very high proof volumes. Economic security with nearly 3 million restaked ETH (>$12B USD value). +- **Aggregation Service (highest security):** recursively compresses many proofs into one proof verified on L1; great when you can trade latency for full Ethereum security. + +{% hint style="success" %} +Our RaaS makes launching [based ZK-rollups](https://blog.alignedlayer.com/aligned-raas-based-rollups-to-build-the-future-of-ethereum/) (Ethrex stack) possible in one click and is integrated with our ZK verification layer to reduce costs. +{% endhint %} + +## Fast, trust-minimized bridging & interoperability + +Bridges and cross-chain systems verify source chain state/account proofs on the destination chain. We are also developing an intents and ZK-based fast interoperability protocol in-house to take full advantage of the ZK Verification Layer and to complement our RaaS platform. + +### **How Aligned helps:** + +- Verifies non-EVM-friendly proofs (e.g., Kimchi, STARKs) economically and at scale. +- Enables fast exits (soft finality) while optionally posting hard-finality checkpoints via aggregation. + +### **Choose a mode:** + +- **Verification Layer** for quick attestations and user UX. +- **Aggregation Service** for periodic consolidated checkpoints to L1. + +{% hint style="success" %} +The Mina ↔ Ethereum bridge uses Aligned to verify Mina’s Kimchi proofs on Ethereum ([blog post](https://blog.alignedlayer.com/mina-to-ethereum-bridge/)). +{% endhint %} + +## zkTLS & web2-to-web3 data credentials + +Generate proofs about data fetched over TLS (bank account balances, KYC, social graphs) and use them onchain without revealing the raw data. + +### **How Aligned helps:** + +- Turns high-volume zkTLS attestations into a practical UX by keeping verification costs low and parallelizable. +- Lets apps pick latency vs. finality per flow (e.g., instant gating on Verification Layer + periodic L1-final checkpoints via aggregation). + +### **Choose a mode:** + +- **Verification Layer** when users need instant attest-and-act. +- **Aggregation Service** when proofs must be verified directly on Ethereum. + +## Verifiable AI (zkML / LLM inference proofs) + +To make AI verifiable, prove that model inference (or parts of a pipeline) ran correctly, or that an output meets policy constraints—then settle the result to Ethereum for auditability or onchain automation. + +### **How Aligned helps:** + +- zkVM proofs from systems like SP1 and Risc0 are supported today, so you can move from POCs to production-grade verification economics. +- High-volume inference checks (micro-payments, agent marketplaces, model-usage attestations) benefit from the Verification Layer’s low latency; compliance/events can use aggregated L1 proofs. + +### **Choose a mode:** + +- **Verification Layer** for per-inference confirmations and low cost at scale. +- **Aggregation Service** for periodic, L1-final attestations (e.g., job batches, epoch summaries). + +{% hint style="success" %} +See our [blog post](https://blog.alignedlayer.com/the-era-of-ai-needs-ethereum-and-zk/) that expands on why we believe ZK and Ethereum will play a major role in the future of AI. +{% endhint %} + +## Identity & verifiable credentials + +Issue/verify privacy-preserving credentials (DID/VC, age/eligibility proofs, reputation). Governments and enterprises can adopt ZK without forcing users to leak data. + +### **How Aligned helps:** + +- Makes credential verification cheap enough for mainstream UX while keeping Ethereum as the root of trust and avoiding the compromise of verifying proofs on a blockchain with lower security. +- Already powering real identity stacks (e.g. [Sovra’s Digital Trust Stack](https://blog.alignedlayer.com/aligned-sovra-partner-to-power-digital-trust-in-latin-america/)). + +### **Choose a mode:** + +- **Verification Layer** for interactive UX (logins, access control). +- **Aggregation Service** for archival or cross-period consolidated attestations. + +## ZK coprocessors & oracles + +Off-chain processes fetch data or perform heavy computations and return a ZK proof that onchain logic can trust. Allows offchain computation to be secured by onchain trust, giving smart contracts greater expressivity. + +### **How Aligned helps:** + +- Lets you run richer computations and affordably verify them onchain. +- A natural way to add computational trust and reduce L1 gas bottlenecks for oracle-like systems. + +### **Choose a mode:** + +- **Verification Layer** for frequent or streaming tasks. +- **Aggregation Service** when the highest security is needed (e.g. if the economic security from the AVS does not meet risk management parameters). + +## Onchain gaming & interactive apps + +Games and interactive dapps that prove game validity, scores/results, or anti-cheat logic with ZK. + +### **How Aligned helps:** + +- Low-latency verification makes regular and frequent proving economical. +- We’ve highlighted early builders in our [hackathon spotlights](https://blog.alignedlayer.com/tag/hackathons/). + +{% hint style="success" %} +_**Coming soon:**_ Our **ZK Arcade** (launching 2025 Q3) will let users verify proofs of game results using Aligned. +{% endhint %} + +## Which mode should I pick? + +**Need the lowest cost and fastest confirmations?** +- Start with the [Proof Verification Layer](https://docs.alignedlayer.com/architecture/1_proof_verification_layer). It’s live on mainnet, secured by 52 restaked operators, and can verify thousands of proofs per second with results readable on Ethereum within blocks (cryptoeconomic security derived from Ethereum). + +**Need full L1 finality in one transaction?** +- Use the [Proof Aggregation Service](https://docs.alignedlayer.com/architecture/2_aggregation_mode). It recursively compresses many proofs into one that’s verified directly on Ethereum, trading minutes of latency for the strongest security (full cryptographic security of Ethereum). + +***You can also combine both:*** use the Verification Layer for UX and fast exits, then periodically post aggregated checkpoints for L1 finality. + +In the current Holesky testnet deployment of the Proof Aggregation Service, supported Risc Zero and SP1 zkVM proofs that are submitted to the Proof Verification Layer are aggregated and verified through the Aggregation Service several times per day. The mainnet version will allow users to choose either the Verification Layer or Aggregation Service (or both) when submitting proofs. + +![Comparison between the Proof Verification Layer and Proof Aggregation Service (_August 2025_)](../images/pvl_vs_pas_comp_table.png) + +## Supported proof systems + +Aligned supports multiple verifiers (today: Risc0, SP1, gnark Groth16/Plonk, Circom, with more on the roadmap), so you can pick the right proving stack and still get good economics. + +## Featured projects & posts + +- [Verification Layer vs. Aggregation Service deep-dive](https://blog.alignedlayer.com/proof-verification-layer-vs-aggregation-service/) +- [Aligned RaaS: Based ZK-rollups using Ethrex](https://blog.alignedlayer.com/why-is-aligned-using-ethrex-for-based-zk-rollups/) +- [Mina ↔ Ethereum bridge](https://blog.alignedlayer.com/mina-to-ethereum-bridge/) +- [Why based rollups?](https://blog.alignedlayer.com/aligned-raas-based-rollups-to-build-the-future-of-ethereum/) + +## Future additions + +- Use cases: Aligned RaaS +- Use cases: Meta-proving services +- Use cases: Aligned Wallets-as-a-Service +- Use cases: Aligned Interoperability protocol diff --git a/docs/1_introduction/3_faq.md b/docs/1_introduction/3_faq.md index ef95245b47..9630dcd6f0 100644 --- a/docs/1_introduction/3_faq.md +++ b/docs/1_introduction/3_faq.md @@ -1,14 +1,14 @@ # FAQ ### What is Aligned's objective? - -Aligned’s mission is to extend Ethereum’s zero-knowledge capabilities. We are certain that zero-knowledge proofs will have a key role in the future of blockchains and computation. We don’t exactly know what that future will look like, but we are certain it will be built on Ethereum. -The question we want to share is: If we are sure that zero-knowledge proofs are the future of Ethereum, but we don't know which of the many possible zero-knowledge futures will win, **then how do we build infrastructure for Ethereum to make it compatible with any future zero-knowledge proving system?** +Aligned is creating the foundation for a trustless, verifiable internet. Our vertically integrated stack empowers developers to build applications across finance, AI, and other sectors with one-click solutions for wallets, rollups, and zero-knowledge services on Ethereum. We’re focused on enabling provable execution in a world where institutional trust is increasingly fragile. + +By providing the tools for trust to be integrated into every layer of application infrastructure, we’re enabling developers to create verifiable systems that can be trusted across a wide range of use cases. Aligned is here to enable a future where trust is not assumed, but proven by design. -### What are the security guarantees and trust assumptions of Aligned? +### What are the security guarantees and trust assumptions of Aligned's Proof Verification Layer? -Aligned verifies proofs by having the operators re-execute the verification code for each proof and, if all of the proofs are valid, each of them signs a message containing a commitment to the proof and public input or the root of the batch. The aggregator is responsible for receiving the signatures, checking the quorum, performing the aggregation and sending them to Ethereum. +Aligned's Proof Verification Layer verifies proofs by having the operators re-execute the verification code for each proof and, if all of the proofs are valid, each of them signs a message containing a commitment to the proof and public input or the root of the batch. The aggregator is responsible for receiving the signatures, checking the quorum, performing the aggregation and sending them to Ethereum. - 67% of the operators behaving dishonestly to be able to submit false proofs. - 33% of the operators colluding to censor a batch of proofs or task. However, in the case of a batch, the operators can only censor the whole batch, but not a particular proof included in it. @@ -16,70 +16,59 @@ Aligned verifies proofs by having the operators re-execute the verification code ### What is the batcher? -We have a service called the batcher that batches enough proofs to send to the AVS in Eigen Layer to reduce on-chain verification costs. Users can submit their proofs to Aligned directly without the batcher. The batcher is fully optional. The batcher is an optimization to reduce on-chain verification costs. +We have a service called the Batcher that batches enough proofs to send to the AVS in EigenLayer to reduce on-chain verification costs. Users can submit their proofs directly to Aligned’s Proof Verification Layer without using the Batcher. The Batcher is fully optional and serves as an optimization to further reduce on-chain verification costs. ### What are the security guarantees added by the batcher? -A batcher can censor proofs. The user can run their own batcher to avoid censorship or can send a task to verify proofs in Aligned via Ethereum without using the batcher. -The batcher cannot transfer user's funds to other accounts, only spend them to create verification tasks and pay to the aggregator. We recommend to only deposit enough funds for a few months of operations. +A batcher can censor proofs. The user can run their own batcher to avoid censorship or can send a task to verify proofs in our Proof Verification Layer via Ethereum without using the batcher. The batcher cannot transfer user's funds to other accounts, only spend them to create verification tasks and pay to the aggregator. We recommend depositing only enough funds for a few months of operations. ### How do I send proofs without a batcher? +You can see the steps to do it in [this guide](../3_guides/8_submitting_batch_without_batcher.md). + ### How do I run my own batcher? +To-do + ### Why build Aligned on top of Ethereum? Ethereum is the most decentralized and most significant source of liquidity in the crypto ecosystem. We believe it is the most ambitious and long-term project on the internet. Aligned is being built to help Ethereum achieve its highest potential, and we believe this is only possible through validity/zero-knowledge proofs. -### What is Aligned's throughput? - -Aligned runs the verifier’s code natively. Verification time depends on the proof system, program run, and public input. Generally, most verifiers can be run on the order of milliseconds on consumer-grade hardware. We can optimize the code for speed and leverage parallelization by running it natively. Our current testnet can verify more than 4000 proofs per second. - -### How does Aligned's throughput compare with Ethereum? +For further reading on this subject, you can refer to [this Aligned blog post](https://blog.alignedlayer.com/why-ethereum/), which explains why we chose Ethereum. + +### What is the throughput of Aligned’s Proof Verification Layer? -Ethereum runs on top of the EVM. Each block is limited to 30,000,000 gas. Since the most efficient proof systems take at least 250,000 gas, Ethereum can verify 120 proofs per block at most. Aligned runs the verifier's code natively and leverages parallelization, allowing up to 30,000 proofs to be verified per block. +Aligned’s Proof Verification Layer runs the verifier’s code natively. The verification time depends on the proof system, program run, and public input. Generally, most verifiers can be run in the order of ms on consumer-end hardware. We can optimize the code for speed and leverage parallelization by running it natively. Current testnet can verify more than 2500 proofs per second. -### Why is Aligned necessary? +### How does the throughput of Aligned’s Proof Verification Layer compare with Ethereum? + +Ethereum runs on top of the EVM. Each block is limited to 45,000,000 gas. Since the most efficient proof systems take at least 250,000 gas, Ethereum can verify 180 proofs per block. Aligned's Proof Verification Layer runs the code natively and leverages parallelization, reaching 30,000 proofs in the same period. + +### Why is Aligned buiding its stack? + +Aligned is building its stack to provide the infrastructure for a trustless, verifiable internet. Its vertically integrated stack enables developers to create applications across industries like finance and AI, with one-click solutions for rollups, wallets, and several zero-knowledge (ZK) services. Innovations in proving virtual machines, like Risc0, Jolt, SP1, and Valida, allow users to generate proof of computation integrity using languages like Rust or C. However, Ethereum’s proof verification is costly and slow, limiting innovation. Aligned addresses this with its Proof Verification Layer and Proof Aggregation Service, reducing verification costs and increasing throughput. In addition, Aligned offers a Wallet-as-a-Service infrastructure for simplifying wallet generation, and a Rollup-as-a-Service (RaaS) platform for easy ZK-rollup deployment. Its Interoperability Protocol also supports trust-minimized cross-chain liquidity movement. Together, these innovations aim to build a scalable, secure, and trustless internet. -The EVM was not designed for ZK proof verification, so most verifications are computationally expensive (which also means they have a high gas cost). - -To solve this, for pairing-based cryptography, Ethereum has added a precompile for verification using the curve BN254. - -But technology changes fast. BN254 security was demonstrated to be around 100 bits instead of the expected 128. Fast STARKs need efficient hashing for fields. Which is the best field? Mersenne? Goldilocks? Binary fields? What about the sumcheck protocol? Is Jolt the endgame? Or is GKR going to be faster? - -There is a massive amount of ongoing progress in the field of zero-knowledge cryptography, and nobody can predict the endgame. - -Moreso, it would be naive to think that only one optimized prover will exist in the future. In the world of ZK, as in many others, there are trade-offs and systems that solve different problems. Maybe we want faster proving and don't care about proof size. Maybe we want the fastest proof verification and smallest size and can do more work on the prover. The system may be optimized to prove Keccak really fast. Or we can skip the traditional hashes altogether and just optimize for Poseidon, Rescue, or some not-yet-created hash. - -Aligned solves all of these problems. No matter how or what you want to prove, it can be efficiently verified while still inheriting security from Ethereum. - ### Is Aligned an Ethereum L2? -Aligned is related to Ethereum but is not an L2 since it does not produce blocks. It is a decentralized network of verifiers. - -### Does Aligned compete with L2s? - -No. Aligned is a decentralized network of verifiers that also uses proof aggregation. It does not produce blocks or generate proofs of execution. Aligned provides L2s with fast and cheap verification for the proofs they generate, reducing settlement costs. It also enhances cross-chain interoperability by making it possible to build quick and cheap bridging solutions. +No. Aligned is a vertically integrated stack for building applications on a verifiable internet. However, our stack offers one-click solutions for rollups, as well as wallets, and several ZK services. -### What does it cost to verify proofs using Aligned? +### How much it cost to verify proofs using Aligned's Proof Verification Layer? -The cost ($C$) of proof verification using Aligned's **fast mode** is the cost of task creation ($C_{task}$) plus the cost of verifying an aggregated BLS signature ($C_{verification}$), divided by the number of proofs ($N$) in the batch, plus the the cost of reading the results on-chain ($C_{read}$). +The cost ($C$) of proof verification using Aligned's Proof Verification Layer is the cost of task creation ($C_{task}$) plus the cost of verifying an aggregated BLS signature ($C_{verification}$), divided by the number of proofs ($N$) in the batch, plus the the cost of reading the results on-chain ($C_{read}$). $$ C =\frac{C_{task} + C_{verification}}{N} + C_{read} $$ -The cost of task creation and signature verification is amortized across $N$ proofs per batch, meaning that Aligned becomes cheaper to use as more proofs are verified at the same time. +The cost of task creation and signature verification is amortized across $N$ proofs per batch, meaning that our verification layer becomes cheaper to use as more proofs are verified at the same time. ### What are BLS signatures? -[Boneh-Lynn-Shacham (BLS)](https://en.wikipedia.org/wiki/BLS_digital_signature) signatures are a cryptographic signature that allows a user to verify that a signer is authentic. It relies on elliptic curve pairings and is used by Ethereum due to its aggregation properties. +[Boneh-Lynn-Shacham (BLS)](https://en.wikipedia.org/wiki/BLS_digital_signature) signatures are a cryptographic signature that allows a user to verify that a signer is authentic. It relies on elliptic curve pairings and is used by Ethereum due to its aggregation properties. -### Why does Aligned have a fast mode and an aggregation mode? - -Aligned's fast mode is designed to offer very cheap verification with low latency. It uses cryptoeconomic guarantees provided by restaking, thus deriving its security from Ethereum. With 10 proofs being verified in a batch the per-proof verification cost is approximately 30,000 gas. +### Why do you have a Proof Verification Layer and a Proof Aggregation Service? -The aggregation mode works using recursive proof aggregation. This results in higher fees and latency, but has the complete security of Ethereum. +The Proof Verification Layer is designed to offer very cheap verification costs and low latency. It uses crypto-economic guarantees provided by restaking; costs can be as low as 2100 gas. The Proof Aggregation Service uses recursive proof aggregation, achieving the complete security of Ethereum, but with slightly higher fees and latency. We verify an aggregated BLS signature (around 113,000 gas) in our Proof Verification Layer. We verify an aggregated proof (around 300,000 gas) in our Proof Aggregation Service. Together, these two services form our ZK verification layer which offers developers different options for reducing proof verification costs on Ethereum, depending on their scale and security requirements. ### What is proof recursion? @@ -96,19 +85,15 @@ EigenLayer introduced the concept of Restaking. It allows Ethereum’s validator ### Is Aligned an aggregation layer? -Aligned provides recursive proof aggregation as part of its aggregation mode, a feature shared with all aggregation layers. However, Aligned offers a unique fast mode designed to provide cheap and low-latency proof verification, leveraging the power of restaking via EigenLayer. Aligned is a decentralized network designed to verify zero-knowledge proofs and uses recursive proof aggregation as one of its tools. - +Aligned provides proof aggregation as part of its Proof Aggregation Service, a feature shared with all aggregation layers. However, Aligned offers a unique Proof Verification Layer designed to provide cheap and low-latency proof verification, secured by restaked ETH. + ### What proof systems do you support? -Aligned is designed to support any proof system. We [currently support](../2_architecture/0_supported_verifiers.md) Groth16 and Plonk (gnark), SP1 and Risc0. - -### How easy is it to add new proof systems? - -Aligned is designed to make adding new proof systems easy. The only thing needed is the verifier function, which is written in a high-level language like Rust. For example, we could integrate Jolt into one of our testnets just a few hours after it was released. - -### How does Aligned work? +Aligned’s stack is designed to support any proof system. [Currently supported ones](../2_architecture/0_supported_verifiers.md) are Groth16 and Plonk (gnark), SP1, Risc0, and Circom. + +### How does Aligned's Proof Verification Layer work? -The flow for fast mode verification is as follows: +The flow is as follows: 1. The user uses a provided CLI or SDK to send one proof or many to the batcher, and waits (Alternatively, the user can run a batcher or interact directly with Ethereum) 2. The batcher accumulates proofs of many users for a small number of blocks (typically 1-3). @@ -117,11 +102,11 @@ The flow for fast mode verification is as follows: 5. If the proofs are valid, they sign the root and send this to the BLS signature aggregator. 6. The signature aggregator accumulates the signed responses until reaching the quorum, then sends the aggregated signature to Ethereum. 7. Ethereum verifies the aggregated signatures and changes the state of the batch to verified. + +### How can I verify proofs using Aligned's stack? -### How can I verify proofs in Aligned? - -You can verify proofs in Aligned using our CLI or Rust SDK. - +You can verify proofs with our stack using our CLI or Rust SDK. + ### Can you provide an estimate of Aligned’s savings? Proof verification directly on Ethereum (not including the cost of accessing/reading) costs: @@ -131,52 +116,32 @@ Proof verification directly on Ethereum (not including the cost of accessing/rea - STARKs: >1,000,000 gas - Binius/Jolt: too expensive to run! -With Aligned's fast mode: +With Aligned's Proof Verification Layer: - Just one proof (any!): 350,000 gas - Batching 1024 proofs: 350 gas + reading cost -This means verifying proofs using Aligned can be 99% cheaper than directly on Ethereum. - -### I want to verify just one proof. Can I use Aligned for cheap and fast verification? - -Yes! And all proofs cost the same to verify using Aligned. +This means verifying proofs using Aligned's Verification Layer can be 99% cheaper than directly on Ethereum. + +### I want to verify just one proof. Can I use your products and services for cheap and fast verification? +Yes! And all proofs cost the same to verify using our stack. + ### Is Aligned open-source? Yes! We are 100% open-source from day one. - -### What are the goals of Aligned? - -Aligned is infrastructure that offers fast and cheap verification for zero-knowledge and validity proofs on Ethereum. It can take any proof system and verify it cheaply and quickly, thus accelerating Ethereum's roadmap and its capabilities as a settlement layer for ZK proofs. - -Aligned aims to make it possible for anyone to build ZK applications. This can only be achieved by: - -- Reducing operational costs when maintaining a ZK application -> anyone can afford to build ZK apps. -- Offering more options so developers can choose how they want to build their protocols -> everyone can choose their tools. -- Offer the latest ZK technology that allows anyone to build ZK applications by just proving rust -> anyone can code a ZK application. - + ### What’s the role of Aligned in Ethereum? - -Aligned’s role is to help advance the adoption of zero-knowledge proofs on Ethereum, increase verification throughput, and reduce on-chain verification time and costs. Aligned can easily incorporate proof systems without any further protocol changes to Ethereum. Aligned future-proofs Ethereum for ZK. + +Aligned's role is to provide a full stack of vertically integrated infrastructure that simplifies the process of launching, operating, and scaling on the Ethereum network, enabling teams to build applications across finance, AI, and other sectors with one-click solutions for wallets, rollups, and zero-knowledge services. ### Why do we need a ZK verification layer? Verifiable computation allows developers to build applications that help Ethereum scale or even create applications that were not possible before, with enhanced privacy properties. We believe the future of Ethereum will be shaped by zero-knowledge proofs and our goal is to help increase its capabilities. -### What are the use cases for Aligned? - -We believe that there are many things that will be built using Aligned that we have not even imagined yet. For some possible use cases please see [this page](../1_introduction/2_use_cases.md). - -### Why don’t you run Aligned on top of a virtual machine? - -Running on a virtual machine adds complexity to the system and an additional abstraction layer. It can also reduce Aligned's throughput, which is needed to offer really fast and cheap verification. - -### Why don’t you build Aligned on top of a rollup? +### What are the use cases for Aligned's stack? -The main problem with settling on top of a rollup is that you still need confirmation in Ethereum, which adds latency to the process. Besides, most rollups are not fully decentralized; even if they were, it would not be to the same extent as Ethereum. Aligned also already achieves a very low verification cost on Ethereum, so it would not be convenient to build Aligned on top of a rollup in terms of latency, cost, or decentralization. Rollups also need to use the EVM to settle on Ethereum. This means that the proofs need to be efficiently verified in the EVM, and their data made available there. - -We are currently focused on bringing Aligned's **fast mode** to Ethereum mainnet but may support verifications on L2 networks in the future. +We believe that there are many things that will be built using Aligned's stack that we have not even imagined yet. For some possible use cases please see [this page](../1_introduction/2_use_cases.md). ### Why EigenLayer? @@ -189,10 +154,6 @@ Creating a new L1 doesn’t benefit Ethereum because it will add new trust assum 3. Part of the Ethereum ecosystem 4. Flexible enough to support many current and future proving systems -### How does it compare to the Polygon aggregation layer? - -Aligned is just a network of decentralized verifiers renting security from Ethereum. On the other hand, the Polygon aggregation layer, in essence, is a rollup verifying multiple proofs. That is not the case for Aligned, which just executes a rust binary from different verifiers directly in multiple Ethereum validators. - ### What about TEEs? -Aligned will also verify remote attestations made by Trusted Execution Environments (TEEs). We believe TEEs provide an alternative to ZK in some applications where ZK is too computationally intensive or as an additional mechanism to provide integrity (_e.g._ in multiproofs). +Aligned's stack will also verify remote attestations made by Trusted Execution Environments (TEEs). We believe TEEs provide an alternative to ZK in some applications where ZK is too computationally intensive or as an additional mechanism to provide integrity (_e.g._ in multiproofs). diff --git a/docs/1_introduction/4_why_zk.md b/docs/1_introduction/4_why_zk.md index 9c98a2b03f..bd6178c499 100644 --- a/docs/1_introduction/4_why_zk.md +++ b/docs/1_introduction/4_why_zk.md @@ -7,24 +7,19 @@ The following is an introduction to zero-knowledge/validity proofs to understand The two terms are sometimes grouped under ZK, though depending on the use case, you may need it to be zero-knowledge or not. Validity proofs are widely used by ZK-rollups (though not rigorously zero-knowledge), while Schnorr signatures are an example of the second (basically, they let you show to others that you have a secret key, without leaking it). -In blockchains, we need to coordinate between different parties that do not trust each other. How can we agree on whether something has happened? The logical construction involves independently re-executing transactions and reaching consensus. However, the number of transactions we can process is limited by the weakest devices in the network, acting as bottlenecks. Moreover, adding more hardware does not make the system faster (as in web2), only more robust. ZK allows the situation to scale, allowing the system to process more transactions with the same guarantees. ZK proofs allow you to verify a computation much faster than re-execution: we can use more powerful machines to run the transactions and generate the cryptographic proof, and the rest of the network verifies the proof. If the proof is valid, it is the same as if all the nodes had re-executed the transactions, but with less computational effort. More concretely, a ZK-rollup can generate a proof that it processed 10,000 transactions correctly, and submit to Ethereum the proof with the state diff (or other information necessary to update the state), and Ethereum can check very quickly that all those transactions were correct! ZK is also useful whenever you need to show the integrity of some computation, for example, that an image you published in the newspaper is the result of enlarging an image from a real camera. You can generate the proof and then use Ethereum as a settlement layer, in charge of performing the verification of your proofs, though there is a problem: it can be expensive, and you have limited throughput. This is where Aligned comes in. +In blockchains, we need to coordinate between different parties that do not trust each other. How can we agree on whether something has happened? The logical construction involves independently re-executing transactions and reaching consensus. However, the number of transactions we can process is limited by the weakest devices in the network, acting as bottlenecks. Moreover, adding more hardware does not make the system faster (as in web2), only more robust. ZK allows the situation to scale, allowing the system to process more transactions with the same guarantees. ZK proofs allow you to verify a computation much faster than re-execution: we can use more powerful machines to run the transactions and generate the cryptographic proof, and the rest of the network verifies the proof. If the proof is valid, it is the same as if all the nodes had re-executed the transactions, but with less computational effort. More concretely, a ZK-rollup can generate a proof that it processed 10,000 transactions correctly, and submit to Ethereum the proof with the state diff (or other information necessary to update the state), and Ethereum can check very quickly that all those transactions were correct! ZK is also useful whenever you need to show the integrity of some computation, for example, that an image you published in the newspaper is the result of enlarging an image from a real camera. This is where Aligned's stack comes in. -Aligned offers you two different products to reduce your costs and increase throughput: fast mode and the proof aggregation service. Once you know that you want to use ZK for your product and Ethereum, Aligned fits perfectly. Whether to use fast mode or proof aggregation depends on your needs: +With Aligned's stack, you can generate the proof and then use Ethereum as a settlement layer. To do so, Aligned offers a variety of products to reduce your costs and increase throughput. Once you decide to use ZK for your product and Ethereum, Aligned fits perfectly. -- Fast mode: a decentralized network of verifiers that checks the proofs, signs messages stating the correctness of the proof and when a threshold is met, publishes the signature to Ethereum. Once Ethereum checks the signature, the state of the proofs is changed to verified, and you can use the result as always. It has very high throughput, reduces costs significantly (depending on the number of proofs that are sent) and has low latency. -- Proof aggregation service: performs recursive proof aggregation of several ZK proofs. The final proof is sent to Ethereum, and if verified, it implied the validity of your proof. It has higher latency and lower throughput than the fast mode, but achieves the full security of Ethereum. +- **Proof Verification Layer:** A decentralized network of verifiers that checks the proofs, signs messages stating the correctness of the proof and when a threshold is met, publishes the signature to Ethereum. Once Ethereum checks the signature, the state of the proofs is changed to verified, and you can use the result as always. It has very high throughput, reduces costs significantly (depending on the number of proofs that are sent) and has low latency. +- **Proof Aggregation Service:** Performs recursive proof aggregation of several ZK proofs. The final proof is sent to Ethereum, and if verified, it implied the validity of your proof. It has higher latency and lower throughput than the proof verification layer, but achieves the full security of Ethereum. +- **Meta Proving Services**: Offers an easy interface for accessing centralized and decentralized proving from external providers. +- **Rollup-as-a-service (RaaS) platform:** Simplifies ZK-rollup deployment, allowing clients to launch L2 chains with just one click, without needing deep blockchain expertise. +- **Interoperability protocol:** An intent-based bridge that will be integrated with our RaaS stack. It will leverage based sequencing and enable developers to create native trust-minimized solutions for users and financial institutions to efficiently move liquidity across chains. +- **Wallet-as-a-Service infrastructure:** Enable developers to easily generate embedded wallets for users, supporting rollups and mobile integrations. It will leverage the latest account abstraction technology, offering seamless wallet services backed by our robust tech stack. -How can you write ZK applications and generate proofs? -There are many different technologies and libraries to build ZK applications. -Until recently, it was fairly complicated, since you needed some background of math and write circuits -(you can think of it as coding in assembly). -Luckily, -there are several ZK virtual machines (zkVM) -that allow you to generate proofs of code written in a higher level language, -such as Rust. -You write your code and run it on top of the zkVM, and you get a proof of its correct execution. -To simplify things, we have [zkRust](../3_guides/5_using_zkrust.md), -where you can run your code and send the proof directly to Aligned! +How can you write ZK applications and generate proofs? There are many different technologies and libraries to build ZK applications. Until recently, it was fairly complicated, since you needed some background of math and write circuits (you can think of it as coding in assembly). Luckily, there are several ZK virtual machines (zkVM) that allow you to generate proofs of code written in a higher level language, such as Rust. +You write your code and run it on top of the zkVM, and you get a proof of its correct execution. To simplify things, we have [zkRust](../3_guides/5_using_zkrust.md), where you can run your code and send the proof directly to Aligned! ## Projects or ideas using ZK @@ -32,7 +27,7 @@ The list below contains examples or projects using ZK. It is meant to illustrate - Rollups - On-chain gaming -- ZK Machine Learning (zKML) +- ZK Machine Learning (zkML) - ZK-TLS - Bridges - Oracles @@ -40,4 +35,4 @@ The list below contains examples or projects using ZK. It is meant to illustrate - Voting - ZK-Email - Identity protocols -- IoT \ No newline at end of file +- IoT diff --git a/docs/2_architecture/0_supported_verifiers.md b/docs/2_architecture/0_supported_verifiers.md index 4e76f0a398..54c754bce3 100644 --- a/docs/2_architecture/0_supported_verifiers.md +++ b/docs/2_architecture/0_supported_verifiers.md @@ -4,11 +4,11 @@ Aligned's support for multiple proof systems is a significant advantage, as it a The following is the list of the verifiers currently supported by Aligned: -- :white_check_mark: gnark - Groth16 (with BN254) [(v0.10.0)](https://github.com/Consensys/gnark/releases/tag/v0.10.0) -- :white_check_mark: gnark - Plonk (with BN254 and BLS12-381) [(v0.10.0)](https://github.com/Consensys/gnark/releases/tag/v0.10.0) -- :white_check_mark: SP1 [(v3.0.0)](https://github.com/succinctlabs/sp1/releases/tag/v3.0.0) -- :white_check_mark: Risc0 [(v1.1.2)](https://github.com/risc0/risc0/releases/tag/v1.1.2) -- 🏗️ Circom +- :white_check_mark: gnark - Groth16 (with BN254) [(v0.12.0)](https://github.com/Consensys/gnark/releases/tag/v0.12.0) +- :white_check_mark: gnark - Plonk (with BN254 and BLS12-381) [(v0.12.0)](https://github.com/Consensys/gnark/releases/tag/v0.12.0) +- :white_check_mark: SP1 [(v5.0.0)](https://github.com/succinctlabs/sp1/releases/tag/v5.0.0) +- :white_check_mark: Risc0 [(v3.0.3)](https://github.com/risc0/risc0/releases/tag/v3.0.3). Previous versions are also compatible. +- :white_check_mark: Circom [(v2.2.2)](https://github.com/iden3/circom/releases/tag/v2.2.2) - 🏗️ Lambdaworks - 🏗️ Kimchi diff --git a/docs/2_architecture/1_fast_mode.md b/docs/2_architecture/1_proof_verification_layer.md similarity index 93% rename from docs/2_architecture/1_fast_mode.md rename to docs/2_architecture/1_proof_verification_layer.md index a043e1248a..2d6c670734 100644 --- a/docs/2_architecture/1_fast_mode.md +++ b/docs/2_architecture/1_proof_verification_layer.md @@ -1,6 +1,6 @@ -## Fast mode in a nutshell +## Aligned's Proof Verification Layer in a nutshell -The fast mode works using a subset of Ethereum’s validators via restaking. +Aligned's Proof Verification Layer works using a subset of Ethereum’s validators via restaking. Validators (also called Operators) receive proofs, verify them using the verification code written in Rust or another higher-level language, and sign messages with BLS signatures. If a two-thirds majority agrees, the results are posted to Ethereum. @@ -9,7 +9,7 @@ If a two-thirds majority agrees, the results are posted to Ethereum. The proof submission can be simplified as follows: -![Figure 1: Simplified Architecture.png](../images/simplified_architecture.png) +![Figure 1: Simplified Architecture](../images/pvl_simple_architecture.png) 1. The users submit proofs to the batcher through the CLI or SDK. 2. The batcher accumulates proofs, and then sends the batch to some Data Service and posts the merkle root and data to @@ -23,7 +23,7 @@ The proof submission can be simplified as follows: Aligned’s architecture is shown in the figure below: -![Figure 2: Architecture fast mode](../images/aligned_architecture.png) +![Figure 2: Proof Verification Layer Architecture](../images/aligned_architecture.png) The validators/AVS operators are the ones responsible for proof verification. They fetch the proof data from the data service and verify it using the different proving systems supported by Aligned. diff --git a/docs/2_architecture/2_aggregation_mode.md b/docs/2_architecture/2_aggregation_mode.md index e6acb337c0..00fab99589 100644 --- a/docs/2_architecture/2_aggregation_mode.md +++ b/docs/2_architecture/2_aggregation_mode.md @@ -1,9 +1,9 @@ -## Aggregation mode in a nutshell +## Aligned's Proof Aggregation Service in a nutshell -General Prover/Verifier: Every several days, takes the proofs from the DA layer and generates a proof of the verification of all the proofs. The general prover can be based on the SP1, Risc0 or Nexus virtual machine, which is a virtual machine able to prove general Rust code. The proof of the verification of the proofs is done using the corresponding verifier codes in Rust. The verification can be done using a tree structure. +Aligned's Proof Aggregation Service introduces a scalable solution: compressing multiple proofs into one using recursion, drastically reducing verification costs while maintaining Ethereum-level security. This is our second major product, following the Proof Verification Layer, and is designed to give developers flexible, cost-efficient infrastructure for proving systems. -To aggregate all the proofs, in the first step, all proofs are transformed into proofs of execution of the virtual machine, achieving proof uniformity (see Figure 1). We can then shrink proof size by recursively proving the verification of proofs, as shown in the tree diagram (see Figure 2). +Aggregation Service allows developers to submit individual ZK proofs to Aligned’s Verification Layer; the ones that can be aggregated are then batched and passed to the Aggregation Service. The service generates a single recursive proof that attests to the validity of these proofs. This final proof is then submitted and verified on Ethereum. By aggregating many proofs into one, the cost of on-chain verification is amortized across the batch—developers effectively pay a fraction of the full price, plus a small aggregation fee. -![Figure 1: Prover](../images/prover.png) +![Figure 1: Proof Aggregation Service](../images/aligned_proof_aggregation_service.png) -![Figure 2: Recursion tree](../images/recursion.png) +The system is powered by recursive proving. In simple terms, the aggregation process proves that the verification of multiple proofs was correctly executed. This meta-proof is cryptographically valid and can be verified on Ethereum just like any standard ZK proof. diff --git a/docs/2_architecture/3_raas_platform.md b/docs/2_architecture/3_raas_platform.md new file mode 100644 index 0000000000..d2e34a89eb --- /dev/null +++ b/docs/2_architecture/3_raas_platform.md @@ -0,0 +1,44 @@ +# Rollup-as-a-Service (RaaS) platform + +Aligned's RaaS platform integrates RISC-V zkVMs, the new [Ethrex execution client](https://github.com/lambdaclass/ethrex), and our ZK Verification Layer to offer fast, reliable, and secure one-click ZK-rollup deployment — including full support for based rollups — making it as simple as launching a Web2 service. + +Our RaaS platform will be integrated with our upcoming products to give developers all the tools they need to operate a complete ecosystem: wallet-as-a-service infrastructure for simplified onboarding, meta-proving services that give users access to provers provided by Aligned or other third-party centralized or decentralized proving services, and our interoperability protocol for efficient cross-chain liquidity access. + +![Figure 1: Aligned Suite of Products](../images/zk_rollups_and_aligned.png) + +## What advantages will Aligned's RaaS platform offer for your project? + +Aligned's RaaS platform will offer significant benefits, starting with substantial time and cost savings, enabling teams to deploy rollups faster and more affordably. This accessibility unlocks new use cases that would otherwise be economically unfeasible. A key advantage is customizability and modularity. Our platform will enable easy mixing and matching of different rollup components, helping build the ideal solution for specific needs. From initial deployment to long-term maintenance, we handle upgrades, performance optimization, and assist you in integrating new capabilities as they emerge. + +## Why is Aligned using Ethrex for Based ZK-rollups? + +Aligned chose Ethrex as the rollup stack for our RaaS platform due to its stable, minimalist, and modular design and its support for the latest features like based rollups. This aligns with our commitment to reliability and performance, and ensures that we can continue to offer our users the best technology to access Ethereum. + +Ethrex operates in two modes: + +- Ethrex L1: a streamlined Ethereum execution client +- Ethrex L2: a ZK-rollup client supporting multiple proving systems (RISC-V zkVMs like SP1 or R0VM, and Trusted Execution Environments (TEEs)) + +Ethrex's design principles emphasize minimalism, clarity, and simplicity, resulting in a codebase that is both fast and resilient. This approach enables rapid iteration and the early adoption of next-generation features, which is crucial for staying ahead in the rapidly evolving blockchain landscape. Additionally, Ethrex's vertical integration and minimal dependencies ensure efficient operation and ease of maintenance, enabling low overhead and providing a robust foundation for our services. + +By leveraging Ethrex, Aligned can offer a streamlined, high-performance RaaS platform that simplifies the deployment of Layer 2 chains, empowering developers to build scalable applications with greater efficiency and control. + +## What are Based rollups? + +Based rollups are rollups that use Ethereum L1 proposers and builders for sequencing (ordering its transactions and forming blocks), as opposed to a separate (typically centralized) sequencer. + +Based sequencing is “based on the L1”, meaning that rollups using this design give Ethereum’s validators the power to sequence rollup transactions. This simplifies what a rollup needs to do and lets it take advantage of the extensive, battle-tested infrastructure that makes up Ethereum’s block building market. The result is a rollup architecture that offers greater feature parity with the L1 and many other benefits that are important to customers looking to launch their own rollup. + +## The benefits of Based Rollups + +Based rollups provide a range of benefits that address many of the shortcomings rollups currently face. Because non-based rollups are not synchronously composable with Ethereum their proliferation has resulted in liquidity fragmentation and the majority of DeFi volume taking place on the L1, which has higher fees. Based rollups enable atomic synchronous composability and full access to Ethereum’s liquidity, ultimately resulting in improved interoperability between apps and smart contracts and greatly improved UX. + +By eliminating the need for a dedicated sequencer, based rollups are inherently more decentralized, have stronger liveness guarantees, are more censorship-resistant, and more credibly neutral than non-based rollups. These are core features of Ethereum that make it the best decentralized smart contract platform for high-value, global transactions—features which non-based rollups fail to replicate. + +Based rollups benefit from reduced operating costs as they don’t require operators to run a dedicated sequencer, but also make use of the L1s existing block building pipeline. This means based rollups do not need to attract sophisticated actors to provide these services, further reducing costs and improving efficiency. + +## How do ZK-rollups use Aligned’s ZK Verification Layer? + +A simplified version of this process can be found in Figure 2. Proofs for batches of rollup transactions (blocks) are sent to Aligned’s ZK Verification Layer (the Proof Aggregation Service, used with or without the Proof Verification Layer), which converts them into one proof that is verified on Aligned's L1 contract. + +![Figure 2: ZK-rollups and the role of Aligned](../images/zkrollups_and_the_role_of_aligned.png) diff --git a/docs/2_architecture/agg_mode_components/1_deep_dive.md b/docs/2_architecture/agg_mode_components/1_deep_dive.md new file mode 100644 index 0000000000..7ffca70105 --- /dev/null +++ b/docs/2_architecture/agg_mode_components/1_deep_dive.md @@ -0,0 +1,91 @@ +# Proof Aggregation Service Deep Dive + +The Proof Aggregation Service runs **once every 24 hours** and performs the following steps: + +1. **Fetch Proofs from the Verification Layer** + Queries `NewBatchV3` events from the `AlignedLayerServiceManager` and downloads the batches from `S3`, starting from the last processed block of the previous run. + +2. **Filter Proofs** + Filters proofs by supported verifiers and proof types. + +3. **Aggregate Proofs in the zkVM** + Selected proofs are aggregated using a zkVM. + +4. **Construct the Blob** + A blob is built containing the [commitments](#proof-commitment) of the aggregated proofs. + +5. **Send Aggregated Proof** + The final aggregated proof and its blob are sent to the `AlignedProofAggregationService` contract for verification. + +> [Note] +> Currently if you want your proof to be verified in the `AggregationMode` you need to submit it via the `VerificationLayer`. In the future, users will have the option to choose whether they want to continue using this method or switch to using only the Aggregation service. + +## Aggregators and Supported Proof Types + +Two separate aggregators are run every 24 hours: + +- **Risc0**: Aggregates proofs of types `Composite` and `Succinct`. +- **SP1**: Aggregates proofs of type `Compressed`. + +## Proof Commitment + +The **proof commitment** is a hash that uniquely identifies a proof. It is defined as the keccak of the proof public inputs + program ID: + +- **For SP1**: + The commitment is computed as: `keccak(proof_public_inputs_bytes || vk_hash_bytes)` +- **For Risc0**: + The commitment is computed as: `keccack(receipt_public_inputs_bytes || image_id_bytes)` + +## Multilayer Aggregation + +To scale aggregation without exhausting zkVM memory, aggregation is split in two programs: + +1. **User Proof Aggregator** + Processes chunks of `n` user proofs. Each run creates an aggregated proof that commits to a Merkle root of the user proofs inputs. This step is repeated for as many chunks as needed. Usually each chunks contains `256` proofs but it can be lowered based on the machine specs. + +2. **Chunk Aggregator** + Aggregates all chunk-level proofs into a single final proof. It receives: + + - The chunked proofs + - The original [proofs commitments](#proof-commitment) included each chunk received + + During verification, it checks that each chunk’s committed Merkle root matches the reconstructed root to ensure input correctness. The final Merkle root, representing all user [proofs commitments](#proof-commitment), is then committed as a public input. + +## Verification + +Once aggregated, the proof is sent to Ethereum and verified via the `AlignedProofAggregationService` contract. Depending on the proving system, the contract invokes: + +- `verifySP1` for SP1 proofs +- `verifyRisc0` for Risc0 proofs + +Each function receives: + +- The public inputs +- The proof binary + +The program ID is hardcoded in the contract to ensure only trusted aggregation programs (`chunk_aggregator`) are accepted. + +If verification succeeds, the new proof is added to the `aggregatedProofs` map in contract storage. + +### Proof Inclusion Verification + +To verify a user’s proof on-chain, the following must be provided: + +- The proof bytes +- The proof public inputs +- The program ID +- A Merkle proof + +The Merkle root is computed and checked for existence in the contract using the `verifyProofInclusion` function of the `ProofAggregationServiceContract`, which: + +1. Computes the merkle root +2. Returns `true` or `false` depending if there exists an `aggregatedProof` with the computed root. + +## Data Availability + +When submitting the aggregated proof to Ethereum, we include a **blob** that contains the [commitments](#proof-commitment) of all the individual proofs that were aggregated. This blob serves two main purposes: + +- It makes the [proof commitments](#proof-commitment) publicly available for **18 days**. +- It allows users to: + - Inspect which proofs were aggregated + - Get a Merkle proof to verify that their proof is included in the aggregated proof diff --git a/docs/2_architecture/components/3_service_manager_contract.md b/docs/2_architecture/components/3_service_manager_contract.md index bc80239dd5..ef4b74e77f 100644 --- a/docs/2_architecture/components/3_service_manager_contract.md +++ b/docs/2_architecture/components/3_service_manager_contract.md @@ -19,7 +19,8 @@ Besides the base [EigenLayer middleware contracts](https://github.com/Layr-Labs/ ```solidity function createNewTask( bytes32 batchMerkleRoot, - string calldata batchDataPointer + string calldata batchDataPointer, + uint256 respondToTaskFeeLimit ) external payable ``` @@ -27,12 +28,14 @@ This method is called to create a new batch verification task that will broadcas * `batchMerkleRoot` is a 256 bit hash corresponding to the Merkle Root of the proofs batch to be verified by operators. * `batchDataPointer` is a string representing a link to some specific data storage location. This is used by operators to download the entire batch of proofs. +* `respondToTaskFeeLimit` are the funds required for the operator to respond to the task #### Respond to task ```solidity function respondToTask( bytes32 batchMerkleRoot, + address senderAddress, NonSignerStakesAndSignature memory nonSignerStakesAndSignature ) external ``` @@ -41,6 +44,7 @@ This method is used by the Aggregator once the quorum for a particular task has * `batchMerkleRoot` is a 256 bit hash representing the Merkle Root of the batch that has been verified and signed by operators. * `nonSignerStakesAndSignature` is a struct provided by EigenLayer middleware with information about operators' signatures, stakes and quorum for the given task. +* `senderAddress` is the address of the batcher that created the task being responded to. ### Verify batch inclusion diff --git a/docs/3_guides/0_submitting_proofs.md b/docs/3_guides/0_submitting_proofs.md index efbd3d8bbb..31b38f8d61 100644 --- a/docs/3_guides/0_submitting_proofs.md +++ b/docs/3_guides/0_submitting_proofs.md @@ -4,16 +4,17 @@ Make sure you have Aligned installed as specified [here](../1_introduction/1_try If you run the examples below, make sure you are in Aligned's repository root. -You can check your submitted proofs on [Mainnet Explorer](https://explorer.alignedlayer.com) and [Holesky Explorer](https://holesky.explorer.alignedlayer.com). +You can check your submitted proofs on [Mainnet Explorer](https://explorer.alignedlayer.com), [Holesky Explorer](https://holesky.explorer.alignedlayer.com), and [Hoodi Explorer](https://hoodi.explorer.alignedlayer.com). ## Supported Verifiers The following is the list of the verifiers currently supported by Aligned: -- :white_check_mark: gnark - Groth16 (with BN254) -- :white_check_mark: gnark - Plonk (with BN254 and BLS12-381) -- :white_check_mark: SP1 [(v3.0.0)](https://github.com/succinctlabs/sp1/releases/tag/v3.0.0) -- :white_check_mark: Risc0 [(v1.1.2)](https://github.com/risc0/risc0/releases/tag/v1.1.2) +- :white_check_mark: gnark - Groth16 (with BN254) [(v0.12.0)](https://github.com/Consensys/gnark/releases/tag/v0.12.0) +- :white_check_mark: gnark - Plonk (with BN254 and BLS12-381) [(v0.12.0)](https://github.com/Consensys/gnark/releases/tag/v0.12.0) +- :white_check_mark: SP1 [(v5.0.0)](https://github.com/succinctlabs/sp1/releases/tag/v5.0.0) +- :white_check_mark: Risc0 [(v3.0.3)](https://github.com/risc0/risc0/releases/tag/v3.0.3). Previous versions are also compatible. +- :white_check_mark: Circom [(v2.2.2)](https://github.com/iden3/circom/releases/tag/v2.2.2) Learn more about future verifiers [here](../2_architecture/0_supported_verifiers.md). @@ -60,7 +61,7 @@ This will create the ECDSA keystore file in `~/.aligned_keystore/keystore0` ### Alternative 2: With EigenLayer CLI -- If you have the EigenLayer CLI installed, the keystore can be generated following [these](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-installation#import-keys) instructions. The key will be stored into `~/.eigenlayer/operator_keys`. +- If you have the EigenLayer CLI installed, the keystore can be generated following [these](https://docs.eigencloud.xyz/products/eigenlayer/operators/howto/operator-installation) instructions. The key will be stored into `~/.eigenlayer/operator_keys`. ## 2. Send funds to Aligned @@ -70,8 +71,8 @@ To use it, you can use the `aligned` CLI, as shown with the following example: ```bash aligned deposit-to-batcher \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com \ ---network holesky \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ +--network hoodi \ --keystore_path \ --amount 0.1ether ``` @@ -79,7 +80,7 @@ aligned deposit-to-batcher \ This command allows the usage of the following flags: - `--rpc_url` to specify the rpc url to be used. -- `--network` to specify the network to be used. Can be `devnet`, `holesky` or `mainnet`. +- `--network` to specify the network to be used. Can be `devnet`, `holesky`, `mainnet`, or `hoodi`. - `--keystore_path` the path to the keystore. - `--amount` the number of ethers to transfer to the Batcher. - Note: `--amount` flag parameter must be with the shown format, `XX.XXether`. @@ -88,15 +89,15 @@ After depositing funds, you can verify the Service has correctly received them b ```bash aligned get-user-balance \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com \ ---network holesky \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ +--network hoodi \ --user_addr ``` These commands allow the usage of the following flags: - `--rpc_url` to specify the rpc url to be used. -- `--network` to specify the network to be used. Can be `devnet`, `holesky` or `mainnet`. +- `--network` to specify the network to be used. Can be `devnet`, `holesky`, `mainnet`, or `hoodi`. - `--user_addr` the address of the user that funded the Batcher. ## 3. Submit your proof to the batcher @@ -109,18 +110,21 @@ Proof submission is done via the `submit` command of the Aligned CLI. The argume * `proof`: The path of the proof associated to the computation to be verified. * `vm_program`: When the proving system involves the execution of a program in a zkVM, this argument is associated with the compiled program or some other identifier of the program. * `pub_input`: The path to the file with the public input associated with the proof. -* `batcher_url`: The batcher websocket URL. Can be: - * mainnet: `wss://mainnet.batcher.alignedlayer.com` - * holesky: `wss://batcher.alignedlayer.com` - * devnet: `ws://localhost:8080` -* `network` to specify the network to be used. Can be `devnet`, `holesky` or `mainnet`. +* One of the following, to specify which Network to interact with: + - `--network `: Network name to interact with. + - Default: `devnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` + - For a custom Network, you must specify the following parameters: + - `--aligned_service_manager ` + - `--batcher_payment_service ` + - `--batcher_url ` * `rpc_url`: The RPC Ethereum node URL. * `proof_generator_addr`: An optional parameter that can be used in some applications to avoid front-running. * `batch_inclusion_data_directory_path`: An optional parameter indicating the directory where to store the batcher response data. If not provided, the folder with the responses will be created in the current directory. ### SP1 proof -The current SP1 version used in Aligned is `v3.0.0`. +The current SP1 version used in Aligned is `v5.0.0`. The SP1 proof needs the proof file and the vm program file. @@ -130,12 +134,12 @@ aligned submit \ --proving_system SP1 \ --proof \ --vm_program \ ---batcher_url wss://batcher.alignedlayer.com \ +--public_input \ --proof_generator_addr [proof_generator_addr] \ --batch_inclusion_data_directory_path [batch_inclusion_data_directory_path] \ --keystore_path \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` **Example** @@ -144,17 +148,17 @@ aligned submit \ rm -rf ./aligned_verification_data/ && aligned submit \ --proving_system SP1 \ ---proof ./scripts/test_files/sp1/sp1_fibonacci.proof \ ---vm_program ./scripts/test_files/sp1/sp1_fibonacci.elf \ ---batcher_url wss://batcher.alignedlayer.com \ +--proof ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof \ +--vm_program ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf \ +--public_input ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \ --keystore_path ~/.aligned_keystore/keystore0 \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` ### Risc0 proof -The current Risc0 version used in Aligned is `v1.1.2`. +The current Risc0 version used in Aligned is `v3.0.3`. The Risc0 proof needs the proof file and the vm program file (vm program file is the image id). @@ -164,21 +168,20 @@ aligned submit \ --proving_system Risc0 \ --proof \ --vm_program \ ---pub_input \ ---batcher_url wss://batcher.alignedlayer.com \ +--public_input \ --proof_generator_addr [proof_generator_addr] \ --batch_inclusion_data_directory_path [batch_inclusion_data_directory_path] \ --keystore_path \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` -**NOTE**: As said above, Aligned currently supports Risc0 proofs from `risc0-zkvm` version `v1.1.2`. For generating proofs using `cargo risc-zero` please ensure you are using `v1.1.2` or your proof will not be verified. +**NOTE**: As said above, Aligned currently supports Risc0 proofs from `risc0-zkvm` version `v3.0.3`. For generating proofs using `cargo risc-zero` please ensure you are using `v3.0.3` or your proof will not be verified. -If you can't install `cargo-risczero` `v1.1.2`, you can manually modify your `cargo.toml` on the host project to point to `v1.1.2`: +If you can't install `cargo-risczero` `v3.0.3`, you can manually modify your `cargo.toml` on the host project to point to `v3.0.3`: ```toml -risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v1.1.2", default-features = false, features = [ +risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v3.0.3", default-features = false, features = [ "prove", ] } ``` @@ -190,33 +193,31 @@ risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v1.1.2", default-f rm -rf ~/.aligned/aligned_verification_data/ && aligned submit \ --proving_system Risc0 \ ---proof ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.proof \ ---vm_program ./scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id.bin \ ---public_input ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.pub \ ---batcher_url wss://batcher.alignedlayer.com \ +--proof ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof \ +--vm_program ./scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ +--public_input ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub \ --aligned_verification_data_path ~/.aligned/aligned_verification_data \ --keystore_path ~/.aligned_keystore/keystore0 \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` -### GnarkPlonkBn254, GnarkPlonkBls12_381 and Groth16Bn254 +### GnarkPlonkBn254, GnarkPlonkBls12_381 and GnarkGroth16Bn254 -The GnarkPlonkBn254, GnarkPlonkBls12_381 and Groth16Bn254 proofs need the proof file, the public input file and the verification key file. +The GnarkPlonkBn254, GnarkPlonkBls12_381 and GnarkGroth16Bn254 proofs need the proof file, the public input file and the verification key file. ```bash rm -rf ./aligned_verification_data/ && aligned submit \ ---proving_system \ +--proving_system \ --proof \ --public_input \ --vk \ ---batcher_url wss://batcher.alignedlayer.com \ --proof_generator_addr [proof_generator_addr] \ --batch_inclusion_data_directory_path [batch_inclusion_data_directory_path] \ --keystore_path \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` **Examples**: @@ -225,37 +226,65 @@ aligned submit \ rm -rf ./aligned_verification_data/ && aligned submit \ --proving_system GnarkPlonkBn254 \ ---proof ./scripts/test_files/gnark_plonk_bn254_script/plonk.proof \ ---public_input ./scripts/test_files/gnark_plonk_bn254_script/plonk_pub_input.pub \ ---vk ./scripts/test_files/gnark_plonk_bn254_script/plonk.vk \ ---batcher_url wss://batcher.alignedlayer.com \ +--proof ./scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.proof \ +--public_input ./scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_pub_input_0_12_0.pub \ +--vk ./scripts/test_files/gnark_plonk_bn254_script/gnark_plonk_0_12_0.vk \ --keystore_path ~/.aligned_keystore/keystore0 \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` ```bash rm -rf ./aligned_verification_data/ && aligned submit \ --proving_system GnarkPlonkBls12_381 \ ---proof ./scripts/test_files/gnark_plonk_bls12_381_script/plonk.proof \ ---public_input ./scripts/test_files/gnark_plonk_bls12_381_script/plonk_pub_input.pub \ ---vk ./scripts/test_files/gnark_plonk_bls12_381_script/plonk.vk \ ---batcher_url wss://batcher.alignedlayer.com \ +--proof ./scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.proof \ +--public_input ./scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_pub_input_0_12_0.pub \ +--vk ./scripts/test_files/gnark_plonk_bls12_381_script/gnark_plonk_0_12_0.vk \ --keystore_path ~/.aligned_keystore/keystore0 \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` ```bash rm -rf ./aligned_verification_data/ && aligned submit \ ---proving_system Groth16Bn254 \ ---proof ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_1_groth16.proof \ ---public_input ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_1_groth16.pub \ ---vk ./scripts/test_files/gnark_groth16_bn254_infinite_script/infinite_proofs/ineq_1_groth16.vk \ ---batcher_url wss://batcher.alignedlayer.com \ +--proving_system GnarkGroth16Bn254 \ +--proof ./scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.proof \ +--public_input ./scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.pub \ +--vk ./scripts/test_files/gnark_groth16_bn254_script/gnark_groth16_0_12_0.vk \ --keystore_path ~/.aligned_keystore/keystore0 \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com +``` + +### CircomGroth16Bn256 + +The CircomGroth16Bn256 proof needs the proof file, the public input file and the verification key file. + +```bash +rm -rf ./aligned_verification_data/ && +aligned submit \ +--proving_system CircomGroth16Bn256 \ +--proof \ +--public_input \ +--vk \ +--proof_generator_addr [proof_generator_addr] \ +--batch_inclusion_data_directory_path [batch_inclusion_data_directory_path] \ +--keystore_path \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com +``` +**Example** + +```bash +rm -rf ./aligned_verification_data/ && +aligned submit \ +--proving_system CircomGroth16Bn256 \ +--proof ./scripts/test_files/circom_groth16_bn256_script/proof.json \ +--public_input ./scripts/test_files/circom_groth16_bn256_script/public.json \ +--vk ./scripts/test_files/circom_groth16_bn256_script/verification_key.json \ +--keystore_path ~/.aligned_keystore/keystore0 \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` diff --git a/docs/3_guides/1.2_SDK_api_reference.md b/docs/3_guides/1.2_SDK_api_reference.md index 264243aba9..8d938cf104 100644 --- a/docs/3_guides/1.2_SDK_api_reference.md +++ b/docs/3_guides/1.2_SDK_api_reference.md @@ -8,10 +8,9 @@ Submits a proof to the batcher to be verified and returns an aligned verificatio ```rust pub async fn submit( - batcher_url: &str, network: Network, verification_data: &VerificationData, - max_fee; U256, + max_fee: U256, wallet: Wallet, nonce: U256, ) -> Result @@ -19,11 +18,7 @@ pub async fn submit( #### Arguments -- `batcher_url` - The url of the batcher to which the proof will be submitted: - - mainnet: `wss://mainnet.batcher.alignedlayer.com` - - holesky: `wss://batcher.alignedlayer.com` - - devnet: `ws://localhost:8080` -- `network` - The network on which the proof will be submitted (`devnet | holesky | mainnet`) +- `network` - The network on which the proof will be submitted (`devnet | holesky | mainnet | hoodi`) - `verification_data` - The verification data for the proof. - `max_fee` - The maximum fee that the submitter is willing to pay for the proof verification. - `wallet` - The wallet used to sign the proof. Should be using correct chain id. See `get_chain_id`. @@ -49,6 +44,7 @@ pub async fn submit( - `InsufficientBalance` if the sender balance is not enough or unlocked - `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. - `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. +- `ProofReplaced` if the proof has been replaced. - `GenericError` if the error doesn't match any of the previous ones. ### `submit_multiple` @@ -57,10 +53,9 @@ Submits multiple proofs to the batcher to be verified and returns an aligned ver ```rust pub async fn submit_multiple( - batcher_url: &str, network: Network, verification_data: &[VerificationData], - max_fees: &[U256], + max_fee: U256, wallet: Wallet, nonce: U256, ) -> Result, errors::SubmitError> @@ -68,16 +63,11 @@ pub async fn submit_multiple( #### Arguments -- `batcher_url` - The url of the batcher to which the proof will be submitted: - - mainnet: `wss://mainnet.batcher.alignedlayer.com` - - holesky: `wss://batcher.alignedlayer.com` - - devnet: `ws://localhost:8080` -- `network` - The network on which the proof will be submitted (`devnet | holesky | mainnet`) +- `network` - The network on which the proof will be submitted (`devnet | holesky | mainnet | hoodi`) - `verification_data` - A verification data array. -- `max_fees` - A max fee array. +- `max_fee` - The maximum fee that the submitter is willing to pay for the verification for each proof. - `wallet` - The wallet used to sign the proof. Should be using correct chain id. See `get_chain_id`. - `nonce` - The nonce of the submitter address. See `get_nonce_from_ethereum`. -- `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. #### Returns @@ -98,7 +88,7 @@ pub async fn submit_multiple( - `ProofTooLarge` if the proof is too large. - `InsufficientBalance` if the sender balance is not enough or unlocked - `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. -- `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. +- `ProofReplaced` if the proof has been replaced. - `GenericError` if the error doesn't match any of the previous ones. ### `submit_and_wait_verification` @@ -108,7 +98,6 @@ verification data struct. ```rust pub async fn submit_and_wait_verification( - batcher_url: &str, eth_rpc_url: &str, network: Network, verification_data: &VerificationData, @@ -120,18 +109,12 @@ pub async fn submit_and_wait_verification( #### Arguments -- `batcher_url` - The url of the batcher to which the proof will be submitted - - mainnet: `wss://mainnet.batcher.alignedlayer.com` - - holesky: `wss://batcher.alignedlayer.com` - - devnet: `ws://localhost:8080` - `eth_rpc_url` - The URL of the Ethereum RPC node. -- `network` - The network on which the verification will be done (`devnet | holesky | mainnet`) +- `network` - The network on which the verification will be done (`devnet | holesky | mainnet | hoodi`) - `verification_data` - The verification data for the proof. - `max_fee` - The maximum fee that the submitter is willing to pay for the proof verification. - `wallet` - The wallet used to sign the proof. Should be using correct chain id. See `get_chain_id`. - `nonce` - The nonce of the submitter address. See `get_nonce_from_ethereum`. -- `payment_service_addr` - The address of the batcher payment service contract. -- `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. #### Returns @@ -156,6 +139,7 @@ pub async fn submit_and_wait_verification( - `InsufficientBalance` if the sender balance is not enough or unlocked - `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. - `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. +- `ProofReplaced` if the proof has been replaced. - `GenericError` if the error doesn't match any of the previous ones. ### `submit_multiple_and_wait_verification` @@ -164,30 +148,23 @@ Submits multiple proofs to the batcher for verification, waits for verification ```rust pub async fn submit_multiple_and_wait_verification( - batcher_url: &str, eth_rpc_url: &str, network: Network, verification_data: &[VerificationData], + max_fee: U256, wallet: Wallet, - nonce: U256, - payment_service_addr: &str, + nonce: U256 ) -> Vec> ``` #### Arguments -- `batcher_url` - The url of the batcher to which the proof will be submitted: - - mainnet: `wss://mainnet.batcher.alignedlayer.com` - - holesky: `wss://batcher.alignedlayer.com` - - devnet: `ws://localhost:8080` - `eth_rpc_url` - The URL of the Ethereum RPC node. -- `network` - The network on which the verification will be done (`devnet | holesky | mainnet`) +- `network` - The network on which the verification will be done (`devnet | holesky | mainnet | hoodi`) - `verification_data` - A verification data array. -- `max_fees` - A max fee array. +- `max_fee` - The maximum fee that the submitter is willing to pay for the proof verification. - `wallet` - The wallet used to sign the proof. Should be using correct chain id. See `get_chain_id`. - `nonce` - The nonce of the submitter address. See `get_nonce_from_ethereum`. -- `payment_service_addr` - The address of the batcher payment service contract. -- `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. #### Returns @@ -212,6 +189,7 @@ pub async fn submit_multiple_and_wait_verification( - `InsufficientBalance` if the sender balance is not enough or unlocked - `ProofQueueFlushed` if there is an error in the batcher and the proof queue is flushed. - `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. +- `ProofReplaced` if the proof has been replaced. - `GenericError` if the error doesn't match any of the previous ones. ### `is_proof_verified` @@ -222,17 +200,15 @@ Checks if the proof has been verified with Aligned and is included in the batch pub async fn is_proof_verified( aligned_verification_data: AlignedVerificationData, network: Network, - eth_rpc_url: &str, - payment_service_addr: &str, + eth_rpc_url: &str ) -> Result ``` #### Arguments - `aligned_verification_data` - The aligned verification data obtained when submitting the proofs. -- `network` - The network on which the verification will be done (`devnet | holesky | mainnet`) +- `network` - The network on which the verification will be done (`devnet | holesky | mainnet | hoodi`) - `eth_rpc_url` - The URL of the Ethereum RPC node. -- `payment_service_addr` - The address of the batcher payment service contract. #### Returns @@ -245,24 +221,6 @@ pub async fn is_proof_verified( - `EthereumCallError` if there is an error in the Ethereum call. - `HexDecodingError` if there is an error decoding the Aligned service manager contract address. -### `get_commitment` - -Generates a keccak256 hash commitment of the verification key. - -```rust -pub fn get_commitment( - content: &[u8] -) -> [u8; 32] -``` - -#### Arguments - -- `content` - A byte slice of the verification key. - -#### Returns - -- `[u8; 32]` - A 32-byte array representing the keccak256 hash of the verification key. - ### `get_nonce_from_ethereum` Returns the nonce for a given address in Ethereum from aligned payment service contract. @@ -279,8 +237,8 @@ pub async fn get_nonce_from_ethereum( #### Arguments - `eth_rpc_url` - The URL of the Ethereum RPC node. -- `submitter_addr` - The address of the proof submitter for which the nonce will be retrieved. -- `network` - The network on which the proof will be submitted +- `submitter_addr` - The user address for which the nonce will be retrieved. +- `network` - The network from which the nonce will be retrieved. #### Returns @@ -288,9 +246,7 @@ pub async fn get_nonce_from_ethereum( #### Errors -- `EthereumProviderError` if there is an error in the connection with the RPC provider. -- `EthereumCallError` if there is an error in the Ethereum call. -- `NotAContract(address)` if you are trying to send to an address that is not a contract. This generally occurs if you have misconfigured the `environment` parameter. +- `EthRpcError` if the batcher has an error in the Ethereum call when retrieving the nonce if not already cached. ### `get_nonce_from_batcher` @@ -301,17 +257,13 @@ as the batcher proofs might not yet be on ethereum, producing an out-of-sync non ```rust pub async fn get_nonce_from_batcher( - batcher_ws_url: &str, + network: Network, address: Address, ) -> Result { ``` #### Arguments - -- `batcher_url` - The batcher websocket url: - - mainnet: `wss://mainnet.batcher.alignedlayer.com` - - holesky: `wss://batcher.alignedlayer.com` - - devnet: `ws://localhost:8080` +- `network` - The network from which the nonce will be retrieved. - `address` - The user address for which the nonce will be retrieved. #### Returns @@ -322,14 +274,53 @@ pub async fn get_nonce_from_batcher( - `EthRpcError` if the batcher has an error in the Ethereum call when retrieving the nonce if not already cached. +### `get_last_max_fee` + +Retrieves the `max_fee` of the proof with the highest nonce in the batcher queue for a given address. + +This value represents the maximum fee limit that can be used when submitting the next proof. To increase the fee limit for a new proof, you must first bump the fee of the previous proofs queued in the batcher. + +Read more here: https://docs.alignedlayer.com/architecture/1_proof_verification_layer/1_batcher#max-fee-priority-queue + +```rust +pub async fn get_last_max_fee( + network: Network, + address: Address, +) -> Result +``` + +#### Arguments + +- `network` - The network from which to retrieve the last `max_fee`. +- `address` - The user address whose last `max_fee` will be retrieved. + +#### Returns + +- `Result` - The `max_fee` of the proof with the highest nonce for the given user, or `U256::MAX` if the user has no proofs in the queue. + +#### Errors + +- `ConnectionFailed` if there is an error connecting to the batcher. +- `ProtocolMismatch` if the protocol version doesn't match. +- `SerializationError` if there is an error serializing/deserializing the message. +- `InvalidRequest` if the request is invalid. +- `UnexpectedResponse` if the batcher responds with an unexpected message. +- `GenericError` if the error doesn't match any of the previous ones. + +#### Notes + +- Returns `U256::MAX` (2^256 - 1) when no proofs are present in the queue for the user. + ### `get_chain_id` -Returns the chain id for a given rpc url. +Returns the chain ID for a given rpc url. -Should be used before submitting proofs to the batcher. Wallet chain id needs to be set with: +Should be used before submitting proofs to the batcher. ```rust -wallet = wallet.with_chain_id(chain_id); +pub async fn get_chain_id( + eth_rpc_url: &str +) -> Result ``` #### Arguments @@ -338,13 +329,19 @@ wallet = wallet.with_chain_id(chain_id); #### Returns -- `Result` - The nonce to use or an error. +- `Result` - The chain ID to use or an error. #### Errors - `EthereumProviderError` if there is an error in the connection with the RPC provider. - `EthereumCallError` if there is an error in the Ethereum call. +Wallet chain ID needs to be set with: + +```rust +wallet = wallet.with_chain_id(chain_id); +``` + ### `estimate_fee` Estimates the fee the user would have to pay for submitting a proof to Aligned. Depending on the @@ -353,15 +350,14 @@ priority the user wants to have in the batch, the `estimate` parameter can be se ```rust pub async fn estimate_fee( eth_rpc_url: &str, - estimate: PriceEstimate, + fee_estimation_type: FeeEstimationType, ) -> Result ``` #### Arguments - `eth_rpc_url` - The URL of the Ethereum RPC node. -- `estimate` - The parameter to set the priority for the proof to be included in the batch. It can be one - of `Min`, `Default` or `Max`. +- `fee_estimation_type` - Enum specifying the type of price estimate: Default, Instant. Custom(usize) #### Returns @@ -372,61 +368,58 @@ pub async fn estimate_fee( - `EthereumProviderError` if there is an error in the connection with the RPC provider. - `EthereumCallError` if there is an error in the Ethereum call. -### `compute_max_fee` +### `estimate_fee_per_proof_with_rpc` -Computes `max_fee` for a proof based on the number of proofs in a batch (`num_proofs_per_batch`) and number of proofs (`num_proofs`) in that batch the user would pay for i.e (`num_proofs` / `num_proofs_per_batch`). +Returns the `fee_per_proof` based on the current gas price for a batch compromised of `num_proofs_per_batch` ```rust -pub async fn compute_max_fee( +pub async fn estimate_fee_per_proof_with_rpc( + num_proofs_in_batch: usize, eth_rpc_url: &str, - num_proofs: usize, - num_proofs_per_batch: usize, -) -> Result +) -> Result ``` #### Arguments -- `eth_rpc_url` - The URL of the Ethereum RPC node. -- `num_proofs` - The number of proofs in a batch the user would pay for. -- `num_proofs_per_batch` - The number of proofs within a batch. +- `num_proofs_in_batch` - number of proofs within a batch. +- `eth_rpc_url` - The URL of the users Ethereum RPC node. #### Returns -- `Result` - The calculated `max_fee` as a `U256`. +- `Result` - The fee per proof of a batch as a `U256`. #### Errors -- `EthereumProviderError` if there is an error in the connection with the RPC provider. -- `EthereumCallError` if there is an error in the Ethereum call. +-`EthereumProviderError` if there is an error in the connection with the RPC provider. +-`EthereumGasPriceError` if there is an error retrieving the Ethereum gas price. -### `fee_per_proof` +### `calculate_fee_per_proof_with_gas_price` -Returns the `fee_per_proof` based on the current gas price for a batch compromised of `num_proofs_per_batch` i.e. (1 / `num_proofs_per_batch`). +Calculates the fee per proof based on a given batch size and gas price. This is a pure calculation function that doesn't make any network calls. ```rust -pub async fn fee_per_proof( - eth_rpc_url: &str, - num_proofs_per_batch: usize, -) -> Result +pub fn calculate_fee_per_proof_with_gas_price( + num_proofs_in_batch: usize, + gas_price: U256 +) -> U256 ``` #### Arguments -- `eth_rpc_url` - The URL of the users Ethereum RPC node. -- `num_proofs_per_batch` - The number of proofs within a batch. +- `num_proofs_in_batch` - number of proofs within a batch. +- `gas_price` - Current gas price (in wei). #### Returns -- `Result` - The fee per proof of a batch of `num_proofs_per_batch` proofs as a `U256`. +- `U256` - The estimated fee per individual proof (in wei). -#### Errors +#### Notes -- `EthereumProviderError` if there is an error in the connection with the RPC provider. -- `EthereumCallError` if there is an error in the Ethereum call. +This function is used internally by both `estimate_fee` and `estimate_fee_per_proof_with_rpc`. It performs the core fee calculation logic without any network dependencies. ### `deposit_to_aligned` -Funds the batcher payment service in name of the signer +Funds the batcher payment service in name of the signer. ```Rust pub async fn deposit_to_aligned( @@ -475,3 +468,171 @@ pub async fn get_balance_in_aligned( - `EthereumProviderError` if there is an error in the connection with the RPC provider. - `EthereumCallError` if there is an error in the Ethereum call. + +### `lock_balance_in_aligned` + +Locks the balance of a user in the Aligned payment service. + +```rust +pub async fn lock_balance_in_aligned( + signer: &SignerMiddleware, LocalWallet>, + network: Network, +) -> Result +``` + +#### Arguments + +- `signer` - The signer middleware containing the user's wallet and provider. +- `network` - The network on which the lock operation will be performed. + +#### Returns + +- `Result` - The transaction receipt of the lock operation. + +#### Description + +This function locks the user's balance, preventing it from being withdrawn. Locked balances can be used for proof verification payments but cannot be withdrawn until they are unlocked using `unlock_balance_in_aligned` and the lock period expires. + +#### Errors + +- `SendError` if there is an error sending the transaction. +- `SubmitError` if there is an error submitting the transaction. + +### `unlock_balance_in_aligned` + +Unlocks the balance of a user in the Aligned payment service. + +```rust +pub async fn unlock_balance_in_aligned( + signer: &SignerMiddleware, LocalWallet>, + network: Network, +) -> Result +``` + +#### Arguments + +- `signer` - The signer middleware containing the user's wallet and provider. +- `network` - The network on which the unlock operation will be performed. + +#### Returns + +- `Result` - The transaction receipt of the unlock operation. + +#### Description + +This function initiates an unlock request for the user's balance. After calling this function, the user's balance will be locked for a certain period before it can be withdrawn. Use `get_unlock_block_time` to check when the balance can be withdrawn. + +#### Errors + +- `SendError` if there is an error sending the transaction. +- `SubmitError` if there is an error submitting the transaction. + +### `get_unlock_block_time` + +Returns the timestamp when a user's balance will be unlocked and available for withdrawal. + +```rust +pub async fn get_unlock_block_time( + user: Address, + eth_rpc_url: &str, + network: Network, +) -> Result +``` + +#### Arguments + +- `user` - The address of the user to check the unlock time for. +- `eth_rpc_url` - The URL of the Ethereum RPC node. +- `network` - The network on which to check the unlock time. + +#### Returns + +- `Result` - The timestamp when the user's balance will be unlocked. + +#### Description + +After calling `unlock_balance_in_aligned`, users must wait for the lock period before they can withdraw their funds using `withdraw_balance_from_aligned`. + +#### Errors + +- `EthereumProviderError` if there is an error in the connection with the RPC provider. +- `EthereumCallError` if there is an error in the Ethereum call. + +### `withdraw_balance_from_aligned` + +Withdraws a specified amount from the user's balance in the Aligned payment service. + +```rust +pub async fn withdraw_balance_from_aligned( + signer: &SignerMiddleware, LocalWallet>, + network: Network, + amount: U256, +) -> Result +``` + +#### Arguments + +- `signer` - The signer middleware containing the user's wallet and provider. +- `network` - The network on which the withdrawal will be performed. +- `amount` - The amount to withdraw from the user's balance. + +#### Returns + +- `Result` - The transaction receipt of the withdrawal operation. + +#### Description + +This function can only be called after the balance has been unlocked using `unlock_balance_in_aligned` and the lock period has expired. Use `get_unlock_block_time` to check when the withdrawal becomes available. + +#### Errors + +- `SendError` if there is an error sending the transaction. +- `SubmitError` if there is an error submitting the transaction. + +### `get_vk_commitment` + +Returns the commitment for the verification key, taking into account the corresponding proving system. + +```rust +pub fn get_vk_commitment( + verification_key_bytes: &[u8], + proving_system: ProvingSystemId, +) -> [u8; 32] +``` + +#### Arguments + +- `verification_key_bytes` - The serialized contents of the verification key. +- `proving_system` - The corresponding proving system ID. + +#### Returns + +- `[u8; 32]` - The commitment. + +#### Errors + +- None. + +### `save_response` + +Saves AlignedVerificationData in a file. + +```rust +pub fn save_response( + batch_inclusion_data_directory_path: PathBuf, + aligned_verification_data: &AlignedVerificationData, +) -> Result<(), errors::FileError> +``` + +#### Arguments + +-`batch_inclusion_data_directory_path` - The path of the directory where the data will be saved. +-`aligned_verification_data` - The aligned verification data to be saved. + +#### Returns + +- `Result<(), errors::FileError>` - Ok if the data is saved successfully. + +#### Errors + +- `FileError` if there is an error writing the data to the file. diff --git a/docs/3_guides/1.3_SDK_api_reference_aggregation.md b/docs/3_guides/1.3_SDK_api_reference_aggregation.md new file mode 100644 index 0000000000..5ce413ba27 --- /dev/null +++ b/docs/3_guides/1.3_SDK_api_reference_aggregation.md @@ -0,0 +1,36 @@ +# Aligned SDK + +## API Reference for aggregation mode + +### `is_proof_verified_in_aggregation_mode` + +Checks if the proof has been verified with Aligned Aggregation Mode. + +```rust +pub async fn is_proof_verified_in_aggregation_mode( + verification_data: AggregationModeVerificationData, + network: Network, + eth_rpc_url: &str, + beacon_client_url: &str, + from_block: Option +) -> Result<[u8; 32], ProofVerificationAggModeError> +``` + +#### Arguments + +- `verification_data` - The verification data needed based on the provided proving system. +- `network` - The network on which the verification will be done (`devnet | holesky | mainnet | hoodi`) +- `eth_rpc_url` - The URL of the Ethereum RPC node. + +#### Returns + +- `Result<[u8; 32], ProofVerificationAggModeError>` - The merkle root of the aggregated proof. + +#### Errors + +- `ProvingSystemNotSupportedInAggMode` if the proving system is not supported (Currently, only SP1 compressed proofs are supported). +- `EthereumProviderError` if there is an error in the Ethereum call. +- `BeaconClient` if there is an error in the Beacon client call. +- `UnmatchedBlobAndEventMerkleRoot` if the proof was in included in the blob but the merkle root did not match with the one in the contract +- `ProofNotFoundInLogs` if the proof was not found in any of the aggregated proofs from the specified block_number +- `EventDecoding`: if it failed to decode an event from the ProofAggregationService diff --git a/docs/3_guides/1_SDK_how_to.md b/docs/3_guides/1_SDK_how_to.md index 9a98784cb5..009721db29 100644 --- a/docs/3_guides/1_SDK_how_to.md +++ b/docs/3_guides/1_SDK_how_to.md @@ -12,7 +12,7 @@ To use this SDK in your Rust project, add the following to your `Cargo.toml`: ```toml [dependencies] -aligned-sdk = { git = "https://github.com/yetanotherco/aligned_layer", tag="v0.14.0" } +aligned-sdk = { git = "https://github.com/yetanotherco/aligned_layer", tag="v0.20.0" } ``` To find the latest release tag go to [releases](https://github.com/yetanotherco/aligned_layer/releases) and copy the @@ -23,8 +23,8 @@ version of the release that has the `latest` badge. To get the SDK up and running in your project, you must first import it ```rust -use aligned_sdk::core::types::{PriceEstimate, AlignedVerificationData, Network, ProvingSystemId, VerificationData}; -use aligned_sdk::sdk::{estimate_fee, submit_and_wait, get_nonce_from_ethereum}; +use aligned_sdk::common::types::{PriceEstimate, AlignedVerificationData, Network, ProvingSystemId, VerificationData}; +use aligned_sdk::verification_layer::{estimate_fee, submit_and_wait, get_nonce_from_ethereum}; ``` And then you can do a simple call of, for example, `get_nonce_from_ethereum` @@ -51,8 +51,6 @@ Or you can make a more complex call to submit a proof: (code extract from [ZKQuiz example](../3_guides/2_build_your_first_aligned_application.md#app)) ```rust -const BATCHER_URL: &str = "wss://batcher.alignedlayer.com"; - fn main() { let rpc_url = args.rpc_url.clone(); let verification_data = VerificationData { @@ -74,7 +72,6 @@ fn main() { // Call to SDK: match submit_and_wait_verification( - BATCHER_URL, &rpc_url, Network::Holesky, &verification_data, diff --git a/docs/3_guides/2.2_modify_zkquiz_questions.md b/docs/3_guides/2.2_modify_zkquiz_questions.md index bdba32f73d..74fd7924a2 100644 --- a/docs/3_guides/2.2_modify_zkquiz_questions.md +++ b/docs/3_guides/2.2_modify_zkquiz_questions.md @@ -74,7 +74,7 @@ if output ## 3. Compile the Program Now we need to compile the updated Program, generating the binary file that will be run by the zkVM (ELF). -For this, ensure that the [SP1 Rust toolchain](https://docs.succinct.xyz/introduction.html) is installed. Run: +For this, ensure that the [SP1 Rust toolchain](https://docs.succinct.xyz/docs/sp1/introduction) is installed. Run: ``` make compile_elf diff --git a/docs/3_guides/2_build_your_first_aligned_application.md b/docs/3_guides/2_build_your_first_aligned_application.md index d37d86db6c..8cbe95acce 100644 --- a/docs/3_guides/2_build_your_first_aligned_application.md +++ b/docs/3_guides/2_build_your_first_aligned_application.md @@ -31,7 +31,7 @@ Next, we will see how to execute ZKQuiz to get your own ZKQuiz NFT! 2. [Foundry](https://getfoundry.sh) {% hint style="info" %} -ELF commitment was generated with Rust v1.80.1 and SP1 v3.0.0. +ELF commitment was generated with Rust v1.80.1 and SP1 v4.1.7. {% endhint %} ### Usage @@ -96,7 +96,7 @@ ZkQuiz has three main components: The user interacts with ZkQuiz App to solve a trivia challenge answering questions. Then, the App generates a Zk Proof with the Program generated using SP1. {% hint style="info" %} -The ZkQuiz Program is built using SP1 following the [quickstart guide](https://docs.succinct.xyz/getting-started/quickstart.html#project-overview). For your projects, you can user any of the [prooving systems supported by Aligned](../2_architecture/0_supported_verifiers.md). +The ZkQuiz Program is built using SP1 following the [quickstart guide](https://docs.succinct.xyz/docs/sp1/getting-started/quickstart). For your projects, you can user any of the [prooving systems supported by Aligned](../2_architecture/0_supported_verifiers.md). {% endhint %} Once the proof is generated, the App sends the proof to Aligned, and once it is verified, the App calls to the ZkQuiz Verifier Contract to check the proof verification and send an NFT to the user is the proof was verified in Aligned. @@ -237,7 +237,7 @@ println!("Generating Proof "); let client = ProverClient::new(); let (pk, vk) = client.setup(ELF); -let Ok(proof) = client.prove(&pk, stdin).run() else { +let Ok(proof) = client.prove(&pk, stdin).compressed().run() else { println!("Incorrect answers!"); return; }; @@ -277,7 +277,6 @@ let nonce = get_nonce_from_ethereum(&rpc_url, wallet.address(), NETWORK) // Submit to Aligned. let aligned_verification_data = submit_and_wait_verification( - BATCHER_URL, &rpc_url, NETWORK, &verification_data, diff --git a/docs/3_guides/3.1_aggregation_mode.md b/docs/3_guides/3.1_aggregation_mode.md new file mode 100644 index 0000000000..b885c07062 --- /dev/null +++ b/docs/3_guides/3.1_aggregation_mode.md @@ -0,0 +1,208 @@ +## Proof Aggregation Service L2 integration example + +This guide demonstrates how to build a dummy L2 application that integrates with Aligned's Proof Aggregation Service. The L2 does not post state diffs or any data to Ethereum, only commitments. The prover has to prove that: + +1. The state database used in the proof must match the commitment stored in the on-chain contract. This is validated by computing the commitment of the received data in the zkvm and then exposing it as a public input. +2. The users performing the transfers have enough balance + +After processing the transfers, the vm computes the commitment of the post state, which is exposed as a public input. The smart contract then updates the on-chain state root. If a user later wants to retrieve their state, the application must return it along with a Merkle proof, so they can verify it against the contract’s state root. + +Notice a lot of checks that a real L2 should have are missing, since the focus are on the integration of Aligned. + +The code can be viewed at `examples/l2`. + +## L2 workflow overview + +This Layer 2 (L2) system operates in two main steps: + +- Off-chain execution and proof generation + verification with Aligned's Proof Verification Layer. +- On-chain state update via proof verification with Aligned's Proof Aggregation Service. + +In Step 1, we execute user transfers and generate a zkVM-based proof of the state transition, which is submitted to Aligned’s verification layer. + +In Step 2, once the proof is aggregated (every 24 hours), it is verified on-chain to update the global state. + +### Step 1: Off-Chain Execution + Proof Generation + +1. Initialize State: Load or initialize the current system state. +2. Load Transfers: Retrieve or receive the user transfer data for this batch. +3. Execute in zkVM: Run the zkVM with the loaded transfers to compute the new state. +4. Generate Proof: Produce a zk-proof for the executed state transition committing the commitment of the received + the commitment of the new state. +5. Submit Proof to Aligned: Send the proof to Aligned Verification Layer +6. Save the binary proof locally for later on-chain verification. + +### Step 2: Proof Verification + On-Chain State Update + +7. Load the proof binary: Retrieve the saved proof binary from disk. +8. Update On-Chain State: Call the smart contract method `updateStateTransition`, which: + + - Internally calls `verifyProofInclusion` on AlignedProofAggregationService which: + 1. Computes the proof commitment from the proof `public_inputs` and `program_id`. + 2. Uses the Merkle proof to reconstruct and validate the Merkle root. + 3. Confirms whether there exists and aggregated proof with that root. + - Validates that the `initial_state_root` proof public input matches the on-chain state. + - If valid, updates the on-chain state root to the `post_state_root`. + +# Usage + +### Requirements + +1. [Rust](https://www.rust-lang.org/tools/install): we have tested in v1.85.1 +2. [Foundry](https://book.getfoundry.sh/getting-started/installation) +3. [Docker](https://docs.docker.com/engine/): for SP1 prover + +Submodules of the repo should be imported by running on the root folder: + +```shell +make submodules +``` + +You can run the example on: + +- [Holesky](#setup-holeksy) +- [Localnet](#setup-localnet) + +## Setup Holeksy + +### 1. Create keystore + +You can use cast to create a local keystore. If you already have one you can skip this step. + +```bash +cast wallet new-mnemonic +``` + +Then you can import your created keystore using: + +```bash +cast wallet import --interactive +``` + +Then you need to obtain some funds to pay for gas and proof verification. +You can do this by using this [faucet](https://cloud.google.com/application/web3/faucet/ethereum/holesky) + +_This same wallet is used to send the proof via aligned, so you'll also need to fund it on aligned. Follow this [guide](https://docs.alignedlayer.com/guides/0_submitting_proofs#id-2.-send-funds-to-aligned)._ + +### 2. Deploy the contract + +- Generate the base `.env`: + +```shell +make gen_env_contract_holesky +``` + +- Get the program ID of the l2 program you are proving: + +```shell +make generate_program_id +``` + +- Complete the following fields `contracts/.env` file: + + - `PROGRAM_ID=` (use the previously generated ID, you can re check with a `cat ./crates/l2/programs_ids.json` ) + - `PRIVATE_KEY`: the private key used for the deployment, it needs to have some funds to pay for the deployment. + - `OWNER_ADDRESS`: you have to provide the _address of the wallet created in step `1.`_. + +- Deploy the contracts with: + +```shell +make deploy_contract +``` + +_Save the output contract address._ + +### 3. Setup the L2 + +- Generate the base `.env` run: + +```shell +make gen_env_l2_holesky +``` + +- Complete the missing fields on the `.env`: + + - `PRIVATE_KEY_STORE_PATH`: The path to the keystore created in `1.`. + - `PRIVATE_KEY_STORE_PASSWORD`: The password of the keystore crated in step `1.`. + - `STATE_TRANSITION_CONTRACT_ADDRESS`: The address of the contract deployed in step `2.` + +Finally [run the l2](#running-the-l2). + +## Setup Localnet + +You can also run this example on a local devnet. To get started, navigate to the root of the Aligned repository + +- Start Ethereum package and the Batcher + +```shell +# This will start the local net +make ethereum_package_start +# Start the batcher +make batcher_start_ethereum_package +``` + +- Navigate back to the example directory: + +```shell +cd examples/l2 +``` + +- Generate the `.env` files for the contracts and L2: + +```shell +make gen_env_contract_devnet +make gen_env_l2_devnet +``` + +- Generate a pre funded wallet (or create one as specified [previously here](#1-create-keystore)): + +```shell +# This will generate the keystore and fund it on aligned +make gen_devnet_owner_wallet +``` + +- Generate the program ID of the program that is going to be proven: + +```shell +make generate_program_id +``` + +- Set the generated program ID on `contracts/.env`. + +- Deploy the contract + +```shell +make deploy_contract +``` + +- Set the output address of the contract in `.env` + +- [run the l2](#running-the-l2) + +## Running the L2 + +- Set up the initial State + +```shell +make init_state +``` + +- Perform the L2 account updates and prove them in the zkvm: + +```shell +make prove_state_transition +``` + +- Wait 24 hs for the proof to be aggregated, or if running locally, run the aggregator with either: + + ```make start_proof_aggregator_ethereum_package AGGREGATOR=sp1``` + + or with cuda: + `make start_proof_aggregator_gpu_ethereum_package AGGREGATOR=sp1` + +- Update state transition on chain: + +```shell +make update_state_on_chain +``` + +You should see a transaction receipt in the console and after the stateRoot updated on-chain. diff --git a/docs/3_guides/3.2_generate_gnark_proof.md b/docs/3_guides/3.2_generate_gnark_proof.md index f53b895984..a92f1e82fe 100644 --- a/docs/3_guides/3.2_generate_gnark_proof.md +++ b/docs/3_guides/3.2_generate_gnark_proof.md @@ -15,7 +15,7 @@ - 3 Install Gnark: Add the library to your project ```bash= - go get github.com/consensys/gnark@v0.10.0 + go get github.com/consensys/gnark@v0.12.0 ``` ## Step 2: Import dependencies diff --git a/docs/3_guides/3_validating_public_input.md b/docs/3_guides/3_validating_public_input.md index fcd43954bc..092b3a7a81 100644 --- a/docs/3_guides/3_validating_public_input.md +++ b/docs/3_guides/3_validating_public_input.md @@ -7,7 +7,7 @@ This guide demonstrates how to validate Risc0 and SP1 proofs using the Aligned S In this case, the Fibonacci number to be calculated is **500** and the last two numbers of the sequence modulo 7919 are **1268** and **1926**. ## Requirements -- [SP1](https://docs.succinct.xyz/getting-started/install.html) +- [SP1](https://docs.succinct.xyz/docs/sp1/getting-started/install) - [Risc0](https://dev.risczero.com/api/zkvm/install) - [Foundry](https://book.getfoundry.sh/getting-started/installation) @@ -29,7 +29,7 @@ For `SP1`, the Fibonacci program is located in `examples/validating-public-input > [!IMPORTANT] > To generate the proof ensure you have [docker](https://www.docker.com/get-started/) installed and the docker daemon running. -> This is necessary to ensure deterministic builds of the binary we want to generate a proof of. If not used, builds may differ depending on the system you are running on. To know more about this, check [this link](https://dev.risczero.com/terminology#deterministic-builds) from RiscZero docs or [this](https://docs.succinct.xyz/writing-programs/compiling.html#advanced-build-options-1) from SP1. +> This is necessary to ensure deterministic builds of the binary we want to generate a proof of. If not used, builds may differ depending on the system you are running on. To know more about this, check [this link](https://dev.risczero.com/terminology#deterministic-builds) from RiscZero docs or [this](https://docs.succinct.xyz/docs/sp1/writing-programs/compiling) from SP1. To submit proofs to **Aligned** and get them verified, you first need to generate those proofs. Every proving system has its own method for generating proofs. diff --git a/docs/3_guides/4_generating_proofs.md b/docs/3_guides/4_generating_proofs.md index c71f883802..10ffd69769 100644 --- a/docs/3_guides/4_generating_proofs.md +++ b/docs/3_guides/4_generating_proofs.md @@ -6,9 +6,9 @@ This guide assumes that: -- sp1 prover installed (instructions [here](https://succinctlabs.github.io/sp1/getting-started/install.html)) +- sp1 prover installed (instructions [here](https://docs.succinct.xyz/docs/sp1/getting-started/install)) - sp1 project to generate the proofs - (instructions [here](https://succinctlabs.github.io/sp1/generating-proofs/setup.html)) + (instructions [here](https://docs.succinct.xyz/docs/sp1/getting-started/quickstart)) - aligned installed (instructions [here](../1_introduction/1_try_aligned.md#quickstart)) ### How to generate a proof @@ -41,7 +41,7 @@ aligned submit \ --vm_program \ --batcher_url wss://batcher.alignedlayer.com \ --proof_generator_addr \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` Where `proof_path` is the path to the proof file, `vm_program_path` is the path to the ELF file. `proof_generator_addr` is an optional parameter that works as a helper for some applications where you can be frontrunned. @@ -57,7 +57,7 @@ This guide assumes that: - Gnark library is installed. If not, install it using the following command inside your Go module: ```bash - go get github.com/consensys/gnark@v0.10.0 + go get github.com/consensys/gnark@v0.12.0 ``` - Gnark project to generate the proofs' instructions [here](https://docs.gnark.consensys.io/category/how-to) @@ -90,7 +90,7 @@ aligned submit \ --vk \ --batcher_url wss://batcher.alignedlayer.com \ --proof_generator_addr \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` Where proof path is the path to the proof file, `public_input_path` is the path to the public input file, @@ -168,7 +168,7 @@ aligned submit \ --public_input \ --batcher_url wss://batcher.alignedlayer.com \ --proof_generator_addr \ - --rpc_url https://ethereum-holesky-rpc.publicnode.com \ + --rpc_url https://ethereum-hoodi-rpc.publicnode.com \ --payment_service_addr 0x815aeCA64a974297942D2Bbf034ABEe22a38A003 ``` @@ -303,6 +303,6 @@ To generate a proof of the execution of your code run the following: ```sh cargo run --release -- prove-risc0 . ``` - Make sure to have [Risc0](https://dev.risczero.com/api/zkvm/quickstart#1-install-the-risc-zero-toolchain) installed with version `v1.1.2`. Running Risc0 on macOS enable [metal](https://developer.apple.com/metal/) acceleration by default and may need to be installed it needed. + Make sure to have [Risc0](https://dev.risczero.com/api/zkvm/quickstart#1-install-the-risc-zero-toolchain) installed with version `v3.0.3`. Running Risc0 on macOS enable [metal](https://developer.apple.com/metal/) acceleration by default and may need to be installed it needed. For additional information on using zkRust and using it to submit proofs to Aligned see the [zkRust](https://github.com/yetanotherco/zkRust) Github Repository. diff --git a/docs/3_guides/6_setup_aligned.md b/docs/3_guides/6_setup_aligned.md index b08f20bc7a..8a38094d6a 100644 --- a/docs/3_guides/6_setup_aligned.md +++ b/docs/3_guides/6_setup_aligned.md @@ -13,7 +13,7 @@ Ensure you have the following installed: After installing foundryup, you need to install a specific Foundry version: ```shell -foundryup -i nightly-a428ba6ad8856611339a6319290aade3347d25d9 +foundryup -i v1.1.0 ``` Then run: @@ -33,7 +33,7 @@ This will: To start anvil, a local Ethereum devnet with all necessary contracts already deployed and ready to be interacted with, run: ```shell -make anvil_start_with_block_time +make anvil_start ```
@@ -47,11 +47,7 @@ If EigenLayer contracts change, the anvil state needs to be updated with: make anvil_deploy_eigen_contracts ``` -You will also need to redeploy the MockStrategy & MockERC20 contracts: - -```bash -make anvil_deploy_mock_strategy -``` +This also deploys an ERC20 token with a strategy that can be used to test the EigenLayer restaking. ### Aligned Contracts @@ -80,7 +76,7 @@ make aggregator_start ENVIRONMENT=devnet or with a custom config: ```bash -make aggregator_start ENVIRONMENT=devnet CONFIG_FILE= +make aggregator_start ENVIRONMENT=devnet AGG_CONFIG_FILE= ``` ## Operator @@ -88,13 +84,13 @@ make aggregator_start ENVIRONMENT=devnet CONFIG_FILE= To setup an [Operator](../2_architecture/components/4_operator.md) run: ```bash -make operator_register_and_start ENVIRONMENT=devnet +make operator_full_registration_and_start ENVIRONMENT=devnet ``` or with a custom config: ```bash -make operator_register_and_start ENVIRONMENT=devnet CONFIG_FILE= +make operator_full_registration_and_start ENVIRONMENT=devnet CONFIG_FILE= ``` Different configs for operators can be found in `config-files/config-operator`. @@ -105,7 +101,7 @@ Different configs for operators can be found in `config-files/config-operator`. If you wish to only register an operator you can run: ```bash -make operator_full_registration CONFIG_FILE +make operator_full_registration CONFIG_FILE= ``` and to start it once it has been registered: @@ -126,7 +122,7 @@ make batcher_start_local This starts a [localstack](https://www.localstack.cloud/) to act as a replacement for S3. -If you want to use the batcher under a real `S3` connection you'll need to specify the environment variables under `batcher/aligned-batcher/.env` and then run: +If you want to use the batcher under a real `S3` connection you'll need to specify the environment variables under `crates/batcher/.env` and then run: ```bash make batcher_start @@ -161,20 +157,14 @@ Then start the explorer: ```shell make explorer_build_db -make run_explorer +make explorer_start ``` This will: - Start a postgres docker container - Run ecto setup -- Start the explorer on . - -If you want to run the explorer without docker run: - -```shell -make run_explorer_without_docker_db -``` +- Start the explorer on http://localhost:4000.
Clean, dump and recover DB @@ -245,7 +235,7 @@ Ensure you have the following installed: To run Prometheus and Grafana, run: ```bash -make run_metrics +make metrics_start ``` This will start containers for Prometheus and Grafana. You can access Grafana on `http://localhost:3000` with the default credentials `admin:admin`. @@ -266,12 +256,12 @@ make telemetry_build_db Then, to start the service: ```bash -make telemetry_full_start +make telemetry_start_all ``` This will: -- Start OpenJaeger container for the traces: available at `http://localhost:16686/` +- Start OpenTelemetry and Jaeger containers for the traces: available at `http://localhost:16686/` - Start telemetry server: available at `http://localhost:4001/` --- @@ -295,7 +285,7 @@ make batcher_send_risc0_burst BURST_SIZE= Send an infinite stream of groth_16 proofs: ```shell -make batcher_send_burst_groth16 BURST_SIZE=2 +make batcher_send_groth16_bn254_infinite BURST_SIZE=2 ``` Feel free to explore the rest of targets. diff --git a/docs/3_guides/7_contract_addresses.md b/docs/3_guides/7_contract_addresses.md index eba579657d..c77863fdca 100644 --- a/docs/3_guides/7_contract_addresses.md +++ b/docs/3_guides/7_contract_addresses.md @@ -32,13 +32,14 @@ Below is the list of supported strategies available on Aligned Mainnet: | [lsETH](https://app.eigenlayer.xyz/restake/lsETH) | [0xAe60d8180437b5C34bB956822ac2710972584473](https://etherscan.io/address/0xAe60d8180437b5C34bB956822ac2710972584473) | | [mETH](https://app.eigenlayer.xyz/restake/mETH) | [0x298aFB19A105D59E74658C4C334Ff360BadE6dd2](https://etherscan.io/address/0x298aFB19A105D59E74658C4C334Ff360BadE6dd2) | -For additional details, refer to the [official EigenLayer documentation](https://github.com/Layr-Labs/eigenlayer-contracts/tree/mainnet?tab=readme-ov-file#strategies). +For additional details, refer to the [official EigenLayer documentation](https://github.com/Layr-Labs/eigenlayer-contracts). ## Holesky Deployments | Contract | Address | |----------------------------|-------------------------------------------------------------------------------------------------------------------------------| +| AlignedProofAggregationService | [0xe84CD4084d8131841CE6DC265361f81F4C59a1d4](https://holesky.etherscan.io/address/0xe84CD4084d8131841CE6DC265361f81F4C59a1d4) | | AlignedLayerServiceManager | [0x58F280BeBE9B34c9939C3C39e0890C81f163B623](https://holesky.etherscan.io/address/0x58F280BeBE9B34c9939C3C39e0890C81f163B623) | | BlsApkRegistry | [0xD0A725d82649f9e4155D7A60B638Fe33b3F25e3b](https://holesky.etherscan.io/address/0xD0A725d82649f9e4155D7A60B638Fe33b3F25e3b) | | IndexRegistry | [0x4A7DE0a9fBBAa4fF0270d31852B363592F68B81F](https://holesky.etherscan.io/address/0x4A7DE0a9fBBAa4fF0270d31852B363592F68B81F) | @@ -46,3 +47,26 @@ For additional details, refer to the [official EigenLayer documentation](https:/ | RegistryCoordinator | [0x3aD77134c986193c9ef98e55e800B71e72835b62](https://holesky.etherscan.io/address/0x3aD77134c986193c9ef98e55e800B71e72835b62) | | StakeRegistry | [0x51462D5511563A0F97Bb3Ce5475E1c3905b83F4b](https://holesky.etherscan.io/address/0x51462D5511563A0F97Bb3Ce5475E1c3905b83F4b) | | BatcherPaymentService | [0x815aeCA64a974297942D2Bbf034ABEe22a38A003](https://holesky.etherscan.io/address/0x815aeCA64a974297942D2Bbf034ABEe22a38A003) | + +## Hoodi Deployments + +| Contract | Address | +|--------------------------------|-----------------------------------------------------------------------------------------------------------------------------| +| AlignedProofAggregationService | [0xEFeD2fd949995BE1a1C7f61AbFC0A33412c37f95](https://hoodi.etherscan.io/address/0xEFeD2fd949995BE1a1C7f61AbFC0A33412c37f95) | +| AlignedLayerServiceManager | [0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c](https://hoodi.etherscan.io/address/0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c) | +| BlsApkRegistry | [0xa7Fc4D0Ad59593fB93B39c3353B4144Ea179f61e](https://hoodi.etherscan.io/address/0xa7Fc4D0Ad59593fB93B39c3353B4144Ea179f61e) | +| IndexRegistry | [0x85e972915Ca1FeDF6Ad8361cC1F78211bd3cA6a1](https://hoodi.etherscan.io/address/0x85e972915Ca1FeDF6Ad8361cC1F78211bd3cA6a1) | +| OperatorStateRetriever | [0x9B0062e85c7d5f7c195b7Ef351A377dd81e9E055](https://hoodi.etherscan.io/address/0x9B0062e85c7d5f7c195b7Ef351A377dd81e9E055) | +| RegistryCoordinator | [0xD06AAf23d136ECBfb5Bdb349Dd7a87aDc74673Dd](https://hoodi.etherscan.io/address/0xD06AAf23d136ECBfb5Bdb349Dd7a87aDc74673Dd) | +| StakeRegistry | [0xCe3DFA29Ce371ccE673E631213d827157cfe67e0](https://hoodi.etherscan.io/address/0xCe3DFA29Ce371ccE673E631213d827157cfe67e0) | +| BatcherPaymentService | [0x041af25Fce2413570aaa0029D36DeA1eFdeff083](https://hoodi.etherscan.io/address/0x041af25Fce2413570aaa0029D36DeA1eFdeff083) | + +### Strategies + +Below is the list of supported strategies available on Aligned Hoodi: + +| Name | Address | +|------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------| +| [Beacon Chain ETH](https://hoodi.eigenlayer.xyz/token/ETH) | [0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0](https://hoodi.etherscan.io/address/0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0) | +| [stETH](https://hoodi.eigenlayer.xyz/token/stETH) | [0x19536FAd6Eb831e8211B316177979161BBdb2c2B](https://hoodi.etherscan.io/address/0x19536FAd6Eb831e8211B316177979161BBdb2c2B) | +| [WETH](https://hoodi.eigenlayer.xyz/token/WETH) | [0x24579aD4fe83aC53546E5c2D3dF5F85D6383420d](https://hoodi.etherscan.io/address/0x24579aD4fe83aC53546E5c2D3dF5F85D6383420d) | diff --git a/docs/3_guides/8_submitting_batch_without_batcher.md b/docs/3_guides/8_submitting_batch_without_batcher.md index 8c35675764..37663f9d17 100644 --- a/docs/3_guides/8_submitting_batch_without_batcher.md +++ b/docs/3_guides/8_submitting_batch_without_batcher.md @@ -35,7 +35,7 @@ If, after this analysis, a User still wants to submit his own Batch, here is how ``` [ { - "proving_system": "Groth16Bn254", + "proving_system": "GnarkGroth16Bn254", "proof": [ 152, 88, 141, 155, 88, 35, 94, 76, ... ], diff --git a/docs/3_guides/9_aligned_cli.md b/docs/3_guides/9_aligned_cli.md index 1575431b6b..6d5e39ea1a 100644 --- a/docs/3_guides/9_aligned_cli.md +++ b/docs/3_guides/9_aligned_cli.md @@ -9,7 +9,7 @@ This document serves as a reference for the commands of the Aligned CLI. 1. Download and install Aligned from the Aligned GitHub repo `https://github.com/yetanotherco/aligned_layer`: ```bash - curl -L https://raw.githubusercontent.com/yetanotherco/aligned_layer/main/batcher/aligned/install_aligned.sh | bash + curl -L https://raw.githubusercontent.com/yetanotherco/aligned_layer/main/crates/cli/install_aligned.sh | bash ``` 2. A source command will be printed in your terminal after installation. Execute that command to update your shell environment. @@ -52,13 +52,15 @@ Submit a proof to the Aligned Layer batcher. - Default: `ws://localhost:8080` - Mainnet: `wss://mainnet.batcher.alignedlayer.com` - Holesky: `wss://batcher.alignedlayer.com` + - Hoodi: `wss://hoodi.batcher.alignedlayer.com` - `--rpc_url `: User's Ethereum RPC provider connection address. - Default: `http://localhost:8545` - Mainnet: `https://ethereum-rpc.publicnode.com` - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` - Also, you can use your own Ethereum RPC providers. - `--proving_system `: Proof system of the submitted proof - - Possible values: `GnarkPlonkBls12_381`, `GnarkPlonkBn254`, `Groth16Bn254`, `SP1`, `Risc0` + - Possible values: `GnarkPlonkBls12_381`, `GnarkPlonkBn254`, `Groth16Bn254`, `SP1`, `Risc0`, `CircomGroth16Bn256` - `--proof `: Path to the proof file. - `--public_input `: Path to the public input file. - `--vk `: Path to the verification key file (required for specific proof systems). @@ -72,11 +74,11 @@ Submit a proof to the Aligned Layer batcher. - `--keystore_path `: Path to the local keystore. - `--private_key `: User's wallet private key. - `--nonce `: Proof nonce. - - By default, the nonce is set automatically. By setting the nonce manually, you can perform a proof replacement. + - By default, the nonce is set automatically. By setting the nonce manually, you can perform a proof replacement. To perform a valid replacement, the new proof must have a max_fee 10% higher than the previous one. - One of the following, to specify which Network to interact with: - `--network `: Network name to interact with. - Default: `devnet` - - Possible values: `devnet`, `holesky`, `mainnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` - For a custom Network, you must specify the following parameters: - `--aligned_service_manager ` - `--batcher_payment_service ` @@ -86,21 +88,22 @@ Submit a proof to the Aligned Layer batcher. - `--default_fee_estimate`: Specifies a `max_fee` equivalent to the cost of 1 proof in a batch of size 10. - `--instant_fee_estimate`: Specifies a `max_fee` that ensures the proof is included instantly, equivalent to the cost of a proof in a batch of size 1. - `--custom_fee_estimate `: Specifies a `max_fee` equivalent to the cost of 1 proof in a batch of size `num_proofs_in_batch`. - +- `random_address`: If set, random addresses will be used as `proof_generator_addr` for each proof. + - Default: `false` #### Example: ```bash aligned submit \ --proving_system Risc0 \ ---proof ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.proof \ ---vm_program ./scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id.bin \ ---public_input ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.pub \ +--proof ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof \ +--vm_program ./scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin \ +--public_input ./scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub \ --repetitions \ --keystore_path \ --batcher_url wss://batcher.alignedlayer.com \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ --max_fee 0.0013ether ``` @@ -122,11 +125,12 @@ Check if a proof was verified by Aligned on Ethereum. - Default: `http://localhost:8545` - Mainnet: `https://ethereum-rpc.publicnode.com` - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` - Also, you can use your own Ethereum RPC providers. - One of the following, to specify which Network to interact with: - `--network `: Network name to interact with. - Default: `devnet` - - Possible values: `devnet`, `holesky`, `mainnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` - For a custom Network, you must specify the following parameters: - `--aligned_service_manager ` - `--batcher_payment_service ` @@ -137,8 +141,8 @@ Check if a proof was verified by Aligned on Ethereum. ```bash aligned verify-proof-onchain \ --aligned-verification-data ./aligned_verification_data/ \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` --- @@ -180,12 +184,13 @@ Deposits Ethereum into the Aligned Layer's `BatcherPaymentService.sol` contract. - Default: `http://localhost:8545` - Mainnet: `https://ethereum-rpc.publicnode.com` - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` - Also, you can use your own Ethereum RPC providers. - `--amount `: Amount of Ether to deposit. - One of the following, to specify which Network to interact with: - `--network `: Network name to interact with. - Default: `devnet` - - Possible values: `devnet`, `holesky`, `mainnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` - For a custom Network, you must specify the following parameters: - `--aligned_service_manager ` - `--batcher_payment_service ` @@ -195,8 +200,8 @@ Deposits Ethereum into the Aligned Layer's `BatcherPaymentService.sol` contract. ```bash aligned deposit-to-batcher \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ --amount 0.5ether \ --keystore_path ``` @@ -219,7 +224,7 @@ Retrieves the user's balance in the Aligned Layer's contract. - One of the following, to specify which Network to interact with: - `--network `: Network name to interact with. - Default: `devnet` - - Possible values: `devnet`, `holesky`, `mainnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` - For a custom Network, you must specify the following parameters: - `--aligned_service_manager ` - `--batcher_payment_service ` @@ -228,6 +233,7 @@ Retrieves the user's balance in the Aligned Layer's contract. - Default: `http://localhost:8545` - Mainnet: `https://ethereum-rpc.publicnode.com` - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` - Also, you can use your own Ethereum RPC providers. - `--user_addr`: User's Ethereum address. @@ -236,8 +242,8 @@ Retrieves the user's balance in the Aligned Layer's contract. ```bash aligned get-user-balance \ --user_addr \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` --- @@ -258,7 +264,7 @@ Retrieves the user's current nonce from the Batcher. - One of the following, to specify which Network to interact with: - `--network `: Network name to interact with. - Default: `devnet` - - Possible values: `devnet`, `holesky`, `mainnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` - For a custom Network, you must specify the following parameters: - `--aligned_service_manager ` - `--batcher_payment_service ` @@ -269,7 +275,7 @@ Retrieves the user's current nonce from the Batcher. ```bash aligned get-user-nonce \ --user_addr \ ---network holesky +--network hoodi ``` --- @@ -290,7 +296,7 @@ Retrieves the user's current nonce from the Blockhain, in the Batcher Payment Se - One of the following, to specify which Network to interact with: - `--network `: Network name to interact with. - Default: `devnet` - - Possible values: `devnet`, `holesky`, `mainnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` - For a custom Network, you must specify the following parameters: - `--aligned_service_manager ` - `--batcher_payment_service ` @@ -299,6 +305,7 @@ Retrieves the user's current nonce from the Blockhain, in the Batcher Payment Se - Default: `http://localhost:8545` - Mainnet: `https://ethereum-rpc.publicnode.com` - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` - Also, you can use your own Ethereum RPC providers. #### Example: @@ -306,17 +313,57 @@ Retrieves the user's current nonce from the Blockhain, in the Batcher Payment Se ```bash aligned get-user-nonce-from-ethereum \ --user_addr \ ---network holesky \ ---rpc_url https://ethereum-holesky-rpc.publicnode.com +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` --- +### **get-user-last-max-fee** + +#### Description: + +Retrieves the `max_fee` of the proof with the highest nonce in the batcher queue for a given address. + +This value represents the maximum fee limit that can be used when submitting the next proof. To increase the fee limit for a new proof, you must first bump the fee of the previous proofs queued in the batcher. + +Read more here: https://docs.alignedlayer.com/architecture/1_proof_verification_layer/1_batcher#max-fee-priority-queue + +#### Command: + +`get-user-last-max-fee [OPTIONS] ` + +#### Options: + +- ``: User's Ethereum address. +- One of the following, to specify which Network to interact with: + - `--network `: Network name to interact with. + - Default: `devnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` + - For a custom Network, you must specify the following parameters: + - `--aligned_service_manager ` + - `--batcher_payment_service ` + - `--batcher_url ` + +#### Example: + +```bash +aligned get-user-last-max-fee \ + \ +--network holesky +``` + +#### Notes: + +- Returns `U256::MAX` (2^256 - 1) when no proofs are present in the queue for the user. + +--- + ### **get-user-amount-of-queued-proofs** #### Description: -Retrieves the user's amount of queued proofs in the Batcher. +Retrieves the number of proofs currently queued for a given user in the Batcher. #### Command: @@ -325,24 +372,190 @@ Retrieves the user's amount of queued proofs in the Batcher. #### Options: - `--user_addr `: User's Ethereum address. +- Specify which network to interact with, using one of the following options: + - `--network `: Network name to interact with. + - Default: `devnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` + - For a custom network, instead of `--network`, provide the following flags: + - `--aligned_service_manager `: Address of the Aligned Service Manager contract. + - `--batcher_payment_service `: Address of the Batcher Payment Service contract. + - `--batcher_url `: WebSocket URL for the Aligned batcher. +- `--rpc_url `: Ethereum RPC provider URL. + - Default: `http://localhost:8545` + - Mainnet: `https://ethereum-rpc.publicnode.com` + - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` + - You can also specify your own RPC provider URL + +#### Example: + +```bash +aligned get-user-amount-of-queued-proofs \ +--user_addr \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com +``` + + +--- + +### **lock-funds** + +#### Description: + +Locks funds in the batcher. Locked balances can be used for proof verification payments but cannot be withdrawn until they are unlocked and the lock period expires. + +#### Command: + +`lock-funds [OPTIONS]` + +#### Options: + +- `--keystore_path `: Path to the local keystore. +- `--private_key `: User's wallet private key. +- `--rpc_url `: User's Ethereum RPC provider connection address. + - Default: `http://localhost:8545` + - Mainnet: `https://ethereum-rpc.publicnode.com` + - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` + - Also, you can use your own Ethereum RPC providers. +- One of the following, to specify which Network to interact with: + - `--network `: Network name to interact with. + - Default: `devnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` + - For a custom Network, you must specify the following parameters: + - `--aligned_service_manager ` + - `--batcher_payment_service ` + - `--batcher_url ` + +#### Example: + +```bash +aligned lock-funds \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ +--keystore_path +``` + +--- + +### **unlock-funds** + +#### Description: + +Unlocks funds from the batcher. After calling this command, users must wait for the lock period before they can withdraw their funds using `withdraw-funds`. + +#### Command: + +`unlock-funds [OPTIONS]` + +#### Options: + +- `--keystore_path `: Path to the local keystore. +- `--private_key `: User's wallet private key. +- `--rpc_url `: User's Ethereum RPC provider connection address. + - Default: `http://localhost:8545` + - Mainnet: `https://ethereum-rpc.publicnode.com` + - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` + - Also, you can use your own Ethereum RPC providers. +- One of the following, to specify which Network to interact with: + - `--network `: Network name to interact with. + - Default: `devnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` + - For a custom Network, you must specify the following parameters: + - `--aligned_service_manager ` + - `--batcher_payment_service ` + - `--batcher_url ` + +#### Example: + +```bash +aligned unlock-funds \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ +--keystore_path +``` + +--- + +### **withdraw-funds** + +#### Description: + +Withdraws a specified amount from the user's balance in the batcher. This command can only be used after the balance has been unlocked using `unlock-funds` and the lock period has expired. + +#### Command: + +`withdraw-funds [OPTIONS] --amount ` + +#### Options: + +- `--keystore_path `: Path to the local keystore. +- `--private_key `: User's wallet private key. +- `--rpc_url `: User's Ethereum RPC provider connection address. + - Default: `http://localhost:8545` + - Mainnet: `https://ethereum-rpc.publicnode.com` + - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` + - Also, you can use your own Ethereum RPC providers. +- `--amount `: Amount of Ether to withdraw. +- One of the following, to specify which Network to interact with: + - `--network `: Network name to interact with. + - Default: `devnet` + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` + - For a custom Network, you must specify the following parameters: + - `--aligned_service_manager ` + - `--batcher_payment_service ` + - `--batcher_url ` + +#### Example: + +```bash +aligned withdraw-funds \ +--network hoodi \ +--rpc_url https://ethereum-hoodi-rpc.publicnode.com \ +--amount 0.5ether \ +--keystore_path +``` + +--- + +### **verify-agg-proof** + +#### Description: + +Verifies if your proof has been verified by the `Aggregation Mode`. + +#### Command: + +`aligned verify-agg-proof [OPTIONS] --proving_system ` + +#### Options: + +- `--vk`: Verification key hash file path. +- `--public_input`: Your program committed values file path. +- `--from-block`: From which block to start fetching events. This must no be older than 18 days as blobs will be expired. Defaults to the block corresponding to last 24 hours. - `--network `: Network name to interact with. - Default: `devnet` - - Possible values: `devnet`, `holesky`, `mainnet` -- `--rpc_url `: User's Ethereum RPC provider connection address. + - Possible values: `devnet`, `holesky`, `mainnet`, `hoodi` +- `--rpc_url `: User's Ethereum RPC provider connection address. - Default: `http://localhost:8545` - Mainnet: `https://ethereum-rpc.publicnode.com` - Holesky: `https://ethereum-holesky-rpc.publicnode.com` + - Hoodi: `https://ethereum-hoodi-rpc.publicnode.com` - Also, you can use your own Ethereum RPC providers. -- `--batcher_url `: Websocket URL for the Aligned Layer batcher - - Default: `ws://localhost:8080` - - Mainnet: `wss://mainnet.batcher.alignedlayer.com` - - Holesky: `wss://batcher.alignedlayer.com` +- `--beacon_client_url `: User's Ethereum Consensus provider connection address. Public nodes don't support this method. #### Example: ```bash -aligned get-user-amount-of-queued-proofs \ ---user_addr \ ---network holesky \ ---batcher_url wss://batcher.alignedlayer.com +aligned verify-agg-proof \ + --network hoodi \ + --from-block 3638552 \ + --proving_system SP1 \ + --public_input ../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub \ + --vk ./scripts/test_files/sp1/sp1_fibonacci_5_0_0.vk \ + --beacon_url \ + --rpc_url https://ethereum-hoodi-rpc.publicnode.com ``` diff --git a/docs/3_guides/setup_holesky.md b/docs/3_guides/setup_holesky.md index b6ea17e665..54455fe3b6 100644 --- a/docs/3_guides/setup_holesky.md +++ b/docs/3_guides/setup_holesky.md @@ -4,8 +4,8 @@ These contracts are not deployed by Aligned. Current EigenLayer contracts: -- [Holesky Contracts](https://github.com/Layr-Labs/eigenlayer-contracts/blob/testnet-holesky/script/configs/holesky/Holesky_current_deployment.config.json) -- [Mainnet Contracts](https://github.com/Layr-Labs/eigenlayer-contracts/blob/mainnet/script/configs/mainnet/Mainnet_current_deployment.config.json) +- [Holesky Contracts](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/script/configs/holesky.json) +- [Mainnet Contracts](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/script/configs/mainnet.json) ## Aligned Contracts: Holesky/Mainnet @@ -132,11 +132,3 @@ Also, you must re-generate the Go smart contract bindings: ```bash make bindings ``` - -### Deployment - -And finally you must rebuild go binaries, for Operator and Aggregator: - -```bash -make build_binaries -``` diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index ef49a049aa..e533aacb31 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -12,14 +12,16 @@ * [Supported Verifiers](2_architecture/0_supported_verifiers.md) * [Key Terms](2_architecture/0b_key_terms.md) -* [Fast mode](2_architecture/1_fast_mode.md) +* [Proof Verification Layer](2_architecture/1_proof_verification_layer.md) * [Batcher](./2_architecture/components/1_batcher.md) * [Payment Service Contract](./2_architecture/components/2_payment_service_contract.md) * [Service Manager Contract](./2_architecture/components/3_service_manager_contract.md) * [Operator](./2_architecture/components/4_operator.md) * [Aggregator](./2_architecture/components/5_aggregator.md) * [Explorer](./2_architecture/components/6_explorer.md) -* [Aggregation mode](2_architecture/2_aggregation_mode.md) +* [Proof Aggregation Service](2_architecture/2_aggregation_mode.md) + * [Deep Dive](2_architecture/agg_mode_components/1_deep_dive.md) +* [Rollup-as-a-Service Platform](2_architecture/3_raas_platform.md) ## Guides @@ -27,6 +29,7 @@ * [Build your first Aligned Application](3_guides/2_build_your_first_aligned_application.md) * [Modify ZkQuiz Questions](3_guides/2.2_modify_zkquiz_questions.md) * [Validating public input](3_guides/3_validating_public_input.md) +* [Proof Aggregation Service](3_guides/3.1_aggregation_mode.md) * [SDK Intro](3_guides/1_SDK_how_to.md) * [SDK API Reference](3_guides/1.2_SDK_api_reference.md) * [Generating proofs for Aligned](3_guides/4_generating_proofs.md) @@ -50,7 +53,8 @@ * [Mainnet Explorer](https://explorer.alignedlayer.com) * [Holesky Explorer](https://holesky.explorer.alignedlayer.com) -* [All the proof aggregation solutions will use RISC-V zkvms](https://blog.alignedlayer.com/all-the-proof-aggregation-solutions-will-use-risc-v-zkvms/) +* [Hoodi Explorer](https://hoodi.explorer.alignedlayer.com) +* [All the proof aggregation solutions will use RISC-V zkVMs](https://blog.alignedlayer.com/all-the-proof-aggregation-solutions-will-use-risc-v-zkvms/) * [Manifesto](https://blog.alignedlayer.com/aligned-manifesto/) ## Socials diff --git a/docs/about_aligned/learning_resources.md b/docs/about_aligned/learning_resources.md index e84c30f149..0ffb0171cc 100644 --- a/docs/about_aligned/learning_resources.md +++ b/docs/about_aligned/learning_resources.md @@ -2,7 +2,7 @@ ## Aligned blog post: -* [Aligned](https://blog.alignedlayer.com/aligned-layer/) +* [Aligned Blog](https://blog.alignedlayer.com) ## Aligned repo: diff --git a/docs/check_markdown_links.py b/docs/check_markdown_links.py new file mode 100755 index 0000000000..36a6b9ce01 --- /dev/null +++ b/docs/check_markdown_links.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python3 + +import os +import re +import urllib.request +import urllib.error +from concurrent.futures import ThreadPoolExecutor, as_completed +from datetime import datetime +import threading +import time +import random + +# Thread-safe counters +alive_count = 0 +dead_count = 0 +count_lock = threading.Lock() + +def find_markdown_files(): + """Find all markdown files in the current directory""" + md_files = [] + docs_path = "." + + if not os.path.exists(docs_path): + print(f"Current folder not found") + return md_files + + for root, dirs, files in os.walk(docs_path): + for file in files: + if file.endswith('.md'): + md_files.append(os.path.join(root, file)) + + return md_files + +def extract_links_from_file(file_path): + """Extract HTTP/HTTPS links from a markdown file""" + links = [] + + try: + with open(file_path, 'r', encoding='utf-8') as f: + for line_num, line in enumerate(f, 1): + # Find markdown links [text](url) + markdown_links = re.findall(r'\[([^\]]*)\]\(([^)]+)\)', line) + for text, url in markdown_links: + if url.startswith(('http://', 'https://')): + links.append((file_path, line_num, url.strip())) + + # Find direct links + direct_links = re.findall(r'<(https?://[^>]+)>', line) + for url in direct_links: + links.append((file_path, line_num, url.strip())) + + except Exception as e: + print(f"Error reading {file_path}: {e}") + + return links + +def check_link_with_retry(file_path, line_num, url, max_retries=3): + """Check if a link is alive or dead with retry logic for rate limiting""" + global alive_count, dead_count + + for attempt in range(max_retries): + try: + # Create request with a user agent to avoid 403 errors + req = urllib.request.Request( + url, + headers={'User-Agent': 'Mozilla/5.0 (compatible; LinkChecker/1.0)'} + ) + + # Set timeout for the request + with urllib.request.urlopen(req, timeout=15) as response: + status_code = response.getcode() + if 200 <= status_code < 400: + with count_lock: + alive_count += 1 + return 'ALIVE', file_path, line_num, url, None + else: + with count_lock: + dead_count += 1 + return 'DEAD', file_path, line_num, url, f"HTTP {status_code}" + + except urllib.error.HTTPError as e: + if e.code == 429: # Too Many Requests + if attempt < max_retries - 1: # Don't wait on last attempt + # Exponential backoff with jitter + wait_time = (2 ** attempt) + random.uniform(0, 1) + print(f"⏳ Rate limited for {url}, waiting {wait_time:.1f}s before retry {attempt + 2}/{max_retries}") + time.sleep(wait_time) + continue + else: + # Final attempt failed with rate limiting + with count_lock: + alive_count += 1 # Assume it's alive if we're just rate limited + return 'ALIVE', file_path, line_num, url, "Rate limited (assumed alive)" + else: + # Other HTTP errors (404, 403, etc.) - don't retry + with count_lock: + dead_count += 1 + return 'DEAD', file_path, line_num, url, f"HTTP {e.code}: {e.reason}" + + except (urllib.error.URLError, Exception) as e: + if attempt < max_retries - 1: + # Retry on network errors + wait_time = (2 ** attempt) + random.uniform(0, 1) + print(f"⏳ Network error for {url}, waiting {wait_time:.1f}s before retry {attempt + 2}/{max_retries}") + time.sleep(wait_time) + continue + else: + # Final attempt failed + with count_lock: + dead_count += 1 + return 'DEAD', file_path, line_num, url, str(e) + +def main(): + global alive_count, dead_count + + print("Starting markdown link checking...") + print("==================================") + + # Find all markdown files + print("Finding markdown files in current folder and extracting links...") + md_files = find_markdown_files() + + if not md_files: + print("No markdown files found in current folder.") + return + + # Extract all links + all_links = [] + for file_path in md_files: + links = extract_links_from_file(file_path) + all_links.extend(links) + + print(f"Found {len(all_links)} HTTP/HTTPS links to check in current folder") + + if not all_links: + print("No HTTP/HTTPS links found in markdown files.") + return + + # Check links in parallel + print("Checking links...") + dead_links = [] + results = [] + + # Use ThreadPoolExecutor for parallel processing + with ThreadPoolExecutor(max_workers=20) as executor: + # Submit all link checking tasks + future_to_link = { + executor.submit(check_link_with_retry, file_path, line_num, url): (file_path, line_num, url) + for file_path, line_num, url in all_links + } + + # Process results as they complete + for future in as_completed(future_to_link): + status, file_path, line_num, url, error = future.result() + + if status == 'ALIVE': + if error: + print(f"✓ ALIVE: {url} ({error})") + else: + print(f"✓ ALIVE: {url}") + else: + print(f"✗ DEAD: {url} ({error})") + dead_links.append((file_path, line_num, url, error)) + + results.append((status, file_path, line_num, url, error)) + + # Calculate statistics + total_checked = alive_count + dead_count + alive_percentage = (alive_count * 100) // total_checked if total_checked > 0 else 0 + dead_percentage = (dead_count * 100) // total_checked if total_checked > 0 else 0 + + # Display summary + print("\n===============================") + print("LINK CHECK SUMMARY") + print("===============================") + print(f"Total links found: {len(all_links)}") + print(f"Total links checked: {total_checked}") + print(f"Alive links: {alive_count} ({alive_percentage}%)") + print(f"Dead links: {dead_count} ({dead_percentage}%)") + print() + + # Save dead links to file and display them + if dead_links: + output_file = "dead_links_report.txt" + with open(output_file, 'w') as f: + f.write(f"Dead Links Report - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write("================================\n\n") + + for file_path, line_num, url, error in dead_links: + f.write(f"File: {file_path}\n") + f.write(f"Line: {line_num}\n") + f.write(f"URL: {url}\n") + f.write(f"Error: {error}\n") + f.write("---\n") + + print(f"Dead links details saved to: {output_file}") + print("\nDEAD LINKS:") + print("----------") + for file_path, line_num, url, error in dead_links: + print(f"{file_path}:{line_num} - {url}") + else: + print("🎉 All links are alive!") + + print("\nLink checking complete!") + +if __name__ == "__main__": + main() diff --git a/docs/images/aligned_proof_aggregation_service.png b/docs/images/aligned_proof_aggregation_service.png new file mode 100644 index 0000000000..acf8ca9231 Binary files /dev/null and b/docs/images/aligned_proof_aggregation_service.png differ diff --git a/docs/images/aligned_suite_of_products.png b/docs/images/aligned_suite_of_products.png new file mode 100644 index 0000000000..ff4bcc70d7 Binary files /dev/null and b/docs/images/aligned_suite_of_products.png differ diff --git a/docs/images/pvl_simple_architecture.png b/docs/images/pvl_simple_architecture.png new file mode 100644 index 0000000000..6774ed7087 Binary files /dev/null and b/docs/images/pvl_simple_architecture.png differ diff --git a/docs/images/pvl_vs_pas_comp_table.png b/docs/images/pvl_vs_pas_comp_table.png new file mode 100644 index 0000000000..d2636c03c2 Binary files /dev/null and b/docs/images/pvl_vs_pas_comp_table.png differ diff --git a/docs/images/zk_rollups_and_aligned.png b/docs/images/zk_rollups_and_aligned.png new file mode 100644 index 0000000000..5cb19ad6b8 Binary files /dev/null and b/docs/images/zk_rollups_and_aligned.png differ diff --git a/docs/operator_guides/0_running_an_operator.md b/docs/operator_guides/0_running_an_operator.md index 3a12720de4..8b9d18e127 100644 --- a/docs/operator_guides/0_running_an_operator.md +++ b/docs/operator_guides/0_running_an_operator.md @@ -1,14 +1,14 @@ # Register as an Aligned operator in testnet > **CURRENT VERSION:** -> Aligned Operator [v0.14.0](https://github.com/yetanotherco/aligned_layer/releases/tag/v0.14.0) +> Aligned Operator [v0.20.0](https://github.com/yetanotherco/aligned_layer/releases/tag/v0.20.0) > **IMPORTANT:** > You must be [whitelisted](https://docs.google.com/forms/d/e/1FAIpQLSdH9sgfTz4v33lAvwj6BvYJGAeIshQia3FXz36PFfF-WQAWEQ/viewform) to become an Aligned operator. ## Requirements -This guide assumes you are already [registered as an operator with EigenLayer](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-installation). +This guide assumes you are already [registered as an operator with EigenLayer](https://docs.eigencloud.xyz/products/eigenlayer/operators/howto/operator-installation). ## Hardware Requirements @@ -30,7 +30,7 @@ The list of supported strategies can be found [here](../3_guides/7_contract_addr To start with, clone the Aligned repository and move inside it ```bash -git clone https://github.com/yetanotherco/aligned_layer.git --branch v0.14.0 +git clone https://github.com/yetanotherco/aligned_layer.git --branch v0.20.0 cd aligned_layer ``` @@ -46,38 +46,39 @@ Also, you have to install the following dependencies for Linux: - pkg-config - libssl-dev +- g++ To install foundry, run: ```bash -make install_foundry +make foundry_install foundryup ``` -To build the operator binary for **Testnet**, run: +To build the operator binary for **Hoodi** or **Holesky**, run: ```bash -make build_operator ENVIRONMENT=testnet +make operator_build ENVIRONMENT=testnet ``` To build the operator binary for **Mainnet**, run: ```bash -make build_operator ENVIRONMENT=mainnet +make operator_build ENVIRONMENT=mainnet ``` ### Upgrading the Operator -If you want to upgrade the operator in **Testnet**, run: +If you want to upgrade the operator in **Hoodi** or **Holesky**, run: ```bash -make update_operator ENVIRONMENT=testnet +make operator_update ENVIRONMENT=testnet ``` If you want to upgrade the operator in **Mainnet**, run: ```bash -make update_operator ENVIRONMENT=mainnet +make operator_update ENVIRONMENT=mainnet ``` This will recreate the binaries. You can then proceed to restart the operator. @@ -100,6 +101,7 @@ Locate the appropiate `operator_config_file`: - Mainnet: `./config-files/config-operator-mainnet.yaml`. - Holesky: `./config-files/config-operator-holesky.yaml`. +- Hoodi: `./config-files/config-operator-hoodi.yaml`. Update the following placeholders: @@ -152,15 +154,21 @@ Then you must register as an Operator on AlignedLayer. To do this, you must run: - Mainnet: -```bash -make operator_register_with_aligned_layer CONFIG_FILE=./config-files/config-operator-mainnet.yaml -``` + ```bash + make operator_register_with_aligned_layer CONFIG_FILE=./config-files/config-operator-mainnet.yaml + ``` - Holesky: -```bash -make operator_register_with_aligned_layer CONFIG_FILE=./config-files/config-operator-holesky.yaml -``` + ```bash + make operator_register_with_aligned_layer CONFIG_FILE=./config-files/config-operator-holesky.yaml + ``` + +- Hoodi: + + ```bash + make operator_register_with_aligned_layer CONFIG_FILE=./config-files/config-operator-hoodi.yaml + ``` {% hint style="danger" %} If you are going to run the server in this machine, @@ -171,15 +179,21 @@ delete the operator key - Mainnet: -```bash -./operator/build/aligned-operator start --config ./config-files/config-operator-mainnet.yaml -``` + ```bash + ./operator/build/aligned-operator start --config ./config-files/config-operator-mainnet.yaml + ``` - Holesky: -```bash -./operator/build/aligned-operator start --config ./config-files/config-operator-holesky.yaml -``` + ```bash + ./operator/build/aligned-operator start --config ./config-files/config-operator-holesky.yaml + ``` + +- Hoodi: + + ```bash + ./operator/build/aligned-operator start --config ./config-files/config-operator-hoodi.yaml + ``` ### Run Operator using Systemd @@ -241,26 +255,50 @@ Once you are running your operator using systemd, you can get its logs using jou journalctl -xfeu aligned-operator.service ``` +## Operator Metrics + +Metrics are exposed by default at `localhost:9092/metrics` in Prometheus format. To change the endpoint, update the following line in the configuration file: + +```yaml +metrics_ip_port_address: localhost:9092 +``` + +Example of exposed metrics: + +```yaml +# HELP aligned_operator_responses_count Number of proof verified by the operator and sent to the Aligned Service Manager +# TYPE aligned_operator_responses_count counter +aligned_operator_responses_count x +``` + +You can scrape these metrics using Prometheus and visualize them in Grafana or configure alerts based on the data. + ## Unregistering the operator To unregister the Aligned operator, run: - Mainnet: -```bash -cast send --rpc-url https://ethereum-rpc.publicnode.com --private-key 0xA8CC0749b4409c3c47012323E625aEcBA92f64b9 'deregisterOperator(bytes)' 0x00 - ``` + ```bash + cast send --rpc-url https://ethereum-rpc.publicnode.com --private-key 0xA8CC0749b4409c3c47012323E625aEcBA92f64b9 'deregisterOperator(bytes)' 0x00 + ``` - Holesky: -```bash -cast send --rpc-url https://ethereum-holesky-rpc.publicnode.com --private-key 0x3aD77134c986193c9ef98e55e800B71e72835b62 'deregisterOperator(bytes)' 0x00 - ``` + ```bash + cast send --rpc-url https://ethereum-holesky-rpc.publicnode.com --private-key 0x3aD77134c986193c9ef98e55e800B71e72835b62 'deregisterOperator(bytes)' 0x00 + ``` + +- Hoodi: + + ```bash + cast send --rpc-url https://ethereum-hoodi-rpc.publicnode.com --private-key 0xD06AAf23d136ECBfb5Bdb349Dd7a87aDc74673Dd 'deregisterOperator(bytes)' 0x00 + ``` `` is the one specified in the output when generating your keys with the EigenLayer CLI. -## Deposit Strategy Tokens in Testnet +## Deposit Strategy Tokens in Holesky We are using [WETH](https://holesky.eigenlayer.xyz/restake/WETH) as the strategy token. @@ -270,7 +308,7 @@ You will need to stake a minimum of 1000 WEI in WETH. We recommend to stake a ma ### Option 1 -EigenLayer's guide can be found [here](https://docs.eigenlayer.xyz/eigenlayer/restaking-guides/restaking-user-guide/liquid-restaking/restake-lsts). +EigenLayer's restaking documentation can be found [here](https://docs.eigencloud.xyz/products/eigenlayer/restakers/concepts/overview) (general restaking overview). ### Option 2 @@ -303,3 +341,32 @@ If you don't have Holesky ETH, these are some useful faucets: - [Google Cloud for Web3 Holesky Faucet](https://cloud.google.com/application/web3/faucet/ethereum/holesky) - [Holesky PoW Faucet](https://holesky-faucet.pk910.de/) +## Deposit Strategy Tokens in Hoodi + +You can restake [stETH](https://hoodi.eigenlayer.xyz/token/stETH) as the strategy token. + +You will need to stake a minimum of 1000 WEI in stETH. We recommend to stake a maximum amount of 10 stETH. If you are staking more than 10 stETH please unstake any surplus over 10. + +If you already have ETH and need to convert it to stETH, you can get it from [Lido Website](https://stake-hoodi.testnet.fi/). + +Finally, to end the staking process, you need to deposit into the stETH strategy, + +There are two options, either doing it through EigenLayer's website, or running the commands specified by us below. + +### Option 1 + +To restake through EigenLayer's website, go to [stETH strategy](https://hoodi.eigenlayer.xyz/token/stETH). + +### Option 2 + +To deposit one stETH using the Operator CLI, run the following command: + +```bash +./operator/build/aligned-operator deposit-into-strategy --config ./config-files/config-operator.yaml --strategy-address 0x19536FAd6Eb831e8211B316177979161BBdb2c2B --amount 1000000000000000000 +``` + +Where [`0x19536FAd6Eb831e8211B316177979161BBdb2c2B`](https://hoodi.etherscan.io/address/0x19536FAd6Eb831e8211B316177979161BBdb2c2B) is the stETH strategy address in Hoodi. + +If you don't have Hoodi ETH, these are some useful faucets: + +- [Hoodi PoW Faucet](https://hoodi-faucet.pk910.de/) diff --git a/docs/operator_guides/1_operator_FAQ.md b/docs/operator_guides/1_operator_FAQ.md index 2787869e01..e2b5bffc6d 100644 --- a/docs/operator_guides/1_operator_FAQ.md +++ b/docs/operator_guides/1_operator_FAQ.md @@ -1,6 +1,6 @@ # Operator FAQ -The EigenLayer Operator FAQ is available [here](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-faq). +The EigenLayer Operator installation guide is available [here](https://docs.eigencloud.xyz/products/eigenlayer/operators/howto/operator-installation). ### How do I get whitelisted to run an operator? @@ -43,13 +43,24 @@ You can check the latest version available on the [releases' page](https://githu You can get the registered version of your operator by running the following command: -```bash -curl https://holesky.tracker.alignedlayer.com/versions/ -``` +- Mainnet: + + ```bash + curl https://mainnet.telemetry.alignedlayer.com/versions/ + ``` + +- Holesky: + + ```bash + curl https://holesky.telemetry.alignedlayer.com/versions/ + ``` Replace `` with your operator address. -In future releases, the explorer will show the operator version and the latest available version. +Also, you can check the operator version in the Explorer: + +- [Mainnet Operators Explorer](https://explorer.alignedlayer.com/operators) +- [Holesky Operators Explorer](https://holesky.explorer.alignedlayer.com/operators) ### How do I check the operator version locally? @@ -67,12 +78,23 @@ This will show the version of the operator you have built in your filesystem. You can get the ID of the operator by running the following command: -```bash -cast call \ - --rpc-url https://ethereum-holesky-rpc.publicnode.com \ - 0xD0A725d82649f9e4155D7A60B638Fe33b3F25e3b \ - "getOperatorId(address operator)(bytes32)" -``` +- Mainnet: + + ```bash + cast call \ + --rpc-url https://ethereum-rpc.publicnode.com \ + 0x3CcfB7e6e8fe2A8d941a8Ce4C69A944a770E8228 \ + "getOperatorId(address operator)(bytes32)" + ``` + +- Holesky + + ```bash + cast call \ + --rpc-url https://ethereum-holesky-rpc.publicnode.com \ + 0xD0A725d82649f9e4155D7A60B638Fe33b3F25e3b \ + "getOperatorId(address operator)(bytes32)" + ``` > Note: You need to have installed [Foundry](https://book.getfoundry.sh/) diff --git a/docs/operator_guides/2_troubleshooting.md b/docs/operator_guides/2_troubleshooting.md index 84513069a1..92fdfdf35b 100644 --- a/docs/operator_guides/2_troubleshooting.md +++ b/docs/operator_guides/2_troubleshooting.md @@ -44,3 +44,12 @@ If your operator is not showing up after 1 hour, please check the following: This error is caused by the operator not being able to get the RPC urls. Make sure you have configured the RPC correctly in the [config file](0_running_an_operator.md#step-3---update-the-configuration-for-your-specific-operator). + +### How to update Rust + +In case you have an unsupported version of Rust, you can update it following the [official page](https://www.rust-lang.org/tools/install) + + +### Compiler family detection failed due to error: ToolNotFound: failed to find tool "c++": No such file or directory (os error 2) + +Run `sudo apt update && sudo apt install g++` to install the GNU C++ compiler. diff --git a/examples/circom/.env.devnet b/examples/circom/.env.devnet new file mode 100644 index 0000000000..a8b12e776a --- /dev/null +++ b/examples/circom/.env.devnet @@ -0,0 +1,5 @@ +ETH_RPC_URL=http://localhost:8545 +PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +# Deploy the contract with make deploy_contract_devnet +FIBONACCI_CONTRACT_ADDRESS= +NETWORK=devnet diff --git a/examples/circom/.env.example b/examples/circom/.env.example new file mode 100644 index 0000000000..62d4c11848 --- /dev/null +++ b/examples/circom/.env.example @@ -0,0 +1,6 @@ +ETH_RPC_URL= +# Make sure it has funds on Aligned +PRIVATE_KEY= +# Deploy the contract with make deploy_contract_devnet +FIBONACCI_CONTRACT_ADDRESS= +NETWORK= diff --git a/examples/circom/.gitignore b/examples/circom/.gitignore new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/examples/circom/.gitignore @@ -0,0 +1 @@ + diff --git a/examples/circom/Cargo.lock b/examples/circom/Cargo.lock new file mode 100644 index 0000000000..45c89cad42 --- /dev/null +++ b/examples/circom/Cargo.lock @@ -0,0 +1,6380 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sdk" +version = "0.1.0" +dependencies = [ + "ciborium", + "dialoguer", + "ethers", + "futures-util", + "hex", + "lambdaworks-crypto", + "log", + "reqwest 0.12.23", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha3", + "tokio", + "tokio-tungstenite 0.23.1", + "url", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f245ea9ef9be909776941c6c0ce829fb6b79cd6bfafa43762af7a702c4eb8ee4" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-core", + "alloy-eips", + "alloy-genesis", + "alloy-network", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-serde", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", +] + +[[package]] +name = "alloy-chains" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8ff73a143281cb77c32006b04af9c047a6b8fe5860e85a88ad325328965355" +dependencies = [ + "alloy-primitives", + "num_enum", + "strum 0.27.2", +] + +[[package]] +name = "alloy-consensus" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2179ba839ac532f50279f5da2a6c5047f791f03f6f808b4dfab11327b97902f" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "serde", + "serde_with", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aec6f67bdc62aa277e0ec13c1b1fb396c8a62b65c8e9bd8c1d3583cc6d1a8dd3" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5084cf42388dff75b255308194f9d3e67ae2a93ce7e24262a512cc4043ac1838" +dependencies = [ + "alloy-consensus", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "futures", + "futures-util", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-core" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe6c56d58fbfa9f0f6299376e8ce33091fc6494239466814c3f54b55743cb09" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f56873f3cac7a2c63d8e98a4314b8311aa96adb1a0f82ae923eb2119809d2c" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-eip2124" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-eip2930" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "k256", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-eips" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "609515c1955b33af3d78d26357540f68c5551a90ef58fd53def04f2aa074ec43" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "serde", + "sha2", +] + +[[package]] +name = "alloy-genesis" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dfec8348d97bd624901c6a4b22bb4c24df8a3128fc3d5e42d24f7b79dfa8588" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "alloy-trie", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125a1c373261b252e53e04d6e92c37d881833afc1315fceab53fd46045695640" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3994ab6ff6bdeb5aebe65381a8f6a47534789817570111555e8ac413e242ce06" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0be3aa020a6d3aa7601185b4c1a7d6f3a5228cb5424352db63064b29a455c891" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more 2.0.1", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498f2ee2eef38a6db0fc810c7bf7daebdf5f2fa8d04adb8bd53e54e91ddbdea3" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash", + "hashbrown 0.15.5", + "indexmap 2.11.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6ba76d476f475668925f858cc4db51781f12abdaa4e0274eb57a09f574e869" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-anvil", + "alloy-rpc-types-debug", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-signer", + "alloy-sol-types", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "either", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project", + "reqwest 0.12.23", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-pubsub" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04135d2fd7fa1fba3afe9f79ec2967259dbc0948e02fa0cd0e33a4a812e2cb0a" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "bimap", + "futures", + "parking_lot", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "wasmtimer", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6a6985b48a536b47aa0aece56e6a0f49240ce5d33a7f0c94f1b312eda79aa1" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-pubsub", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", + "futures", + "pin-project", + "reqwest 0.12.23", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "tracing-futures", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf27873220877cb15125eb6eec2f86c6e9b41473aca85844bd3d9d755bfc0a0" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-anvil", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-anvil" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c349f7339476f13e23308111dfeb67d136c11e7b2a6b1d162f6a124ad4ffb9b" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1a40595b927dfb07218459037837dbc8de8500a26024bb6ff0548dd2ccc13e0" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", +] + +[[package]] +name = "alloy-rpc-types-debug" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05525519bd7f37f98875354f0b3693d3ad3c7a7f067e3b8946777920be15cb5b" +dependencies = [ + "alloy-primitives", + "serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4235d79af20fe5583ca26096258fe9307571a345745c433cfd8c91b41aa2611e" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more 2.0.1", + "rand 0.8.5", + "serde", + "strum 0.27.2", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2a9f64e0f69cfb6029e2a044519a1bdd44ce9fc334d5315a7b9837f7a6748e5" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bccbe4594eaa2d69d21fa0b558c44e36202e599eb209da70b405415cb37a354" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-rpc-types-txpool" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56b8de4afea88d9ca1504b9dee40ffae69a2364aed82ab6e88e4348b41f57f6b" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-serde" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4dba6ff08916bc0a9cbba121ce21f67c0b554c39cf174bc7b9df6c651bd3c3b" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c580da7f00f3999e44e327223044d6732358627f93043e22d92c583f6583556" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-signer-local" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00f0f07862bd8f6bc66c953660693c5903062c2c9d308485b2a6eee411089e7" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "eth-keystore", + "k256", + "rand 0.8.5", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d20d867dcf42019d4779519a1ceb55eba8d7f3d0e4f0a89bcba82b8f9eb01e48" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74e91b0b553c115d14bd0ed41898309356dc85d0e3d4b9014c4e7715e48c8ad" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.11.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84194d31220803f5f62d0a00f583fd3a062b36382e2bea446f1af96727754565" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe8c27b3cf6b2bb8361904732f955bc7c05e00be5f469cec7e2280b6167f3ff0" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5383d34ea00079e6dd89c652bcbdb764db160cef84e6250926961a0b2295d04" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1f1a55f9ff9a48aa0b4a8c616803754620010fbb266edae2f4548f4304373b" +dependencies = [ + "alloy-json-rpc", + "base64 0.22.1", + "derive_more 2.0.1", + "futures", + "futures-utils-wasm", + "parking_lot", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171b3d8824b6697d6c8325373ec410d230b6c59ce552edfbfabe4e7b8a26aac3" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "reqwest 0.12.23", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-ipc" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a71043836f2144e1fe30f874eb2e9d71d2632d530e35b09fadbf787232f3f4" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures", + "interprocess", + "pin-project", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "alloy-transport-ws" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdde5b241745076bcbf2fcad818f2c42203bd2c5f4b50ea43b628ccbd2147ad6" +dependencies = [ + "alloy-pubsub", + "alloy-transport", + "futures", + "http 1.3.1", + "rustls 0.23.31", + "serde_json", + "tokio", + "tokio-tungstenite 0.26.2", + "tracing", + "ws_stream_wasm", +] + +[[package]] +name = "alloy-trie" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 2.0.1", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cc" +version = "1.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "circom-example" +version = "0.1.0" +dependencies = [ + "aligned-sdk", + "alloy", + "dotenv", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3", + "thiserror 1.0.69", +] + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "unicode-xid", +] + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror 1.0.69", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand 0.8.5", + "rlp", + "serde", + "sha3", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand 0.8.5", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest 0.11.27", + "serde", + "serde_json", + "syn 2.0.106", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum 0.26.3", + "syn 2.0.106", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +dependencies = [ + "chrono", + "ethers-core", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-tungstenite 0.20.1", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand 0.8.5", + "sha2", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" +dependencies = [ + "cfg-if", + "const-hex", + "dirs", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.26", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.3+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.11.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap 2.11.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper 1.7.0", + "hyper-util", + "rustls 0.23.31", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.7.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.0", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +dependencies = [ + "equivalent", + "hashbrown 0.15.5", + "serde", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "interprocess" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.52.0", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.3", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom 0.2.16", + "rand 0.8.5", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +dependencies = [ + "bitflags 2.9.3", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "lru" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "nybbles" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.3", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pest" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +dependencies = [ + "memchr", + "thiserror 2.0.16", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.11.0", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.106", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.9.3", + "lazy_static", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags 2.9.3", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "regex" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-rustls 0.27.7", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ruint" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.26", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.3", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.14", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +dependencies = [ + "once_cell", + "ring 0.17.14", + "rustls-pki-types", + "rustls-webpki 0.103.4", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +dependencies = [ + "ring 0.17.14", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.3", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_json" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.11.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror 2.0.16", + "time", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.106", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs", + "fs2", + "hex", + "once_cell", + "reqwest 0.11.27", + "semver 1.0.26", + "serde", + "serde_json", + "sha2", + "thiserror 1.0.69", + "url", + "zip", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0b198d366dbec045acfcd97295eb653a7a2b40e4dc764ef1e79aafcad439d3c" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.3", + "core-foundation", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.60.2", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +dependencies = [ + "thiserror-impl 2.0.16", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "pin-project-lite", + "slab", + "socket2 0.6.0", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls 0.23.31", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite 0.20.1", + "webpki-roots 0.25.4", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite 0.23.0", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.31", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tungstenite 0.26.2", + "webpki-roots 0.26.11", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.11.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.3", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "futures", + "futures-task", + "pin-project", + "tracing", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "rand 0.8.5", + "rustls 0.21.12", + "sha1", + "thiserror 1.0.69", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "native-tls", + "rand 0.8.5", + "sha1", + "thiserror 1.0.69", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "rand 0.9.2", + "rustls 0.23.31", + "rustls-pki-types", + "sha1", + "thiserror 2.0.16", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.16", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.3+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasmtimer" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d49b5d6c64e8558d9b1b065014426f35c18de636895d24893dbbd329743446" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.2", +] + +[[package]] +name = "webpki-roots" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "widestring" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +dependencies = [ + "windows-sys 0.60.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "ws_stream_wasm" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper 0.6.0", + "thiserror 2.0.16", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/examples/circom/Cargo.toml b/examples/circom/Cargo.toml new file mode 100644 index 0000000000..8ca314d180 --- /dev/null +++ b/examples/circom/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "circom-example" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = { version = "1.0.203", features = ["derive"] } +serde_json = "1.0.117" +aligned-sdk = { path = "../../crates/sdk" } +tokio = "1.44" +alloy = { version = "0.14", features = ["full", "signer-keystore", "providers"] } +dotenv = "0.15.0" + +[[bin]] +name = "main" +path = "./src/main.rs" + +[[bin]] +name = "get_vk_commitment" +path = "./src/get_vk_commitment.rs" diff --git a/examples/circom/Makefile b/examples/circom/Makefile new file mode 100644 index 0000000000..47fafd8a7c --- /dev/null +++ b/examples/circom/Makefile @@ -0,0 +1,22 @@ +SHELL := /bin/bash + +generate_circom_groth16_bn256_setup: ## Run the circom_groth16_bn256_script setup + @echo "Running circom_groth16_bn256 script setup..." + @cd circuits && ./generate_setup.sh + $(MAKE) get_vk_commitment + +deploy_contract: + @. ./contracts/.env && . ./contracts/deploy.sh + +deploy_contract_devnet: + @. ./contracts/.env.devnet && . ./contracts/deploy.sh + +get_vk_commitment: + cargo run --release --bin get_vk_commitment + +run: + cargo run --release --bin main + +run_devnet: + cargo run --release --bin main -- .env.devnet + diff --git a/examples/circom/README.md b/examples/circom/README.md new file mode 100644 index 0000000000..60d3728b63 --- /dev/null +++ b/examples/circom/README.md @@ -0,0 +1,115 @@ +# Circom Example + +This example demonstrates how to generate a Circom proof, submit it to **Aligned**, verify it on-chain, and read the public inputs from the proof. + +The circuit is a simple Fibonacci example that outputs the result as a **public input**. + +A Rust program is used to: + +1. Run the Circom prover +2. Submit the proof to **Aligned** for verification +3. Once verified, send the verification data to the smart contract +4. Update the contract state using the proof’s public input + +## Project structure + +- **`circuits/`**: the Circom circuit (Fibonacci example) +- **`contracts/`**: the smart contract that update the fibonacci value with the Aligned verification +- **`src/`** – Rust code to: + - Run the prover + - Submit the proof to Aligned + - Send the resulting verification data to the contract + - Update the contract state with the proof’s public output + +## Requirements + +- [snarkjs](https://github.com/iden3/snarkjs) +- [circom compiler](https://docs.circom.io/) + +## How to run it + +1. Generate the trusted setup: + +```shell +make generate_circom_groth16_bn256_setup +``` + +This command will output the vk commitment like this: + +```shell +VK COMMITMENT IS: `0xd8aeedbdfc90bfc0f61d81efdd23bcf119d7825f74d2af7071fee8fa144a3cb1` +``` + +2. Fill the `.env` variables in `contracts/.env` + +Follow the `contracts/.env.example`. + +3. Deploy the contract + +```shell +make deploy_contract +``` + +This command will output the contract address like this: + +```shell +##### anvil-hardhat +✅ [Success] Hash: 0x37679e098b58e952f3e4ec7f228f6a2b95d62608bcaa54585d1be2ef71ddc9ff +Contract Address: 0xDC11f7E700A4c898AE5CAddB1082cFfa76512aDD +Block: 2001 +Paid: 0.000000000005023288 ETH (627911 gas * 0.000000008 gwei) +``` + +Save it for the next step. + +4. Fill the program `.env` variable: + +Follow the `.env.example`. + +5. Run the program: + +```shell +make run +``` + +## How to run it locally + +Set up all the components of aligned locally following the [aligned setup guide](../../docs/3_guides/6_setup_aligned.md). + +1. Generate the trusted setup: + +```shell +make generate_circom_groth16_bn256_setup +``` + +This command will output the vk commitment like this: + +```shell +VK COMMITMENT IS: `0xd8aeedbdfc90bfc0f61d81efdd23bcf119d7825f74d2af7071fee8fa144a3cb1` +``` + +2. Complete the `VK_COMMITMENT` variable in `contracts/.env.devnet` + +3. Deploy the contract + +```shell +make deploy_contract_devnet +``` + +This command will output the contract address like this: + +```shell +##### anvil-hardhat +✅ [Success] Hash: 0x37679e098b58e952f3e4ec7f228f6a2b95d62608bcaa54585d1be2ef71ddc9ff +Contract Address: 0xDC11f7E700A4c898AE5CAddB1082cFfa76512aDD +Block: 2001 +Paid: 0.000000000005023288 ETH (627911 gas * 0.000000008 gwei) +``` + +4. Complete the `FIBONACCI_CONTRACT_ADDRESS` variable in the program env at `.env.devnet`: + +5. Run the program: + +```shell +make run_devnet +``` diff --git a/examples/circom/abi/FibonacciValidator.json b/examples/circom/abi/FibonacciValidator.json new file mode 100644 index 0000000000..b4530171b9 --- /dev/null +++ b/examples/circom/abi/FibonacciValidator.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_alignedServiceManager","type":"address","internalType":"address"},{"name":"_paymentServiceAddr","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"alignedServiceManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"fibonacciProgramVk","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"paymentServiceAddr","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setNewNumber","inputs":[{"name":"proofCommitment","type":"bytes32","internalType":"bytes32"},{"name":"pubInputBytes","type":"bytes","internalType":"bytes"},{"name":"proofGeneratorAddr","type":"bytes20","internalType":"bytes20"},{"name":"batchMerkleRoot","type":"bytes32","internalType":"bytes32"},{"name":"merkleProof","type":"bytes","internalType":"bytes"},{"name":"verificationDataBatchIndex","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"ProofVerificationFailed","inputs":[]}],"bytecode":{"object":"0x60806040527fc91d23fc3b1d24ecb241fbd501162734584f7c9f15ee5c95c712419206797a615f1b6002555f600355348015610039575f5ffd5b50604051610a8f380380610a8f833981810160405281019061005b919061013f565b815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061017d565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61010e826100e5565b9050919050565b61011e81610104565b8114610128575f5ffd5b50565b5f8151905061013981610115565b92915050565b5f5f60408385031215610155576101546100e1565b5b5f6101628582860161012b565b92505060206101738582860161012b565b9150509250929050565b6109058061018a5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c8063306e90291461004e578063406b854f1461006c57806390a05f2e14610088578063f19cd882146100a6575b5f5ffd5b6100566100c4565b6040516100639190610336565b60405180910390f35b6100866004803603810190610081919061054e565b6100ca565b005b6100906102d5565b60405161009d919061064e565b60405180910390f35b6100ae6102fa565b6040516100bb919061064e565b60405180910390f35b60025481565b5f858051906020012090505f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1689846002548a8a8a8a60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516024016101509897969594939291906106e5565b6040516020818303038152906040527f06045a91000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516101da91906107a2565b5f60405180830381855afa9150503d805f8114610212576040519150601f19603f3d011682016040523d82523d5f602084013e610217565b606091505b50915091505f8180602001905181019061023191906107ed565b90508061026a576040517fd611c31800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826102aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a190610872565b60405180910390fd5b5f898060200190518101906102bf91906108a4565b9050806003819055505050505050505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f819050919050565b6103308161031e565b82525050565b5f6020820190506103495f830184610327565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b6103698161031e565b8114610373575f5ffd5b50565b5f8135905061038481610360565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103d882610392565b810181811067ffffffffffffffff821117156103f7576103f66103a2565b5b80604052505050565b5f61040961034f565b905061041582826103cf565b919050565b5f67ffffffffffffffff821115610434576104336103a2565b5b61043d82610392565b9050602081019050919050565b828183375f83830152505050565b5f61046a6104658461041a565b610400565b9050828152602081018484840111156104865761048561038e565b5b61049184828561044a565b509392505050565b5f82601f8301126104ad576104ac61038a565b5b81356104bd848260208601610458565b91505092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6104fa816104c6565b8114610504575f5ffd5b50565b5f81359050610515816104f1565b92915050565b5f819050919050565b61052d8161051b565b8114610537575f5ffd5b50565b5f8135905061054881610524565b92915050565b5f5f5f5f5f5f60c0878903121561056857610567610358565b5b5f61057589828a01610376565b965050602087013567ffffffffffffffff8111156105965761059561035c565b5b6105a289828a01610499565b95505060406105b389828a01610507565b94505060606105c489828a01610376565b935050608087013567ffffffffffffffff8111156105e5576105e461035c565b5b6105f189828a01610499565b92505060a061060289828a0161053a565b9150509295509295509295565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106388261060f565b9050919050565b6106488161062e565b82525050565b5f6020820190506106615f83018461063f565b92915050565b610670816104c6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6106a882610676565b6106b28185610680565b93506106c2818560208601610690565b6106cb81610392565b840191505092915050565b6106df8161051b565b82525050565b5f610100820190506106f95f83018b610327565b610706602083018a610327565b6107136040830189610327565b6107206060830188610667565b61072d6080830187610327565b81810360a083015261073f818661069e565b905061074e60c08301856106d6565b61075b60e083018461063f565b9998505050505050505050565b5f81905092915050565b5f61077c82610676565b6107868185610768565b9350610796818560208601610690565b80840191505092915050565b5f6107ad8284610772565b915081905092915050565b5f8115159050919050565b6107cc816107b8565b81146107d6575f5ffd5b50565b5f815190506107e7816107c3565b92915050565b5f6020828403121561080257610801610358565b5b5f61080f848285016107d9565b91505092915050565b5f82825260208201905092915050565b7f7374617469635f63616c6c206661696c656400000000000000000000000000005f82015250565b5f61085c601283610818565b915061086782610828565b602082019050919050565b5f6020820190508181035f83015261088981610850565b9050919050565b5f8151905061089e81610524565b92915050565b5f602082840312156108b9576108b8610358565b5b5f6108c684828501610890565b9150509291505056fea2646970667358221220a80ce4a0ad877a67ed6e7dcedd7420d1de8ec33a47a01f1feb0a72f734084f1f64736f6c634300081c0033","sourceMap":"65:1654:16:-:0;;;217:66;181:102;;;;354:1;328:27;;362:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;469:22;445:21;;:46;;;;;;;;;;;;;;;;;;522:19;501:18;;:40;;;;;;;;;;;;;;;;;;362:186;;65:1654;;88:117:17;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:507::-;924:6;932;981:2;969:9;960:7;956:23;952:32;949:119;;;987:79;;:::i;:::-;949:119;1107:1;1132:64;1188:7;1179:6;1168:9;1164:22;1132:64;:::i;:::-;1122:74;;1078:128;1245:2;1271:64;1327:7;1318:6;1307:9;1303:22;1271:64;:::i;:::-;1261:74;;1216:129;845:507;;;;;:::o;65:1654:16:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c8063306e90291461004e578063406b854f1461006c57806390a05f2e14610088578063f19cd882146100a6575b5f5ffd5b6100566100c4565b6040516100639190610336565b60405180910390f35b6100866004803603810190610081919061054e565b6100ca565b005b6100906102d5565b60405161009d919061064e565b60405180910390f35b6100ae6102fa565b6040516100bb919061064e565b60405180910390f35b60025481565b5f858051906020012090505f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1689846002548a8a8a8a60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516024016101509897969594939291906106e5565b6040516020818303038152906040527f06045a91000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516101da91906107a2565b5f60405180830381855afa9150503d805f8114610212576040519150601f19603f3d011682016040523d82523d5f602084013e610217565b606091505b50915091505f8180602001905181019061023191906107ed565b90508061026a576040517fd611c31800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826102aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a190610872565b60405180910390fd5b5f898060200190518101906102bf91906108a4565b9050806003819055505050505050505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f819050919050565b6103308161031e565b82525050565b5f6020820190506103495f830184610327565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b6103698161031e565b8114610373575f5ffd5b50565b5f8135905061038481610360565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103d882610392565b810181811067ffffffffffffffff821117156103f7576103f66103a2565b5b80604052505050565b5f61040961034f565b905061041582826103cf565b919050565b5f67ffffffffffffffff821115610434576104336103a2565b5b61043d82610392565b9050602081019050919050565b828183375f83830152505050565b5f61046a6104658461041a565b610400565b9050828152602081018484840111156104865761048561038e565b5b61049184828561044a565b509392505050565b5f82601f8301126104ad576104ac61038a565b5b81356104bd848260208601610458565b91505092915050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6104fa816104c6565b8114610504575f5ffd5b50565b5f81359050610515816104f1565b92915050565b5f819050919050565b61052d8161051b565b8114610537575f5ffd5b50565b5f8135905061054881610524565b92915050565b5f5f5f5f5f5f60c0878903121561056857610567610358565b5b5f61057589828a01610376565b965050602087013567ffffffffffffffff8111156105965761059561035c565b5b6105a289828a01610499565b95505060406105b389828a01610507565b94505060606105c489828a01610376565b935050608087013567ffffffffffffffff8111156105e5576105e461035c565b5b6105f189828a01610499565b92505060a061060289828a0161053a565b9150509295509295509295565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106388261060f565b9050919050565b6106488161062e565b82525050565b5f6020820190506106615f83018461063f565b92915050565b610670816104c6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6106a882610676565b6106b28185610680565b93506106c2818560208601610690565b6106cb81610392565b840191505092915050565b6106df8161051b565b82525050565b5f610100820190506106f95f83018b610327565b610706602083018a610327565b6107136040830189610327565b6107206060830188610667565b61072d6080830187610327565b81810360a083015261073f818661069e565b905061074e60c08301856106d6565b61075b60e083018461063f565b9998505050505050505050565b5f81905092915050565b5f61077c82610676565b6107868185610768565b9350610796818560208601610690565b80840191505092915050565b5f6107ad8284610772565b915081905092915050565b5f8115159050919050565b6107cc816107b8565b81146107d6575f5ffd5b50565b5f815190506107e7816107c3565b92915050565b5f6020828403121561080257610801610358565b5b5f61080f848285016107d9565b91505092915050565b5f82825260208201905092915050565b7f7374617469635f63616c6c206661696c656400000000000000000000000000005f82015250565b5f61085c601283610818565b915061086782610828565b602082019050919050565b5f6020820190508181035f83015261088981610850565b9050919050565b5f8151905061089e81610524565b92915050565b5f602082840312156108b9576108b8610358565b5b5f6108c684828501610890565b9150509291505056fea2646970667358221220a80ce4a0ad877a67ed6e7dcedd7420d1de8ec33a47a01f1feb0a72f734084f1f64736f6c634300081c0033","sourceMap":"65:1654:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;181:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;554:1163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;141:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;99:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;181:102;;;;:::o;554:1163::-;815:26;854:13;844:24;;;;;;815:53;;879:22;903:21;928;;;;;;;;;;;:32;;1118:15;1151:18;1187;;1223;1259:15;1292:11;1321:26;1365:18;;;;;;;;;;;974:423;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;928:479;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;878:529;;;;1418:18;1450:8;1439:28;;;;;;;;;;;;:::i;:::-;1418:49;;1482:13;1477:77;;1518:25;;;;;;;;;;;;;;1477:77;1572:17;1564:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;1623:14;1651:13;1640:36;;;;;;;;;;;;:::i;:::-;1623:53;;1704:6;1686:15;:24;;;;805:912;;;;;554:1163;;;;;;:::o;141:33::-;;;;;;;;;;;;;:::o;99:36::-;;;;;;;;;;;;;:::o;7:77:17:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:117::-;1151:1;1148;1141:12;1165:117;1274:1;1271;1264:12;1288:102;1329:6;1380:2;1376:7;1371:2;1364:5;1360:14;1356:28;1346:38;;1288:102;;;:::o;1396:180::-;1444:77;1441:1;1434:88;1541:4;1538:1;1531:15;1565:4;1562:1;1555:15;1582:281;1665:27;1687:4;1665:27;:::i;:::-;1657:6;1653:40;1795:6;1783:10;1780:22;1759:18;1747:10;1744:34;1741:62;1738:88;;;1806:18;;:::i;:::-;1738:88;1846:10;1842:2;1835:22;1625:238;1582:281;;:::o;1869:129::-;1903:6;1930:20;;:::i;:::-;1920:30;;1959:33;1987:4;1979:6;1959:33;:::i;:::-;1869:129;;;:::o;2004:307::-;2065:4;2155:18;2147:6;2144:30;2141:56;;;2177:18;;:::i;:::-;2141:56;2215:29;2237:6;2215:29;:::i;:::-;2207:37;;2299:4;2293;2289:15;2281:23;;2004:307;;;:::o;2317:148::-;2415:6;2410:3;2405;2392:30;2456:1;2447:6;2442:3;2438:16;2431:27;2317:148;;;:::o;2471:423::-;2548:5;2573:65;2589:48;2630:6;2589:48;:::i;:::-;2573:65;:::i;:::-;2564:74;;2661:6;2654:5;2647:21;2699:4;2692:5;2688:16;2737:3;2728:6;2723:3;2719:16;2716:25;2713:112;;;2744:79;;:::i;:::-;2713:112;2834:54;2881:6;2876:3;2871;2834:54;:::i;:::-;2554:340;2471:423;;;;;:::o;2913:338::-;2968:5;3017:3;3010:4;3002:6;2998:17;2994:27;2984:122;;3025:79;;:::i;:::-;2984:122;3142:6;3129:20;3167:78;3241:3;3233:6;3226:4;3218:6;3214:17;3167:78;:::i;:::-;3158:87;;2974:277;2913:338;;;;:::o;3257:150::-;3294:7;3334:66;3327:5;3323:78;3312:89;;3257:150;;;:::o;3413:122::-;3486:24;3504:5;3486:24;:::i;:::-;3479:5;3476:35;3466:63;;3525:1;3522;3515:12;3466:63;3413:122;:::o;3541:139::-;3587:5;3625:6;3612:20;3603:29;;3641:33;3668:5;3641:33;:::i;:::-;3541:139;;;;:::o;3686:77::-;3723:7;3752:5;3741:16;;3686:77;;;:::o;3769:122::-;3842:24;3860:5;3842:24;:::i;:::-;3835:5;3832:35;3822:63;;3881:1;3878;3871:12;3822:63;3769:122;:::o;3897:139::-;3943:5;3981:6;3968:20;3959:29;;3997:33;4024:5;3997:33;:::i;:::-;3897:139;;;;:::o;4042:1413::-;4164:6;4172;4180;4188;4196;4204;4253:3;4241:9;4232:7;4228:23;4224:33;4221:120;;;4260:79;;:::i;:::-;4221:120;4380:1;4405:53;4450:7;4441:6;4430:9;4426:22;4405:53;:::i;:::-;4395:63;;4351:117;4535:2;4524:9;4520:18;4507:32;4566:18;4558:6;4555:30;4552:117;;;4588:79;;:::i;:::-;4552:117;4693:62;4747:7;4738:6;4727:9;4723:22;4693:62;:::i;:::-;4683:72;;4478:287;4804:2;4830:53;4875:7;4866:6;4855:9;4851:22;4830:53;:::i;:::-;4820:63;;4775:118;4932:2;4958:53;5003:7;4994:6;4983:9;4979:22;4958:53;:::i;:::-;4948:63;;4903:118;5088:3;5077:9;5073:19;5060:33;5120:18;5112:6;5109:30;5106:117;;;5142:79;;:::i;:::-;5106:117;5247:62;5301:7;5292:6;5281:9;5277:22;5247:62;:::i;:::-;5237:72;;5031:288;5358:3;5385:53;5430:7;5421:6;5410:9;5406:22;5385:53;:::i;:::-;5375:63;;5329:119;4042:1413;;;;;;;;:::o;5461:126::-;5498:7;5538:42;5531:5;5527:54;5516:65;;5461:126;;;:::o;5593:96::-;5630:7;5659:24;5677:5;5659:24;:::i;:::-;5648:35;;5593:96;;;:::o;5695:118::-;5782:24;5800:5;5782:24;:::i;:::-;5777:3;5770:37;5695:118;;:::o;5819:222::-;5912:4;5950:2;5939:9;5935:18;5927:26;;5963:71;6031:1;6020:9;6016:17;6007:6;5963:71;:::i;:::-;5819:222;;;;:::o;6047:118::-;6134:24;6152:5;6134:24;:::i;:::-;6129:3;6122:37;6047:118;;:::o;6171:98::-;6222:6;6256:5;6250:12;6240:22;;6171:98;;;:::o;6275:168::-;6358:11;6392:6;6387:3;6380:19;6432:4;6427:3;6423:14;6408:29;;6275:168;;;;:::o;6449:139::-;6538:6;6533:3;6528;6522:23;6579:1;6570:6;6565:3;6561:16;6554:27;6449:139;;;:::o;6594:373::-;6680:3;6708:38;6740:5;6708:38;:::i;:::-;6762:70;6825:6;6820:3;6762:70;:::i;:::-;6755:77;;6841:65;6899:6;6894:3;6887:4;6880:5;6876:16;6841:65;:::i;:::-;6931:29;6953:6;6931:29;:::i;:::-;6926:3;6922:39;6915:46;;6684:283;6594:373;;;;:::o;6973:118::-;7060:24;7078:5;7060:24;:::i;:::-;7055:3;7048:37;6973:118;;:::o;7097:1084::-;7404:4;7442:3;7431:9;7427:19;7419:27;;7456:71;7524:1;7513:9;7509:17;7500:6;7456:71;:::i;:::-;7537:72;7605:2;7594:9;7590:18;7581:6;7537:72;:::i;:::-;7619;7687:2;7676:9;7672:18;7663:6;7619:72;:::i;:::-;7701;7769:2;7758:9;7754:18;7745:6;7701:72;:::i;:::-;7783:73;7851:3;7840:9;7836:19;7827:6;7783:73;:::i;:::-;7904:9;7898:4;7894:20;7888:3;7877:9;7873:19;7866:49;7932:76;8003:4;7994:6;7932:76;:::i;:::-;7924:84;;8018:73;8086:3;8075:9;8071:19;8062:6;8018:73;:::i;:::-;8101;8169:3;8158:9;8154:19;8145:6;8101:73;:::i;:::-;7097:1084;;;;;;;;;;;:::o;8187:147::-;8288:11;8325:3;8310:18;;8187:147;;;;:::o;8340:386::-;8444:3;8472:38;8504:5;8472:38;:::i;:::-;8526:88;8607:6;8602:3;8526:88;:::i;:::-;8519:95;;8623:65;8681:6;8676:3;8669:4;8662:5;8658:16;8623:65;:::i;:::-;8713:6;8708:3;8704:16;8697:23;;8448:278;8340:386;;;;:::o;8732:271::-;8862:3;8884:93;8973:3;8964:6;8884:93;:::i;:::-;8877:100;;8994:3;8987:10;;8732:271;;;;:::o;9009:90::-;9043:7;9086:5;9079:13;9072:21;9061:32;;9009:90;;;:::o;9105:116::-;9175:21;9190:5;9175:21;:::i;:::-;9168:5;9165:32;9155:60;;9211:1;9208;9201:12;9155:60;9105:116;:::o;9227:137::-;9281:5;9312:6;9306:13;9297:22;;9328:30;9352:5;9328:30;:::i;:::-;9227:137;;;;:::o;9370:345::-;9437:6;9486:2;9474:9;9465:7;9461:23;9457:32;9454:119;;;9492:79;;:::i;:::-;9454:119;9612:1;9637:61;9690:7;9681:6;9670:9;9666:22;9637:61;:::i;:::-;9627:71;;9583:125;9370:345;;;;:::o;9721:169::-;9805:11;9839:6;9834:3;9827:19;9879:4;9874:3;9870:14;9855:29;;9721:169;;;;:::o;9896:168::-;10036:20;10032:1;10024:6;10020:14;10013:44;9896:168;:::o;10070:366::-;10212:3;10233:67;10297:2;10292:3;10233:67;:::i;:::-;10226:74;;10309:93;10398:3;10309:93;:::i;:::-;10427:2;10422:3;10418:12;10411:19;;10070:366;;;:::o;10442:419::-;10608:4;10646:2;10635:9;10631:18;10623:26;;10695:9;10689:4;10685:20;10681:1;10670:9;10666:17;10659:47;10723:131;10849:4;10723:131;:::i;:::-;10715:139;;10442:419;;;:::o;10867:143::-;10924:5;10955:6;10949:13;10940:22;;10971:33;10998:5;10971:33;:::i;:::-;10867:143;;;;:::o;11016:351::-;11086:6;11135:2;11123:9;11114:7;11110:23;11106:32;11103:119;;;11141:79;;:::i;:::-;11103:119;11261:1;11286:64;11342:7;11333:6;11322:9;11318:22;11286:64;:::i;:::-;11276:74;;11232:128;11016:351;;;;:::o","linkReferences":{}},"methodIdentifiers":{"alignedServiceManager()":"f19cd882","fibonacciProgramVk()":"306e9029","paymentServiceAddr()":"90a05f2e","setNewNumber(bytes32,bytes,bytes20,bytes32,bytes,uint256)":"406b854f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_alignedServiceManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_paymentServiceAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ProofVerificationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"alignedServiceManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fibonacciProgramVk\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentServiceAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"proofCommitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"pubInputBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes20\",\"name\":\"proofGeneratorAddr\",\"type\":\"bytes20\"},{\"internalType\":\"bytes32\",\"name\":\"batchMerkleRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verificationDataBatchIndex\",\"type\":\"uint256\"}],\"name\":\"setNewNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Fibonacci.sol\":\"FibonacciValidator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/Fibonacci.sol\":{\"keccak256\":\"0xd5f6dd59695885e9d63901c37b149caa950e81ab897fa4fc8a5c8d8d9a79174a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccfd235a71b194639ee4fc0ed805d2087a5888a50ec628c1c7f40de57d255dd4\",\"dweb:/ipfs/QmWE8cyVji4mCs74a4pawcp3dMUNsMNqwwkeDQx26bJFuk\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_alignedServiceManager","type":"address"},{"internalType":"address","name":"_paymentServiceAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ProofVerificationFailed"},{"inputs":[],"stateMutability":"view","type":"function","name":"alignedServiceManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"fibonacciProgramVk","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentServiceAddr","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"proofCommitment","type":"bytes32"},{"internalType":"bytes","name":"pubInputBytes","type":"bytes"},{"internalType":"bytes20","name":"proofGeneratorAddr","type":"bytes20"},{"internalType":"bytes32","name":"batchMerkleRoot","type":"bytes32"},{"internalType":"bytes","name":"merkleProof","type":"bytes"},{"internalType":"uint256","name":"verificationDataBatchIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setNewNumber"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Fibonacci.sol":"FibonacciValidator"},"evmVersion":"cancun","libraries":{}},"sources":{"src/Fibonacci.sol":{"keccak256":"0xd5f6dd59695885e9d63901c37b149caa950e81ab897fa4fc8a5c8d8d9a79174a","urls":["bzz-raw://ccfd235a71b194639ee4fc0ed805d2087a5888a50ec628c1c7f40de57d255dd4","dweb:/ipfs/QmWE8cyVji4mCs74a4pawcp3dMUNsMNqwwkeDQx26bJFuk"],"license":"UNLICENSED"}},"version":1},"id":16} \ No newline at end of file diff --git a/examples/circom/circuits/circuit.circom b/examples/circom/circuits/circuit.circom new file mode 100644 index 0000000000..c2f09b4e70 --- /dev/null +++ b/examples/circom/circuits/circuit.circom @@ -0,0 +1,18 @@ +pragma circom 2.0.0; + +template Multiplier(n) { + signal input a; + signal input b; + signal output c; + + signal int[n]; + + int[0] <== a*a + b; + for (var i=1; i diff --git a/examples/circom/contracts/.env.example b/examples/circom/contracts/.env.example new file mode 100644 index 0000000000..3a97f02702 --- /dev/null +++ b/examples/circom/contracts/.env.example @@ -0,0 +1,7 @@ +RPC_URL= +# Make sure you have enough funds to pay for the deployment +PRIVATE_KEY= +ALIGNED_SERVICE_MANAGER_ADDRESS= +PAYMENT_SERVICE_ADDRESS= +# generate it by setting up the circuit with make generate_circom_groth16_bn256_setup +VK_COMMITMENT= diff --git a/examples/circom/contracts/.gitignore b/examples/circom/contracts/.gitignore new file mode 100644 index 0000000000..7366ba4610 --- /dev/null +++ b/examples/circom/contracts/.gitignore @@ -0,0 +1,12 @@ +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +broadcast + +# Docs +docs/ + +# Dotenv file +.env diff --git a/examples/circom/contracts/README.md b/examples/circom/contracts/README.md new file mode 100644 index 0000000000..9265b45584 --- /dev/null +++ b/examples/circom/contracts/README.md @@ -0,0 +1,66 @@ +## Foundry + +**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** + +Foundry consists of: + +- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). +- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. +- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. +- **Chisel**: Fast, utilitarian, and verbose solidity REPL. + +## Documentation + +https://book.getfoundry.sh/ + +## Usage + +### Build + +```shell +$ forge build +``` + +### Test + +```shell +$ forge test +``` + +### Format + +```shell +$ forge fmt +``` + +### Gas Snapshots + +```shell +$ forge snapshot +``` + +### Anvil + +```shell +$ anvil +``` + +### Deploy + +```shell +$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +``` + +### Cast + +```shell +$ cast +``` + +### Help + +```shell +$ forge --help +$ anvil --help +$ cast --help +``` diff --git a/examples/circom/contracts/deploy.sh b/examples/circom/contracts/deploy.sh new file mode 100644 index 0000000000..38e9d50463 --- /dev/null +++ b/examples/circom/contracts/deploy.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# cd to the directory of this script so that this can be run from anywhere +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1 ; pwd -P ) + +cd "$parent_path" || exit 1 + +if [ -z "$ALIGNED_SERVICE_MANAGER_ADDRESS" ]; then + echo "ALIGNED_SERVICE_MANAGER_ADDRESS is not set. Please set it in .env" + exit 1 +fi + +if [ -z "$PAYMENT_SERVICE_ADDRESS" ]; then + echo "PAYMENT_SERVICE_ADDRESS is not set. Please set it in .env" + exit 1 +fi + +if [ -z "$RPC_URL" ]; then + echo "RPC_URL is not set. Please set it in .env" + exit 1 +fi + +if [ -z "$PRIVATE_KEY" ]; then + echo "PRIVATE_KEY is not set. Please set it in .env" + exit 1 +fi + +forge install + +forge script script/FibonacciDeployer.s.sol \ + "$ALIGNED_SERVICE_MANAGER_ADDRESS" \ + "$PAYMENT_SERVICE_ADDRESS" \ + "$VK_COMMITMENT" \ + --rpc-url "$RPC_URL" \ + --private-key "$PRIVATE_KEY" \ + --broadcast \ + --sig "run(address _alignedServiceManager,address _paymentServiceAddr,bytes32 _vkCommitment)" diff --git a/examples/circom/contracts/foundry.toml b/examples/circom/contracts/foundry.toml new file mode 100644 index 0000000000..25b918f9c9 --- /dev/null +++ b/examples/circom/contracts/foundry.toml @@ -0,0 +1,6 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/examples/circom/contracts/lib/forge-std b/examples/circom/contracts/lib/forge-std new file mode 160000 index 0000000000..8bbcf6e3f8 --- /dev/null +++ b/examples/circom/contracts/lib/forge-std @@ -0,0 +1 @@ +Subproject commit 8bbcf6e3f8f62f419e5429a0bd89331c85c37824 diff --git a/examples/circom/contracts/script/FibonacciDeployer.s.sol b/examples/circom/contracts/script/FibonacciDeployer.s.sol new file mode 100644 index 0000000000..56c704319d --- /dev/null +++ b/examples/circom/contracts/script/FibonacciDeployer.s.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console} from "forge-std/Script.sol"; +import {FibonacciValidator} from "../src/Fibonacci.sol"; + +contract FibonacciDeployer is Script { + function run(address _alignedServiceManager, address _paymentServiceAddr, bytes32 _vkCommitment) + public + returns (address) + { + vm.startBroadcast(); + + FibonacciValidator contractAddress = + new FibonacciValidator(_alignedServiceManager, _paymentServiceAddr, _vkCommitment); + + vm.stopBroadcast(); + return address(contractAddress); + } +} diff --git a/examples/circom/contracts/src/Fibonacci.sol b/examples/circom/contracts/src/Fibonacci.sol new file mode 100644 index 0000000000..5918ceef7a --- /dev/null +++ b/examples/circom/contracts/src/Fibonacci.sol @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +contract FibonacciValidator { + address public alignedServiceManager; + address public paymentServiceAddr; + + bytes32 public fibonacciProgramVk; + + error ProofVerificationFailed(); + + uint256 fibonacciNumber = 0; + + constructor(address _alignedServiceManager, address _paymentServiceAddr, bytes32 programVk) { + alignedServiceManager = _alignedServiceManager; + paymentServiceAddr = _paymentServiceAddr; + fibonacciProgramVk = programVk; + } + + function setNewNumber( + bytes32 proofCommitment, + bytes memory pubInputBytes, + bytes20 proofGeneratorAddr, + bytes32 batchMerkleRoot, + bytes memory merkleProof, + uint256 verificationDataBatchIndex + ) public { + bytes32 pubInputCommitment = keccak256(pubInputBytes); + (bool callWasSuccessful, bytes memory response) = alignedServiceManager.staticcall( + abi.encodeWithSignature( + "verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256,address)", + proofCommitment, + pubInputCommitment, + fibonacciProgramVk, + proofGeneratorAddr, + batchMerkleRoot, + merkleProof, + verificationDataBatchIndex, + paymentServiceAddr + ) + ); + + bool proofVerified = abi.decode(response, (bool)); + if (!proofVerified) { + revert ProofVerificationFailed(); + } + + require(callWasSuccessful, "static_call failed"); + + uint256 number = abi.decode(pubInputBytes, (uint256)); + fibonacciNumber = number; + } +} diff --git a/examples/circom/src/aligned.rs b/examples/circom/src/aligned.rs new file mode 100644 index 0000000000..0355dfe7c1 --- /dev/null +++ b/examples/circom/src/aligned.rs @@ -0,0 +1,56 @@ +use std::str::FromStr; + +use aligned_sdk::{ + common::types::{AlignedVerificationData, Signer, VerificationData, Wallet}, + verification_layer::{estimate_fee, get_chain_id}, +}; + +use crate::config::EnvConfig; + +pub async fn submit_proof_to_aligned( + config: EnvConfig, + proof: Vec, + vk: Vec, + public_inputs: Vec, +) -> AlignedVerificationData { + let chain_id = get_chain_id(&config.eth_rpc_url) + .await + .expect("To query chain id from rpc"); + let wallet = Wallet::from_str(&config.private_key) + .expect("Keystore to be `cast wallet` compliant") + .with_chain_id(chain_id); + + let verification_data = VerificationData { + proof_generator_addr: wallet.address(), + proving_system: aligned_sdk::common::types::ProvingSystemId::CircomGroth16Bn256, + proof, + vm_program_code: None, + pub_input: Some(public_inputs), + verification_key: Some(vk), + }; + + let nonce = aligned_sdk::verification_layer::get_nonce_from_batcher( + config.network.clone(), + wallet.address(), + ) + .await + .expect("Retrieve nonce from aligned batcher"); + + let max_fee = estimate_fee( + &config.eth_rpc_url, + aligned_sdk::common::types::FeeEstimationType::Instant, + ) + .await + .expect("Max fee to be retrieved"); + + aligned_sdk::verification_layer::submit_and_wait_verification( + &config.eth_rpc_url, + config.network.clone(), + &verification_data, + max_fee, + wallet, + nonce, + ) + .await + .expect("Proof to be sent") +} diff --git a/examples/circom/src/config.rs b/examples/circom/src/config.rs new file mode 100644 index 0000000000..b1770cb118 --- /dev/null +++ b/examples/circom/src/config.rs @@ -0,0 +1,46 @@ +use std::env; + +use aligned_sdk::common::types::Network; + +#[derive(Clone)] +pub struct EnvConfig { + pub eth_rpc_url: String, + pub private_key: String, + pub fibonacci_contract_address: String, + pub network: Network, +} + +impl EnvConfig { + pub fn new(env_file: Option) -> Self { + if let Some(env_file) = env_file { + dotenv::from_filename(env_file).expect("env file to exist"); + } else { + dotenv::dotenv().ok(); + } + + let eth_rpc_url = env::var("ETH_RPC_URL").expect("ETH_RPC_URL not set"); + let private_key = env::var("PRIVATE_KEY").expect("PRIVATE_KEY not set"); + let fibonacci_contract_address = + env::var("FIBONACCI_CONTRACT_ADDRESS").expect("FIBONACCI_CONTRACT_ADDRESS not set"); + + let network = match env::var("NETWORK") + .expect("NETWORK not set") + .to_lowercase() + .as_str() + { + "devnet" => Network::Devnet, + "holesky-stage" => Network::HoleskyStage, + "holesky" => Network::Holesky, + "mainnet" => Network::Mainnet, + "hoodi" => Network::Hoodi, + _ => panic!("Unsupported NETWORK value"), + }; + + EnvConfig { + eth_rpc_url, + private_key, + fibonacci_contract_address, + network, + } + } +} diff --git a/examples/circom/src/eth.rs b/examples/circom/src/eth.rs new file mode 100644 index 0000000000..8217c2e35d --- /dev/null +++ b/examples/circom/src/eth.rs @@ -0,0 +1,66 @@ +use std::str::FromStr; + +use aligned_sdk::common::types::AlignedVerificationData; +use alloy::{ + network::EthereumWallet, + primitives::{Address, U256}, + providers::ProviderBuilder, + signers::local::LocalSigner, + sol, +}; + +use crate::config::EnvConfig; + +sol!( + #[sol(rpc)] + FibonacciValidator, + "abi/FibonacciValidator.json" +); + +pub async fn update_number_on_contract( + config: EnvConfig, + pub_input_bytes: Vec, + aligned_verification_data: AlignedVerificationData, +) -> String { + let rpc_url = config.eth_rpc_url.parse().expect("RPC URL should be valid"); + let signer = LocalSigner::from_str(&config.private_key) + .expect("Keystore signer should be `cast wallet` compliant"); + let wallet = EthereumWallet::from(signer); + + let rpc_provider = ProviderBuilder::new() + .wallet(wallet.clone()) + .on_http(rpc_url); + let fibonacci_contract = FibonacciValidator::new( + Address::from_str(&config.fibonacci_contract_address) + .expect("State transition address should be valid"), + rpc_provider, + ); + + let mut merkle_proof_bytes: Vec = vec![]; + + for leaf in aligned_verification_data.batch_inclusion_proof.merkle_path { + merkle_proof_bytes.extend_from_slice(&leaf); + } + + let res = fibonacci_contract + .setNewNumber( + aligned_verification_data + .verification_data_commitment + .proof_commitment + .into(), + pub_input_bytes.into(), + wallet.default_signer().address().into(), + aligned_verification_data.batch_merkle_root.into(), + merkle_proof_bytes.into(), + U256::from(aligned_verification_data.index_in_batch as u64), + ) + .send() + .await + .expect("tx to not revert"); + + res.get_receipt() + .await + .expect("To get receipt") + .transaction_hash + .to_string() +} diff --git a/examples/circom/src/get_vk_commitment.rs b/examples/circom/src/get_vk_commitment.rs new file mode 100644 index 0000000000..e9281a5c73 --- /dev/null +++ b/examples/circom/src/get_vk_commitment.rs @@ -0,0 +1,14 @@ +use aligned_sdk::common::types::ProvingSystemId; +use alloy::{hex, primitives::Keccak256}; + +fn main() { + let vk_bytes = + std::fs::read("circuits/verification_key.json").expect("verification key to be created"); + + let mut hasher = Keccak256::new(); + hasher.update(vk_bytes); + hasher.update([ProvingSystemId::CircomGroth16Bn256 as u8]); + let vk_commitment = hasher.finalize().0; + + println!("VK COMMITMENT IS: `0x{}`", hex::encode(vk_commitment)); +} diff --git a/examples/circom/src/lib.rs b/examples/circom/src/lib.rs new file mode 100644 index 0000000000..c479a074a5 --- /dev/null +++ b/examples/circom/src/lib.rs @@ -0,0 +1,3 @@ +pub mod aligned; +pub mod config; +pub mod eth; diff --git a/examples/circom/src/main.rs b/examples/circom/src/main.rs new file mode 100644 index 0000000000..a1633423a7 --- /dev/null +++ b/examples/circom/src/main.rs @@ -0,0 +1,61 @@ +use std::{env, process::Command}; + +use circom_example::{aligned, config::EnvConfig, eth}; + +#[tokio::main] +async fn main() { + println!("==============================="); + println!("Starting proof generation..."); + println!("==============================="); + + // Run proof generation script + let status = Command::new("bash") + .arg("./circuits/generate_proof.sh") + .status() + .expect("failed to execute process"); + + if status.success() { + println!("Proof generation script executed successfully"); + } else { + println!("Script failed with status: {:?}", status.code()); + return; + } + + // Handle custom .env file + let args: Vec = env::args().collect(); + let custom_env = if args.len() > 1 { + let env_file = args[1].to_string(); + println!("Using custom .env file: {env_file}"); + Some(env_file) + } else { + println!("Using default .env file (if present)"); + None + }; + + let config: EnvConfig = EnvConfig::new(custom_env); + + // Load circuit artifacts + println!("-------------------------------"); + println!("Loading circuit artifacts..."); + println!("-------------------------------"); + + let proof = std::fs::read("circuits/proof.json").expect("proof.json should exist"); + let vk = std::fs::read("circuits/verification_key.json") + .expect("verification_key.json should exist"); + let public_inputs_file = + std::fs::read("circuits/public.json").expect("public.json should exist"); + let pub_inputs: Vec = + serde_json::from_slice(&public_inputs_file).expect("could not parse inputs json"); + let decoded_inputs = aligned_sdk::common::utils::encode_circom_pub_inputs(&pub_inputs) + .expect("inputs should be decoded"); + + println!("Submitting proof to Aligned..."); + let aligned_verification_data = + aligned::submit_proof_to_aligned(config.clone(), proof, vk, decoded_inputs.clone()).await; + + println!("Updating on-chain contract with proof result..."); + let receipt = + eth::update_number_on_contract(config, decoded_inputs, aligned_verification_data).await; + + println!("Done. Transaction receipt hash: {}", receipt); +} diff --git a/examples/l2/.env.devnet b/examples/l2/.env.devnet new file mode 100644 index 0000000000..9916fd1e5f --- /dev/null +++ b/examples/l2/.env.devnet @@ -0,0 +1,10 @@ +# .env example for devnet network +NETWORK=devnet +ETH_RPC_URL=http://localhost:8545 +WS_ETH_RPC_URL=ws://localhost:8546 +BEACON_CLIENT_URL=http://localhost:58801 +# Generate it with `make gen_devnet_owner_wallet` +PRIVATE_KEY_STORE_PATH="../contract-owner.keystore.json" # This is read from cmd/. +PRIVATE_KEY_STORE_PASSWORD=" diff --git a/examples/l2/.env.hoodi b/examples/l2/.env.hoodi new file mode 100644 index 0000000000..163fe03f59 --- /dev/null +++ b/examples/l2/.env.hoodi @@ -0,0 +1,8 @@ +# .env example for hoodi network +NETWORK=hoodi +ETH_RPC_URL=https://ethereum-hoodi-rpc.publicnode.com +WS_ETH_RPC_URL=wss://ethereum-hoodi-rpc.publicnode.com +BEACON_CLIENT_URL= # This can't be a public one as we need to retrieve blobs and they don't support that method +PRIVATE_KEY_STORE_PATH= +PRIVATE_KEY_STORE_PASSWORD= +STATE_TRANSITION_CONTRACT_ADDRESS= diff --git a/examples/l2/.gitignore b/examples/l2/.gitignore new file mode 100644 index 0000000000..f3fd04392a --- /dev/null +++ b/examples/l2/.gitignore @@ -0,0 +1,5 @@ +crates/l2/programs_ids.json +contract-owner.keystore.json +cmd/db +cmd/proof.bin +crates/db diff --git a/examples/l2/Cargo.lock b/examples/l2/Cargo.lock new file mode 100644 index 0000000000..02cea7ad70 --- /dev/null +++ b/examples/l2/Cargo.lock @@ -0,0 +1,9464 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-sdk" +version = "0.1.0" +dependencies = [ + "ciborium", + "dialoguer", + "ethers", + "futures-util", + "hex", + "lambdaworks-crypto", + "log", + "reqwest 0.12.23", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio", + "tokio-tungstenite 0.23.1", + "url", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6cfe35f100bc496007c9a00f90b88bdf565f1421d4c707c9f07e0717e2aaad" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-core", + "alloy-eips", + "alloy-genesis", + "alloy-network", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-serde", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "alloy-trie", +] + +[[package]] +name = "alloy-chains" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" +dependencies = [ + "alloy-primitives", + "num_enum 0.7.4", + "strum 0.27.2", +] + +[[package]] +name = "alloy-consensus" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59094911f05dbff1cf5b29046a00ef26452eccc8d47136d50a47c0cf22f00c85" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "alloy-tx-macros", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "secp256k1", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-consensus-any" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "903cb8f728107ca27c816546f15be38c688df3c381d7bd1a4a9f215effc1ddb4" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03df5cb3b428ac96b386ad64c11d5c6e87a5505682cf1fbd6f8f773e9eda04f6" +dependencies = [ + "alloy-consensus", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "futures", + "futures-util", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-core" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "575053cea24ea8cb7e775e39d5c53c33b19cfd0ca1cf6c0fd653f3d8c682095f" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6c2905bafc2df7ccd32ca3af13f0b0d82f2e2ff9dfbeb12196c0d978d5c0deb" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "itoa", + "serde", + "serde_json", + "winnow 0.7.13", +] + +[[package]] +name = "alloy-eip2124" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-eip2930" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "k256", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-eips" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac7f1c9a1ccc7f3e03c36976455751a6166a4f0d2d2c530c3f87dfe7d0cdc836" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "c-kzg", + "derive_more 2.0.1", + "either", + "serde", + "serde_with", + "sha2", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-genesis" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1421f6c9d15e5b86afbfe5865ca84dea3b9f77173a0963c1a2ee4e626320ada9" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "alloy-trie", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-json-abi" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2acb6637a9c0e1cdf8971e0ced8f3fa34c04c5e9dccf6bb184f6a64fe0e37d8" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65f763621707fa09cece30b73ecc607eb43fd7a72451fe3b46f645b905086926" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "http 1.3.1", + "serde", + "serde_json", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f59a869fa4b4c3a7f08b1c8cb79aec61c29febe6e24a24fe0fcfded8a9b5703" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more 2.0.1", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-network-primitives" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46e9374c667c95c41177602ebe6f6a2edd455193844f011d973d374b65501b38" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b77f7d5e60ad8ae6bd2200b8097919712a07a6db622a4b201e7ead6166f02e5" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash 0.2.0", + "hashbrown 0.16.0", + "indexmap 2.11.4", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77818b7348bd5486491a5297579dbfe5f706a81f8e1f5976393025f1e22a7c7d" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-anvil", + "alloy-rpc-types-debug", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-signer", + "alloy-sol-types", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "either", + "futures", + "futures-utils-wasm", + "lru 0.13.0", + "parking_lot", + "pin-project", + "reqwest 0.12.23", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-pubsub" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249b45103a66c9ad60ad8176b076106d03a2399a37f0ee7b0e03692e6b354cb9" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "auto_impl", + "bimap", + "futures", + "parking_lot", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", + "wasmtimer", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-rpc-client" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2430d5623e428dd012c6c2156ae40b7fe638d6fca255e3244e0fba51fa698e93" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-pubsub", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "futures", + "pin-project", + "reqwest 0.12.23", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e131624d08a25cfc40557041e7dc42e1182fa1153e7592d120f769a1edce56" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-anvil", + "alloy-rpc-types-debug", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-anvil" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d65e3266095e6d8e8028aab5f439c6b8736c5147314f7e606c61597e014cb8a0" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07429a1099cd17227abcddb91b5e38c960aaeb02a6967467f5bb561fbe716ac6" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", +] + +[[package]] +name = "alloy-rpc-types-debug" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeff305b7d10cc1c888456d023e7bb8a5ea82e9e42b951e37619b88cc1a1486d" +dependencies = [ + "alloy-primitives", + "derive_more 2.0.1", + "serde", + "serde_with", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222ecadcea6aac65e75e32b6735635ee98517aa63b111849ee01ae988a71d685" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more 2.0.1", + "rand 0.8.5", + "serde", + "strum 0.27.2", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db46b0901ee16bbb68d986003c66dcb74a12f9d9b3c44f8e85d51974f2458f0f" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f10620724bd45f80c79668a8cdbacb6974f860686998abce28f6196ae79444" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-rpc-types-txpool" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "864f41befa90102d4e02327679699a7e9510930e2924c529e31476086609fa89" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-serde" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5413814be7a22fbc81e0f04a2401fcc3eb25e56fd53b04683e8acecc6e1fe01b" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53410a18a61916e2c073a6519499514e027b01e77eeaf96acd1df7cf96ef6bb2" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-signer-aws" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58eaf63923ca3eade1181958f002ad4cbdf26a387061979e084b0f2a84fbba0d" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "aws-config", + "aws-sdk-kms", + "k256", + "spki", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "alloy-signer-local" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6006c4cbfa5d08cadec1fcabea6cb56dc585a30a9fce40bcf81e307d6a71c8e" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "eth-keystore", + "k256", + "rand 0.8.5", + "thiserror 2.0.17", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c84c3637bee9b5c4a4d2b93360ee16553d299c3b932712353caf1cea76d0e6" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a882aa4e1790063362434b9b40d358942b188477ac1c44cfb8a52816ffc0cc17" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.11.4", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e5772107f9bb265d8d8c86e0733937bb20d0857ea5425b1b6ddf51a9804042" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck 0.5.0", + "macro-string", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e188b939aa4793edfaaa099cb1be4e620036a775b4bdf24fdc56f1cd6fd45890" +dependencies = [ + "serde", + "winnow 0.7.13", +] + +[[package]] +name = "alloy-sol-types" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c8a9a909872097caffc05df134e5ef2253a1cdb56d3a9cf0052a042ac763f9" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d94ee404368a3d9910dfe61b203e888c6b0e151a50e147f95da8baff9f9c7763" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "auto_impl", + "base64 0.22.1", + "derive_more 2.0.1", + "futures", + "futures-utils-wasm", + "parking_lot", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tower 0.5.2", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2f8a6338d594f6c6481292215ee8f2fd7b986c80aba23f3f44e761a8658de78" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "reqwest 0.12.23", + "serde_json", + "tower 0.5.2", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-ipc" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17a37a8ca18006fa0a58c7489645619ff58cfa073f2b29c4e052c9bd114b123a" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures", + "interprocess", + "pin-project", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "alloy-transport-ws" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "679b0122b7bca9d4dc5eb2c0549677a3c53153f6e232f23f4b3ba5575f74ebde" +dependencies = [ + "alloy-pubsub", + "alloy-transport", + "futures", + "http 1.3.1", + "rustls 0.23.32", + "serde_json", + "tokio", + "tokio-tungstenite 0.26.2", + "tracing", + "ws_stream_wasm", +] + +[[package]] +name = "alloy-trie" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 2.0.1", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "alloy-tx-macros" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64c09ec565a90ed8390d82aa08cd3b22e492321b96cb4a3d4f58414683c9e2f" +dependencies = [ + "alloy-primitives", + "darling", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +dependencies = [ + "windows-sys 0.60.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.60.2", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "aws-config" +version = "1.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04b37ddf8d2e9744a0b9c19ce0b78efe4795339a90b66b7bae77987092cd2e69" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-sdk-sso", + "aws-sdk-ssooidc", + "aws-sdk-sts", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "hex", + "http 1.3.1", + "ring 0.17.14", + "time", + "tokio", + "tracing", + "url", + "zeroize", +] + +[[package]] +name = "aws-credential-types" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a1290207254984cb7c05245111bc77958b92a3c9bb449598044b36341cce6" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "zeroize", +] + +[[package]] +name = "aws-lc-rs" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b715a6010afb9e457ca2b7c9d2b9c344baa8baed7b38dc476034c171b32575" +dependencies = [ + "bindgen 0.72.1", + "cc", + "cmake", + "dunce", + "fs_extra", + "libloading", +] + +[[package]] +name = "aws-runtime" +version = "1.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e1ed337dabcf765ad5f2fb426f13af22d576328aaf09eac8f70953530798ec0" +dependencies = [ + "aws-credential-types", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "http-body 0.4.6", + "percent-encoding", + "pin-project-lite", + "tracing", + "uuid 1.18.1", +] + +[[package]] +name = "aws-sdk-kms" +version = "1.88.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded2cc988216984a324e9b1ec44167d80bb8c9c5428d88e83d35528a65bab7b1" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sso" +version = "1.85.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f2c741e2e439f07b5d1b33155e246742353d82167c785a2ff547275b7e32483" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-ssooidc" +version = "1.87.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6428ae5686b18c0ee99f6f3c39d94ae3f8b42894cdc35c35d8fb2470e9db2d4c" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sts" +version = "1.87.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5871bec9a79a3e8d928c7788d654f135dde0e71d2dd98089388bab36b37ef607" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-query", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sigv4" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084c34162187d39e3740cb635acd73c4e3a551a36146ad6fe8883c929c9f876c" +dependencies = [ + "aws-credential-types", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "form_urlencoded", + "hex", + "hmac", + "http 0.2.12", + "http 1.3.1", + "percent-encoding", + "sha2", + "time", + "tracing", +] + +[[package]] +name = "aws-smithy-async" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" +dependencies = [ + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "aws-smithy-http" +version = "0.62.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c4dacf2d38996cf729f55e7a762b30918229917eca115de45dfa8dfb97796c9" +dependencies = [ + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tracing", +] + +[[package]] +name = "aws-smithy-http-client" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734b4282fbb7372923ac339cc2222530f8180d9d4745e582de19a18cee409fd8" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "h2 0.3.27", + "h2 0.4.12", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper 1.7.0", + "hyper-rustls 0.24.2", + "hyper-rustls 0.27.7", + "hyper-util", + "pin-project-lite", + "rustls 0.21.12", + "rustls 0.23.32", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower 0.5.2", + "tracing", +] + +[[package]] +name = "aws-smithy-json" +version = "0.61.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa31b350998e703e9826b2104dd6f63be0508666e1aba88137af060e8944047" +dependencies = [ + "aws-smithy-types", +] + +[[package]] +name = "aws-smithy-observability" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9364d5989ac4dd918e5cc4c4bdcc61c9be17dcd2586ea7f69e348fc7c6cab393" +dependencies = [ + "aws-smithy-runtime-api", +] + +[[package]] +name = "aws-smithy-query" +version = "0.60.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +dependencies = [ + "aws-smithy-types", + "urlencoding", +] + +[[package]] +name = "aws-smithy-runtime" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa63ad37685ceb7762fa4d73d06f1d5493feb88e3f27259b9ed277f4c01b185" +dependencies = [ + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-http-client", + "aws-smithy-observability", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "fastrand", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "http-body 1.0.1", + "pin-project-lite", + "pin-utils", + "tokio", + "tracing", +] + +[[package]] +name = "aws-smithy-runtime-api" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07f5e0fc8a6b3f2303f331b94504bbf754d85488f402d6f1dd7a6080f99afe56" +dependencies = [ + "aws-smithy-async", + "aws-smithy-types", + "bytes", + "http 0.2.12", + "http 1.3.1", + "pin-project-lite", + "tokio", + "tracing", + "zeroize", +] + +[[package]] +name = "aws-smithy-types" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" +dependencies = [ + "base64-simd", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "http-body 1.0.1", + "http-body-util", + "itoa", + "num-integer", + "pin-project-lite", + "pin-utils", + "ryu", + "serde", + "time", + "tokio", + "tokio-util", +] + +[[package]] +name = "aws-smithy-xml" +version = "0.60.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db87b96cb1b16c024980f133968d52882ca0daaee3a086c6decc500f6c99728" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "aws-types" +version = "1.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b069d19bf01e46298eaedd7c6f283fe565a59263e53eebec945f3e6398f42390" +dependencies = [ + "aws-credential-types", + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "rustc_version 0.4.1", + "tracing", +] + +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.16", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" +dependencies = [ + "outref", + "vsimd", +] + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.106", +] + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn 2.0.106", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq 0.3.1", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq 0.3.1", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "bls12_381" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +dependencies = [ + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "blst" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + +[[package]] +name = "camino" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.27", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.11.4", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.106", + "tempfile", + "toml", +] + +[[package]] +name = "cc" +version = "1.2.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "clap_lex" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2", + "thiserror 1.0.69", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", +] + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" +dependencies = [ + "cfg-if", + "cpufeatures", + "proptest", + "serde_core", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "ctrlc" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" +dependencies = [ + "dispatch", + "nix", + "windows-sys 0.61.2", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "dashu" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b3e5ac1e23ff1995ef05b912e2b012a8784506987a2651552db2c73fb3d7e0" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-macros", + "dashu-ratio", + "rustversion", +] + +[[package]] +name = "dashu-base" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b80bf6b85aa68c58ffea2ddb040109943049ce3fbdf4385d0380aef08ef289" + +[[package]] +name = "dashu-float" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" +dependencies = [ + "dashu-base", + "dashu-int", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-int" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" +dependencies = [ + "cfg-if", + "dashu-base", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93381c3ef6366766f6e9ed9cf09e4ef9dec69499baf04f0c60e70d653cf0ab10" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-ratio", + "paste", + "proc-macro2", + "quote", + "rustversion", +] + +[[package]] +name = "dashu-ratio" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e33b04dd7ce1ccf8a02a69d3419e354f2bbfdf4eb911a0b7465487248764c9" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "num-modular", + "num-order", + "rustversion", +] + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "unicode-xid", +] + +[[package]] +name = "dialoguer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +dependencies = [ + "console", + "shell-words", + "tempfile", + "thiserror 1.0.69", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand 0.8.5", + "reqwest 0.12.23", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff 0.13.1", + "generic-array 0.14.7", + "group 0.13.0", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand 0.8.5", + "rlp", + "serde", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand 0.8.5", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", + "uuid 0.8.2", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.69", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest 0.11.27", + "serde", + "serde_json", + "syn 2.0.106", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array 0.14.7", + "k256", + "num_enum 0.7.4", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum 0.26.3", + "syn 2.0.106", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +dependencies = [ + "chrono", + "ethers-core", + "reqwest 0.11.27", + "semver 1.0.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-tungstenite 0.20.1", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand 0.8.5", + "sha2", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" +dependencies = [ + "cfg-if", + "const-hex", + "dirs", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.27", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "eventsource-stream" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" +dependencies = [ + "futures-core", + "nom", + "pin-project-lite", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "generic-array" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" +dependencies = [ + "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.7+wasi-0.2.4", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "memuse", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.11.4", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap 2.11.4", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "halo2" +version = "0.1.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a23c779b38253fe1538102da44ad5bd5378495a61d2c4ee18d64eaa61ae5995" +dependencies = [ + "halo2_proofs", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core 0.6.4", + "rayon", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "foldhash 0.2.0", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http 0.2.12", + "hyper 0.14.32", + "log", + "rustls 0.21.12", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper 1.7.0", + "hyper-util", + "rustls 0.23.32", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tower-service", + "webpki-roots 1.0.2", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper 1.7.0", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.7.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.0", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", + "serde", + "serde_core", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "interprocess" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.52.0", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381", + "ff 0.12.1", + "group 0.12.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "l2" +version = "0.1.0" +dependencies = [ + "aligned-sdk", + "alloy", + "bincode", + "dotenv", + "futures-util", + "lambdaworks-crypto", + "primitive-types", + "rand 0.8.5", + "serde", + "serde_json", + "sp1-build", + "sp1-sdk", + "sp1_state_transition_program", + "tokio", + "tracing", + "tracing-subscriber", + "types", +] + +[[package]] +name = "l2_cmd" +version = "0.1.0" +dependencies = [ + "aligned-sdk", + "bincode", + "dotenv", + "l2", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "sha2", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom 0.2.16", + "rand 0.8.5", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "libc" +version = "0.2.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.5", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +dependencies = [ + "bitflags 2.9.4", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "lru" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memuse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive 0.7.4", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "nybbles" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" +dependencies = [ + "alloy-rlp", + "cfg-if", + "proptest", + "ruint", + "serde", + "smallvec", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "outref" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p3-air" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" +dependencies = [ + "p3-field", + "p3-matrix", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" +dependencies = [ + "ff 0.13.1", + "num-bigint 0.4.6", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-field", + "p3-matrix", + "p3-util", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-interpolation", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-interpolation" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-util", +] + +[[package]] +name = "p3-keccak-air" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" +dependencies = [ + "p3-air", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand 0.8.5", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" +dependencies = [ + "itertools 0.12.1", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.1", + "group 0.13.0", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pest" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.11.4", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.106", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit 0.23.6", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +dependencies = [ + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.9.4", + "lazy_static", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls 0.23.32", + "socket2 0.6.0", + "thiserror 2.0.17", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.2", + "ring 0.17.14", + "rustc-hash 2.1.1", + "rustls 0.23.32", + "rustls-pki-types", + "slab", + "thiserror 2.0.17", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.0", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "serde", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rayon-scan" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f87cc11a0140b4b0da0ffc889885760c61b13672d80a908920b2c0df078fa14" +dependencies = [ + "rayon", +] + +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.9.4", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "regex" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-lite" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" + +[[package]] +name = "regex-syntax" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-rustls 0.27.7", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.32", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.26.4", + "tokio-util", + "tower 0.5.2", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots 1.0.2", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +dependencies = [ + "anyhow", + "async-trait", + "http 1.3.1", + "reqwest 0.12.23", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rrs-succinct" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" +dependencies = [ + "downcast-rs", + "num_enum 0.5.11", + "paste", +] + +[[package]] +name = "ruint" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "ark-ff 0.5.0", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "rlp", + "ruint-macro", + "serde_core", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.27", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.14", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" +dependencies = [ + "aws-lc-rs", + "log", + "once_cell", + "ring 0.17.14", + "rustls-pki-types", + "rustls-webpki 0.103.7", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.5.1", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" +dependencies = [ + "aws-lc-rs", + "ring 0.17.14", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "rusty-fork" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "scc" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "sdd" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys", + "serde", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.10.1", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.11.4", + "schemars 0.9.0", + "schemars 1.0.4", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "serial_test" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1#8f6d303c0861ba7e5adcc36207c0f41fe5edaabc" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simple_asn1" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror 2.0.17", + "time", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "sp1-build" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb5e809974422e96b9033f1db60405e72a776faa49f39c8d4dfc6da3943a385" +dependencies = [ + "anyhow", + "cargo_metadata", + "chrono", + "clap", + "dirs", + "sp1-prover", +] + +[[package]] +name = "sp1-core-executor" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc79ba7a23ee664870ac6dd9ca8125d9fd0bb1c6acb13cb34cb1c0b81458e89" +dependencies = [ + "bincode", + "bytemuck", + "clap", + "elf", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "nohash-hasher", + "num", + "p3-baby-bear", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "range-set-blaze", + "rrs-succinct", + "serde", + "serde_json", + "sp1-curves", + "sp1-primitives", + "sp1-stark", + "strum 0.26.3", + "strum_macros 0.26.4", + "subenum", + "thiserror 1.0.69", + "tiny-keccak", + "tracing", + "typenum", + "vec_map", +] + +[[package]] +name = "sp1-core-machine" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1cbc279cf9dcf1faabc8d9b592027cf5ce5bfea6d44d2da58351379f92dba1" +dependencies = [ + "bincode", + "cbindgen", + "cc", + "cfg-if", + "elliptic-curve", + "generic-array 1.1.0", + "glob", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "k256", + "num", + "num_cpus", + "p256", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-field", + "p3-keccak-air", + "p3-matrix", + "p3-maybe-rayon", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "pathdiff", + "rand 0.8.5", + "rayon", + "rayon-scan", + "serde", + "serde_json", + "size", + "snowbridge-amcl", + "sp1-core-executor", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "strum 0.26.3", + "strum_macros 0.26.4", + "tempfile", + "thiserror 1.0.69", + "tracing", + "tracing-forest", + "tracing-subscriber", + "typenum", + "web-time", +] + +[[package]] +name = "sp1-cuda" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a04cfd497bcb85d52eccd3718ddc8d88f17bfc4aefa288b41d1b0b21a065f3fc" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-curves" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69234f4667ae1a00f7bfb90b42d6aa141744114b128ac262b9a28e9c869cf514" +dependencies = [ + "cfg-if", + "dashu", + "elliptic-curve", + "generic-array 1.1.0", + "itertools 0.13.0", + "k256", + "num", + "p256", + "p3-field", + "serde", + "snowbridge-amcl", + "sp1-primitives", + "sp1-stark", + "typenum", +] + +[[package]] +name = "sp1-derive" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a736bce661752b1d6ecf33eca197443fb535124b3caabd332862d6f8258e3c8d" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-lib" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1fe81b6f87134f9170cb642f948ae41e0ee1cd3785e0cb665add5b67106d1a" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dddd8d022840c1c500e0d7f82e9b9cf080b7dabd469f06b394010e6a594f692b" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1-prover" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b14da2fa5bea1b2fffccda3f5c0c9a153a766f412c5259ea75302e58629e7c" +dependencies = [ + "anyhow", + "bincode", + "clap", + "dirs", + "downloader", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "lru 0.12.5", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rayon", + "serde", + "serde_json", + "serial_test", + "sha2", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "thiserror 1.0.69", + "tracing", + "tracing-appender", + "tracing-subscriber", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c956633f64e93396eecc712d6516cfda94f32c0855d149b71dc43911e7b7f26f" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-traits", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rand 0.8.5", + "rayon", + "serde", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "tracing", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61aa201b49cbdd52be19faec75f648e7e5e2c4930bcea7f4d1f1dbb3882cc518" +dependencies = [ + "backtrace", + "itertools 0.13.0", + "p3-baby-bear", + "p3-bn254-fr", + "p3-field", + "p3-symmetric", + "serde", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-stark", + "tracing", + "vec_map", +] + +[[package]] +name = "sp1-recursion-core" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e919d8031abe3b01ed001d5877801c2edcea0d98de56786a3e631a10fea3400d" +dependencies = [ + "backtrace", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "pathdiff", + "rand 0.8.5", + "serde", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "thiserror 1.0.69", + "tracing", + "vec_map", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c8467ade873bf1e43d8e6386a7feaac6e9603c12771fb33c5b0c0a6f3c63bc" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b651c433d85aaa869fb581f5209626c80c2a345191fac7419a2e97aaad017bbc" +dependencies = [ + "anyhow", + "bincode", + "bindgen 0.70.1", + "cc", + "cfg-if", + "hex", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-symmetric", + "serde", + "serde_json", + "sha2", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-stark", + "tempfile", + "tracing", +] + +[[package]] +name = "sp1-sdk" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ed77ad8133ef4d915ad55ce700b53cd32a72fc3829ae4ad0fdf4db1982c983a" +dependencies = [ + "alloy-primitives", + "alloy-signer", + "alloy-signer-aws", + "alloy-signer-local", + "alloy-sol-types", + "anyhow", + "async-trait", + "aws-config", + "aws-sdk-kms", + "backoff", + "bincode", + "cfg-if", + "dirs", + "eventsource-stream", + "futures", + "hashbrown 0.14.5", + "hex", + "indicatif", + "itertools 0.13.0", + "k256", + "p3-baby-bear", + "p3-field", + "p3-fri", + "prost", + "reqwest 0.12.23", + "reqwest-middleware", + "rustls 0.23.32", + "serde", + "serde_json", + "sp1-build", + "sp1-core-executor", + "sp1-core-machine", + "sp1-cuda", + "sp1-primitives", + "sp1-prover", + "sp1-stark", + "strum 0.26.3", + "strum_macros 0.26.4", + "sysinfo", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tonic", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-stark" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48b9b57606ab0eb9560f0456dc978166ab0a3bd9d8b3f2ab24ea5e1377c56f07" +dependencies = [ + "arrayref", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rayon-scan", + "serde", + "sp1-derive", + "sp1-primitives", + "strum 0.26.3", + "strum_macros 0.26.4", + "sysinfo", + "tracing", +] + +[[package]] +name = "sp1-zkvm" +version = "5.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18636018d03fcee05736c3a214eeb7c831c5ba2ef08b1bcffbfdb108998e7663" +dependencies = [ + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", + "lazy_static", + "libm", + "p3-baby-bear", + "p3-field", + "rand 0.8.5", + "sha2", + "sp1-lib", + "sp1-primitives", +] + +[[package]] +name = "sp1_state_transition_program" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "primitive-types", + "serde", + "serde_json", + "sha3 0.10.8 (git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1)", + "sp1-zkvm", + "types", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.106", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "subenum" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3d08fe7078c57309d5c3d938e50eba95ba1d33b9c3a101a8465fc6861a5416" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs", + "fs2", + "hex", + "once_cell", + "reqwest 0.11.27", + "semver 1.0.27", + "serde", + "serde_json", + "sha2", + "thiserror 1.0.69", + "url", + "zip", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2375c17f6067adc651d8c2c51658019cef32edfff4a982adaf1d7fd1c039f08b" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.9.4", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "slab", + "socket2 0.6.0", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls 0.23.32", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite 0.20.1", + "webpki-roots 0.25.4", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite 0.23.0", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.32", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.4", + "tungstenite 0.26.2", + "webpki-roots 0.26.11", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.11.4", + "toml_datetime 0.6.11", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.11.4", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow 0.7.13", +] + +[[package]] +name = "toml_edit" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +dependencies = [ + "indexmap 2.11.4", + "toml_datetime 0.7.2", + "toml_parser", + "winnow 0.7.13", +] + +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ + "winnow 0.7.13", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2 0.4.12", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.7.0", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs 0.8.1", + "rustls-pemfile 2.2.0", + "socket2 0.5.10", + "tokio", + "tokio-rustls 0.26.4", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.4", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-forest" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror 1.0.69", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "rand 0.8.5", + "rustls 0.21.12", + "sha1", + "thiserror 1.0.69", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "native-tls", + "rand 0.8.5", + "sha1", + "thiserror 1.0.69", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "rand 0.9.2", + "rustls 0.23.32", + "rustls-pki-types", + "sha1", + "thiserror 2.0.17", + "utf-8", +] + +[[package]] +name = "twirp-rs" +version = "0.13.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27dfcc06b8d9262bc2d4b8d1847c56af9971a52dd8a0076876de9db763227d0d" +dependencies = [ + "async-trait", + "axum", + "futures", + "http 1.3.1", + "http-body-util", + "hyper 1.7.0", + "prost", + "reqwest 0.12.23", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tower 0.5.2", + "url", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "types" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "primitive-types", + "serde", + "serde_json", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.16", + "serde", +] + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +dependencies = [ + "serde", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + +[[package]] +name = "web-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.2", +] + +[[package]] +name = "webpki-roots" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "widestring" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "ws_stream_wasm" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper 0.6.0", + "thiserror 2.0.17", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xmlparser" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2", + "bls12_381", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand 0.8.5", + "serde", + "sha2", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/examples/l2/Cargo.toml b/examples/l2/Cargo.toml new file mode 100644 index 0000000000..3d2bdaf21e --- /dev/null +++ b/examples/l2/Cargo.toml @@ -0,0 +1,18 @@ +[workspace] +resolver = "2" +members = ["./cmd/", "crates/l2", "crates/types"] + +[workspace.package] +version = "0.1.0" +edition = "2021" + +[workspace.dependencies] +serde = { version = "1.0.203", features = ["derive"] } +serde_json = "1.0.117" +primitive-types = { version = "0.12.0", features = ["serde"] } +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"]} +sha3 = "0.10.8" +types = { path = "crates/types" } + +[profile.release] +opt-level = 3 diff --git a/examples/l2/Makefile b/examples/l2/Makefile new file mode 100644 index 0000000000..04a200efd2 --- /dev/null +++ b/examples/l2/Makefile @@ -0,0 +1,50 @@ +.PHONY: gen_devnet_owner_wallet gen_env_l2_holesky gen_env_l2_hoodi gen_env_l2_devnet run_l2 generate_program_id gen_env_contract_holesky gen_env_contract_hoodi gen_env_contract_devnet deploy_contract clean_db + +SHELL := /bin/bash + +__CONFIG__: +gen_devnet_owner_wallet: + rm -f ./contract-owner.keystore.json + cast wallet import -k . contract-owner.keystore.json --private-key 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a --unsafe-password " +``` + +Then you need to obtain some funds to pay for gas and proof verification. +You can do this by using this [faucet](https://hoodi-faucet.pk910.de/) + +*This same wallet is used to send the proof via aligned, so you'll also need to fund it on aligned. Follow this [guide](https://docs.alignedlayer.com/guides/0_submitting_proofs#id-2.-send-funds-to-aligned).* + +### 2. Deploy the contract + +- Generate the base `.env`: + + ```shell + make gen_env_contract_hoodi + ``` + +- Get the program ID of the l2 program you are proving: + + ```shell + make generate_program_id + ``` + +- Complete the following fields `contracts/.env` file: + - `PROGRAM_ID=` (use the previously generated ID, you can re check with a `cat ./crates/l2/programs_ids.json` ) + - `PRIVATE_KEY`: the private key used for the deployment, it needs to have some funds to pay for the deployment. + - `OWNER_ADDRESS`: you have to provide the *address of the wallet created in step `1.`*. + +- Deploy the contracts with: + + ```shell + make deploy_contract + ``` + +*Save the output contract address.* + +### 3. Setup the L2 + +- Generate the base `.env` run: + + ```shell + make gen_env_l2_hoodi + ``` + +- Complete the missing fields on the `.env`: + - `PRIVATE_KEY_STORE_PATH`: The path to the keystore created in `1.`. + - `PRIVATE_KEY_STORE_PASSWORD`: The password of the keystore crated in step `1.`. + - `STATE_TRANSITION_CONTRACT_ADDRESS`: The address of the contract deployed in step `2.` + +Finally [run the l2](#running-the-l2). + +## Setup Localnet + +You can also run this example on a local devnet. To get started, navigate to the root of the Aligned repository + +- Start Ethereum package and the Batcher + +```shell +# This will start the local net +make ethereum_package_start +# Start the batcher +make batcher_start_ethereum_package +``` + +- Navigate back to the example directory: + +```shell +cd examples/l2 +``` + +- Generate the `.env` files for the contracts and L2: + +```shell +make gen_env_contract_devnet +make gen_env_l2_devnet +``` + +- Generate a pre funded wallet (or create one as specified [previously here](#1-create-keystore)): + +```shell +# This will generate the keystore and fund it on aligned +make gen_devnet_owner_wallet +``` + +- Generate the program ID of the program that is going to be proven: + +```shell +make generate_program_id +``` + +- Set the generated program ID on `contracts/.env`. + +- Deploy the contract + +```shell +make deploy_contract +``` + +- Set the output address of the contract in `.env` + +- [run the l2](#running-the-l2) + + +## Running the L2 + +- Set up the initial State + +```shell +make init_state +``` + +- Perform the L2 account updates and prove them in the zkvm: + +```shell +make prove_state_transition +``` + +- Wait 24 hs for the proof to be aggregated, or if running locally, run the aggregator with either: + + ```make proof_aggregator_start_ethereum_package AGGREGATOR=sp1``` +or with cuda: + ```make proof_aggregator_start_gpu_ethereum_package AGGREGATOR=sp1``` + +- Update state transition on chain: + +```shell +make update_state_on_chain +``` + +You should see a transaction receipt in the console and after the stateRoot updated on-chain. diff --git a/examples/l2/cmd/Cargo.toml b/examples/l2/cmd/Cargo.toml new file mode 100644 index 0000000000..6bfd129415 --- /dev/null +++ b/examples/l2/cmd/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "l2_cmd" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = { workspace = true } +serde_json = { workspace = true } +tracing = { version = "0.1", features = ["log"] } +tracing-subscriber = { version = "0.3.0", features = ["env-filter"] } +bincode = "1.3.3" +tokio = "1.44" +dotenv = "0.15" +l2 = { path = "../crates/l2/" } +aligned-sdk = { path = "../../../crates/sdk" } + +[lib] +name = "l2_cmd" +path = "./lib.rs" + +[[bin]] +name = "prove_state_transition" +path = "./prove_state_transition.rs" + +[[bin]] +name = "update_state_on_chain" +path = "./update_state_on_chain.rs" diff --git a/examples/l2/cmd/lib.rs b/examples/l2/cmd/lib.rs new file mode 100644 index 0000000000..b5614dd823 --- /dev/null +++ b/examples/l2/cmd/lib.rs @@ -0,0 +1 @@ +pub mod utils; diff --git a/examples/l2/cmd/prove_state_transition.rs b/examples/l2/cmd/prove_state_transition.rs new file mode 100644 index 0000000000..7d1f03bb17 --- /dev/null +++ b/examples/l2/cmd/prove_state_transition.rs @@ -0,0 +1,24 @@ +use std::{fs::File, io::Write}; + +use l2::l2::L2; +use tracing::info; +use tracing_subscriber::FmtSubscriber; + +use l2_cmd::utils::load_config; + +#[tokio::main] +async fn main() { + let subscriber = FmtSubscriber::builder().finish(); + tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); + + let config = load_config(); + let mut l2 = L2::new(config); + + let proof = l2.prove_state_transition_and_send_proof_to_aligned().await; + info!("Serializing and saving proof on disk to be verified later on chain"); + + let proof_bytes = bincode::serialize(&proof).unwrap(); + let mut file = File::create("./proof.bin").expect("Unable to create file"); + file.write(&proof_bytes).unwrap(); + info!("Proof stored in disk, in the next 24hs it will be aggregated and verified and aligned, so you should retrieve its status later"); +} diff --git a/examples/l2/cmd/update_state_on_chain.rs b/examples/l2/cmd/update_state_on_chain.rs new file mode 100644 index 0000000000..068925e79d --- /dev/null +++ b/examples/l2/cmd/update_state_on_chain.rs @@ -0,0 +1,20 @@ +use l2::l2::L2; +use tracing::info; +use tracing_subscriber::FmtSubscriber; + +use l2_cmd::utils::load_config; + +#[tokio::main] +async fn main() { + let subscriber = FmtSubscriber::builder().finish(); + tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); + + let config = load_config(); + let mut l2 = L2::new(config); + + info!("Loading proof from disk to verify on chain"); + + let proof_bytes = std::fs::read("./proof.bin").unwrap(); + let proof = bincode::deserialize(&proof_bytes).unwrap(); + l2.update_state_on_chain(proof).await; +} diff --git a/examples/l2/cmd/utils.rs b/examples/l2/cmd/utils.rs new file mode 100644 index 0000000000..3498ca4589 --- /dev/null +++ b/examples/l2/cmd/utils.rs @@ -0,0 +1,33 @@ +use std::env; + +use aligned_sdk::common::types::Network; +use dotenv::dotenv; +use l2::config::Config; + +pub fn load_config() -> Config { + dotenv().ok(); + + let network = match env::var("NETWORK").expect("NETWORK not set").as_str() { + "holesky" => Network::Holesky, + "holesky-stage" => Network::HoleskyStage, + "devnet" => Network::Devnet, + "hoodi" => Network::Hoodi, + _ => panic!("Invalid network, possible values are: holesky, holesky-stage, hoodi, devnet"), + }; + + let config = Config { + network, + eth_rpc_url: env::var("ETH_RPC_URL").expect("ETH_RPC_URL not set"), + ws_eth_rpc_url: env::var("WS_ETH_RPC_URL").expect("WS_ETH_RPC_URL not set"), + beacon_client_url: env::var("BEACON_CLIENT_URL").expect("BEACON_CLIENT_URL not set"), + private_key_store_path: env::var("PRIVATE_KEY_STORE_PATH") + .expect("PRIVATE_KEY_STORE_PATH not set"), + private_key_store_password: env::var("PRIVATE_KEY_STORE_PASSWORD") + .expect("PRIVATE_KEY_STORE_PASSWORD not set"), + state_transition_contract_address: env::var("STATE_TRANSITION_CONTRACT_ADDRESS") + .expect("STATE_TRANSITION_CONTRACT_ADDRESS not set"), + db_path: Some("./db".to_string()), + }; + + config +} diff --git a/examples/l2/contracts/.env.devnet b/examples/l2/contracts/.env.devnet new file mode 100644 index 0000000000..0ab5ec2f5d --- /dev/null +++ b/examples/l2/contracts/.env.devnet @@ -0,0 +1,12 @@ +RPC_URL=http://localhost:8545 +# Initial state root of db, see in crates/l2/db.rs +INITIAL_STATE_ROOT=0x3c1d1c01f8e0a4533085bc9d8a3829c5f6872e6d6cf62e04ae71acbc803747ce +# You can read it from crates/l2/programs_ids.json and generate it via `make generate_program_id` +PROGRAM_ID= +# Address of the wallet you want to set as owner (default to rich account 4 on ethereum package) +OWNER_ADDRESS=0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 +# A prefunded rich account +PRIVATE_KEY=0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a +# This is the aligned proof aggregator address in devnet +ALIGNED_PROOF_AGGREGATOR_ADDRESS=0xcbEAF3BDe82155F56486Fb5a1072cb8baAf547cc +ETHERSCAN_API_KEY="0x0" diff --git a/examples/l2/contracts/.env.hoodi b/examples/l2/contracts/.env.hoodi new file mode 100644 index 0000000000..041371a468 --- /dev/null +++ b/examples/l2/contracts/.env.hoodi @@ -0,0 +1,13 @@ +RPC_URL=https://ethereum-hoodi-rpc.publicnode.com +# Initial state root of db, see in crates/l2/db.rs +INITIAL_STATE_ROOT=0x3c1d1c01f8e0a4533085bc9d8a3829c5f6872e6d6cf62e04ae71acbc803747ce +# You can read it from crates/l2/programs_ids.json and generate it via `make generate_program_id` +PROGRAM_ID= +# Address of the wallet you want to set as owner +OWNER_ADDRESS= +# Private key used to deploy the contract +PRIVATE_KEY= +# This is the aligned proof aggregator address in hoodi see: +# https://docs.alignedlayer.com/guides/7_contract_addresses +ALIGNED_PROOF_AGGREGATOR_ADDRESS=0xEFeD2fd949995BE1a1C7f61AbFC0A33412c37f95 +ETHERSCAN_API_KEY= diff --git a/examples/l2/contracts/README.md b/examples/l2/contracts/README.md new file mode 100644 index 0000000000..9265b45584 --- /dev/null +++ b/examples/l2/contracts/README.md @@ -0,0 +1,66 @@ +## Foundry + +**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** + +Foundry consists of: + +- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). +- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. +- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. +- **Chisel**: Fast, utilitarian, and verbose solidity REPL. + +## Documentation + +https://book.getfoundry.sh/ + +## Usage + +### Build + +```shell +$ forge build +``` + +### Test + +```shell +$ forge test +``` + +### Format + +```shell +$ forge fmt +``` + +### Gas Snapshots + +```shell +$ forge snapshot +``` + +### Anvil + +```shell +$ anvil +``` + +### Deploy + +```shell +$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +``` + +### Cast + +```shell +$ cast +``` + +### Help + +```shell +$ forge --help +$ anvil --help +$ cast --help +``` diff --git a/examples/l2/contracts/foundry.toml b/examples/l2/contracts/foundry.toml new file mode 100644 index 0000000000..25b918f9c9 --- /dev/null +++ b/examples/l2/contracts/foundry.toml @@ -0,0 +1,6 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/examples/l2/contracts/lib/forge-std b/examples/l2/contracts/lib/forge-std new file mode 160000 index 0000000000..77041d2ce6 --- /dev/null +++ b/examples/l2/contracts/lib/forge-std @@ -0,0 +1 @@ +Subproject commit 77041d2ce690e692d6e03cc812b57d1ddaa4d505 diff --git a/examples/l2/contracts/script/StateTransitionDeployer.s.sol b/examples/l2/contracts/script/StateTransitionDeployer.s.sol new file mode 100644 index 0000000000..02d5e673b1 --- /dev/null +++ b/examples/l2/contracts/script/StateTransitionDeployer.s.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "../lib/forge-std/src//Script.sol"; +import {StateTransition} from "../src/StateTransition.sol"; + +contract StateTransitionDeployer is Script { + StateTransition public stateTransitionContract; + + function setUp() public {} + + function run(bytes32 programId, bytes32 initialStateRoot, address _alignedProofAggregationService, address owner) + public + returns (address) + { + vm.startBroadcast(); + + stateTransitionContract = + new StateTransition(programId, initialStateRoot, _alignedProofAggregationService, owner); + + vm.stopBroadcast(); + + return address(stateTransitionContract); + } +} diff --git a/examples/l2/contracts/scripts/deploy.sh b/examples/l2/contracts/scripts/deploy.sh new file mode 100755 index 0000000000..787ab77e0f --- /dev/null +++ b/examples/l2/contracts/scripts/deploy.sh @@ -0,0 +1,36 @@ +# cd to the directory of this script so that this can be run from anywhere +parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) +# At this point we are in contracts/scripts +cd "$parent_path" + +# At this point we are in contracts +cd ../ + +if [ "$ETHERSCAN_API_KEY" = "0x0" ]; then + forge script ./script/StateTransitionDeployer.s.sol \ + $PROGRAM_ID \ + $INITIAL_STATE_ROOT \ + $ALIGNED_PROOF_AGGREGATOR_ADDRESS \ + $OWNER_ADDRESS \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY \ + --broadcast \ + --slow \ + --sig "run(bytes32,bytes32,address,address)" \ + --via-ir +else + forge script ./script/StateTransitionDeployer.s.sol \ + $PROGRAM_ID \ + $INITIAL_STATE_ROOT \ + $ALIGNED_PROOF_AGGREGATOR_ADDRESS \ + $OWNER_ADDRESS \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY \ + --broadcast \ + --verify \ + --etherscan-api-key $ETHERSCAN_API_KEY \ + --slow \ + --sig "run(bytes32,bytes32,address,address)" \ + --via-ir +fi + diff --git a/examples/l2/contracts/src/StateTransition.sol b/examples/l2/contracts/src/StateTransition.sol new file mode 100644 index 0000000000..e81ec27479 --- /dev/null +++ b/examples/l2/contracts/src/StateTransition.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +contract StateTransition { + event StateUpdated(bytes32); + event ProgramIdUpdated(bytes32); + + error OnlyOwner(address); + error AlignedVerifyProofInclusionCallFailed(); + error ProofVerificationFailed(); + error PrevStateRootDidNotMatch(); + + bytes32 public PROGRAM_ID; + bytes32 public stateRoot; + address public alignedProofAggregator; + address public owner; + + constructor(bytes32 programId, bytes32 initialStateRoot, address _alignedProofAggregator, address _owner) { + alignedProofAggregator = _alignedProofAggregator; + owner = _owner; + PROGRAM_ID = programId; + stateRoot = initialStateRoot; + } + + function updateState(bytes calldata publicInputs, bytes32[] calldata merkleProof) public onlyOwner { + bytes memory callData = abi.encodeWithSignature( + "verifyProofInclusion(bytes32[],bytes32,bytes)", merkleProof, PROGRAM_ID, publicInputs + ); + (bool callResult, bytes memory response) = alignedProofAggregator.staticcall(callData); + if (!callResult) { + revert AlignedVerifyProofInclusionCallFailed(); + } + + bool proofVerified = abi.decode(response, (bool)); + if (!proofVerified) { + revert ProofVerificationFailed(); + } + + (bytes32 prevStateRoot, bytes32 newStateRoot) = abi.decode(publicInputs, (bytes32, bytes32)); + if (prevStateRoot != stateRoot) { + revert PrevStateRootDidNotMatch(); + } + + stateRoot = newStateRoot; + emit StateUpdated(stateRoot); + } + + function setProgramId(bytes32 programId) public onlyOwner { + PROGRAM_ID = programId; + + emit ProgramIdUpdated(PROGRAM_ID); + } + + modifier onlyOwner() { + if (msg.sender != owner) { + revert OnlyOwner(msg.sender); + } + _; + } +} diff --git a/examples/l2/crates/l2/Cargo.toml b/examples/l2/crates/l2/Cargo.toml new file mode 100644 index 0000000000..7e998778ac --- /dev/null +++ b/examples/l2/crates/l2/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "l2" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = { workspace = true } +serde_json = { workspace = true } +types = { workspace = true } +lambdaworks-crypto = { workspace = true } +primitive-types = { workspace = true} +tracing = { version = "0.1", features = ["log"] } +tracing-subscriber = { version = "0.3.0", features = ["env-filter"] } +rand = "0.8" +sp1-sdk = "5.0.0" +sp1_state_transition_program = { path = "./zkvm_programs/sp1" } +aligned-sdk = { path = "../../../../crates/sdk" } +bincode = "1.3.3" +futures-util = "0.3" +tokio = "1.44" +alloy = { version = "1.0.37", features = ["full", "signer-keystore", "providers"] } +dotenv = "0.15" + +[[bin]] +name = "write_program_id" +path = "./zkvm_programs/bin/write_program_ids.rs" + +[build-dependencies] +sp1-build = { version = "5.0.0" } + +[profile.release] +opt-level = 3 diff --git a/examples/l2/crates/l2/abi/StateTransition.json b/examples/l2/crates/l2/abi/StateTransition.json new file mode 100644 index 0000000000..4fb406d0e6 --- /dev/null +++ b/examples/l2/crates/l2/abi/StateTransition.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_alignedProofAggregator","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"PROGRAM_ID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"alignedProofAggregator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"stateRoot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"updateState","inputs":[{"name":"publicInputs","type":"bytes","internalType":"bytes"},{"name":"merkleProof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"StateUpdated","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008055348015601357600080fd5b506040516104fb3803806104fb8339810160408190526030916054565b600280546001600160a01b0319166001600160a01b03929092169190911790556082565b600060208284031215606557600080fd5b81516001600160a01b0381168114607b57600080fd5b9392505050565b61046a806100916000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632f021764146100515780639588eca21461006d578063af80856414610076578063b4cf5ed3146100a1575b600080fd5b61005a60005481565b6040519081526020015b60405180910390f35b61005a60015481565b600254610089906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6100b46100af366004610275565b6100b6565b005b6000828260005487876040516024016100d3959493929190610348565b60408051601f198184030181529181526020820180516001600160e01b0316632df53d6b60e11b179052600254905191925060009182916001600160a01b03169061011f9085906103ba565b600060405180830381855afa9150503d806000811461015a576040519150601f19603f3d011682016040523d82523d6000602084013e61015f565b606091505b5091509150816101ab5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b60448201526064015b60405180910390fd5b6000818060200190518101906101c191906103e9565b9050806102105760405162461bcd60e51b815260206004820152601d60248201527f70726f6f66206e6f7420766572696669656420696e20616c69676e656400000060448201526064016101a2565b60008061021f898b018b610412565b91509150600154821461023157600080fd5b60018190556040518181527f7dec0c67bc5894b08872daeb9d5a8e7cba33c396890356a4d01ec40a71be5ce19060200160405180910390a150505050505050505050565b6000806000806040858703121561028b57600080fd5b843567ffffffffffffffff8111156102a257600080fd5b8501601f810187136102b357600080fd5b803567ffffffffffffffff8111156102ca57600080fd5b8760208284010111156102dc57600080fd5b60209182019550935085013567ffffffffffffffff8111156102fd57600080fd5b8501601f8101871361030e57600080fd5b803567ffffffffffffffff81111561032557600080fd5b8760208260051b840101111561033a57600080fd5b949793965060200194505050565b6060808252810185905260006001600160fb1b0386111561036857600080fd5b8560051b8088608085013780830190508560208401526080838203016040840152836080820152838560a0830137600060a0828601810191909152601f909401601f1916019092019695505050505050565b6000825160005b818110156103db57602081860181015185830152016103c1565b506000920191825250919050565b6000602082840312156103fb57600080fd5b8151801515811461040b57600080fd5b9392505050565b6000806040838503121561042557600080fd5b5050803592602090910135915056fea26469706673582212200e4909105440b6d95f2d5391c8c5474a570fceaf40938393bed0f5d72b31e07f64736f6c634300081c0033","sourceMap":"65:1052:16:-:0;;;158:4;130:32;;242:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;297:22;:48;;-1:-1:-1;;;;;;297:48:16;-1:-1:-1;;;;;297:48:16;;;;;;;;;;65:1052;;14:290:17;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:17;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:17:o;:::-;65:1052:16;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80632f021764146100515780639588eca21461006d578063af80856414610076578063b4cf5ed3146100a1575b600080fd5b61005a60005481565b6040519081526020015b60405180910390f35b61005a60015481565b600254610089906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6100b46100af366004610275565b6100b6565b005b6000828260005487876040516024016100d3959493929190610348565b60408051601f198184030181529181526020820180516001600160e01b0316632df53d6b60e11b179052600254905191925060009182916001600160a01b03169061011f9085906103ba565b600060405180830381855afa9150503d806000811461015a576040519150601f19603f3d011682016040523d82523d6000602084013e61015f565b606091505b5091509150816101ab5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b60448201526064015b60405180910390fd5b6000818060200190518101906101c191906103e9565b9050806102105760405162461bcd60e51b815260206004820152601d60248201527f70726f6f66206e6f7420766572696669656420696e20616c69676e656400000060448201526064016101a2565b60008061021f898b018b610412565b91509150600154821461023157600080fd5b60018190556040518181527f7dec0c67bc5894b08872daeb9d5a8e7cba33c396890356a4d01ec40a71be5ce19060200160405180910390a150505050505050505050565b6000806000806040858703121561028b57600080fd5b843567ffffffffffffffff8111156102a257600080fd5b8501601f810187136102b357600080fd5b803567ffffffffffffffff8111156102ca57600080fd5b8760208284010111156102dc57600080fd5b60209182019550935085013567ffffffffffffffff8111156102fd57600080fd5b8501601f8101871361030e57600080fd5b803567ffffffffffffffff81111561032557600080fd5b8760208260051b840101111561033a57600080fd5b949793965060200194505050565b6060808252810185905260006001600160fb1b0386111561036857600080fd5b8560051b8088608085013780830190508560208401526080838203016040840152836080820152838560a0830137600060a0828601810191909152601f909401601f1916019092019695505050505050565b6000825160005b818110156103db57602081860181015185830152016103c1565b506000920191825250919050565b6000602082840312156103fb57600080fd5b8151801515811461040b57600080fd5b9392505050565b6000806040838503121561042557600080fd5b5050803592602090910135915056fea26469706673582212200e4909105440b6d95f2d5391c8c5474a570fceaf40938393bed0f5d72b31e07f64736f6c634300081c0033","sourceMap":"65:1052:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;130:32;;;;;;;;;160:25:17;;;148:2;133:18;130:32:16;;;;;;;;168:24;;;;;;198:37;;;;;-1:-1:-1;;;;;198:37:16;;;;;;-1:-1:-1;;;;;360:32:17;;;342:51;;330:2;315:18;198:37:16;196:203:17;358:757:16;;;;;;:::i;:::-;;:::i;:::-;;;457:21;567:11;;580:10;;592:12;;481:133;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;481:133:16;;;;;;;;;;;;;;-1:-1:-1;;;;;481:133:16;-1:-1:-1;;;481:133:16;;;667:22;;:43;;481:133;;-1:-1:-1;;;;;;;;;;667:22:16;;:43;;481:133;;667:43;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;624:86;;;;728:10;720:41;;;;-1:-1:-1;;;720:41:16;;2992:2:17;720:41:16;;;2974:21:17;3031:2;3011:18;;;3004:30;-1:-1:-1;;;3050:18:17;;;3043:48;3108:18;;720:41:16;;;;;;;;;772:18;804:8;793:28;;;;;;;;;;;;:::i;:::-;772:49;;839:13;831:55;;;;-1:-1:-1;;;831:55:16;;3621:2:17;831:55:16;;;3603:21:17;3660:2;3640:18;;;3633:30;3699:31;3679:18;;;3672:59;3748:18;;831:55:16;3419:353:17;831:55:16;898:21;;945:44;;;;956:12;945:44;:::i;:::-;897:92;;;;1024:9;;1007:13;:26;999:35;;;;;;1045:9;:24;;;1085:23;;160:25:17;;;1085:23:16;;148:2:17;133:18;1085:23:16;;;;;;;447:668;;;;;;358:757;;;;:::o;404:1108:17:-;510:6;518;526;534;587:2;575:9;566:7;562:23;558:32;555:52;;;603:1;600;593:12;555:52;643:9;630:23;676:18;668:6;665:30;662:50;;;708:1;705;698:12;662:50;731:22;;784:4;776:13;;772:27;-1:-1:-1;762:55:17;;813:1;810;803:12;762:55;853:2;840:16;879:18;871:6;868:30;865:50;;;911:1;908;901:12;865:50;958:7;951:4;942:6;938:2;934:15;930:26;927:39;924:59;;;979:1;976;969:12;924:59;1010:4;1002:13;;;;-1:-1:-1;1034:6:17;-1:-1:-1;1078:20:17;;1065:34;1124:18;1111:32;;1108:52;;;1156:1;1153;1146:12;1108:52;1179:24;;1234:4;1226:13;;1222:27;-1:-1:-1;1212:55:17;;1263:1;1260;1253:12;1212:55;1305:2;1292:16;1333:18;1323:8;1320:32;1317:52;;;1365:1;1362;1355:12;1317:52;1422:7;1415:4;1403:8;1400:1;1396:16;1392:2;1388:25;1384:36;1381:49;1378:69;;;1443:1;1440;1433:12;1378:69;404:1108;;;;-1:-1:-1;1474:4:17;1466:13;;-1:-1:-1;;;404:1108:17:o;1517:851::-;1790:2;1772:21;;;1809:18;;1802:34;;;-1:-1:-1;;;;;;1848:31:17;;1845:51;;;1892:1;1889;1882:12;1845:51;1926:6;1923:1;1919:14;1984:6;1976;1970:3;1959:9;1955:19;1942:49;2025:6;2014:9;2010:22;2000:32;;2070:6;2063:4;2052:9;2048:20;2041:36;2137:3;2125:9;2121:2;2117:18;2113:28;2108:2;2097:9;2093:18;2086:56;2172:6;2166:3;2162:2;2158:12;2151:28;2223:6;2215;2209:3;2205:2;2201:12;2188:42;2284:1;2246:36;2254:15;;;2246:36;;2239:47;;;;2344:2;2323:15;;;-1:-1:-1;;2319:29:17;2311:38;2303:59;;;;1517:851;-1:-1:-1;;;;;;1517:851:17:o;2373:412::-;2502:3;2540:6;2534:13;2565:1;2575:129;2589:6;2586:1;2583:13;2575:129;;;2687:4;2671:14;;;2667:25;;2661:32;2648:11;;;2641:53;2604:12;2575:129;;;-1:-1:-1;2759:1:17;2723:16;;2748:13;;;-1:-1:-1;2723:16:17;2373:412;-1:-1:-1;2373:412:17:o;3137:277::-;3204:6;3257:2;3245:9;3236:7;3232:23;3228:32;3225:52;;;3273:1;3270;3263:12;3225:52;3305:9;3299:16;3358:5;3351:13;3344:21;3337:5;3334:32;3324:60;;3380:1;3377;3370:12;3324:60;3403:5;3137:277;-1:-1:-1;;;3137:277:17:o;3777:346::-;3845:6;3853;3906:2;3894:9;3885:7;3881:23;3877:32;3874:52;;;3922:1;3919;3912:12;3874:52;-1:-1:-1;;3967:23:17;;;4087:2;4072:18;;;4059:32;;-1:-1:-1;3777:346:17:o","linkReferences":{}},"methodIdentifiers":{"PROGRAM_ID()":"2f021764","alignedProofAggregator()":"af808564","stateRoot()":"9588eca2","updateState(bytes,bytes32[])":"b4cf5ed3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_alignedProofAggregator\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"StateUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PROGRAM_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"alignedProofAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"publicInputs\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"merkleProof\",\"type\":\"bytes32[]\"}],\"name\":\"updateState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/StateTransition.sol\":\"StateTransition\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/StateTransition.sol\":{\"keccak256\":\"0x53d437af1fbd0693e9a818a76f83fc1c1ee467b2fa771314ea536f7070ed42d0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://681ea84bcdffdb9c9e7c740377d0afe3fb4f732f3bfde4bc748c8a1a2de46c8f\",\"dweb:/ipfs/QmeVp5s8pjHtBmbDxpj5YKvkdqbqE9CPFux4bLV6fzgc4K\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_alignedProofAggregator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"StateUpdated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"PROGRAM_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"alignedProofAggregator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"stateRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes","name":"publicInputs","type":"bytes"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"updateState"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["forge-std/=lib/forge-std/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/StateTransition.sol":"StateTransition"},"evmVersion":"paris","libraries":{}},"sources":{"src/StateTransition.sol":{"keccak256":"0x53d437af1fbd0693e9a818a76f83fc1c1ee467b2fa771314ea536f7070ed42d0","urls":["bzz-raw://681ea84bcdffdb9c9e7c740377d0afe3fb4f732f3bfde4bc748c8a1a2de46c8f","dweb:/ipfs/QmeVp5s8pjHtBmbDxpj5YKvkdqbqE9CPFux4bLV6fzgc4K"],"license":"UNLICENSED"}},"version":1},"id":16} \ No newline at end of file diff --git a/examples/l2/crates/l2/build.rs b/examples/l2/crates/l2/build.rs new file mode 100644 index 0000000000..3d64eb64fb --- /dev/null +++ b/examples/l2/crates/l2/build.rs @@ -0,0 +1,8 @@ +fn main() { + sp1_build::build_program_with_args("./zkvm_programs/sp1", { + sp1_build::BuildArgs { + output_directory: Some("./zkvm_programs/sp1/elf".to_string()), + ..Default::default() + } + }); +} diff --git a/examples/l2/crates/l2/src/aligned.rs b/examples/l2/crates/l2/src/aligned.rs new file mode 100644 index 0000000000..b843f4fb68 --- /dev/null +++ b/examples/l2/crates/l2/src/aligned.rs @@ -0,0 +1,83 @@ +use aligned_sdk::{ + aggregation_layer::ProofStatus, + common::types::{AlignedVerificationData, Signer, VerificationData, Wallet}, + verification_layer::{estimate_fee, get_chain_id}, +}; +use sp1_sdk::{HashableKey, SP1VerifyingKey}; + +use crate::config::Config; + +pub async fn send_proof_to_be_verified_on_aligned( + config: &Config, + proof: &sp1_sdk::SP1ProofWithPublicValues, + vm_program_code: Vec, +) -> AlignedVerificationData { + let pub_input = proof.public_values.to_vec(); + let proof = bincode::serialize(proof).expect("Serialize sp1 proof to binary"); + let chain_id = get_chain_id(&config.eth_rpc_url) + .await + .expect("To query chain id from rpc"); + let wallet = Wallet::decrypt_keystore( + &config.private_key_store_path, + &config.private_key_store_password, + ) + .expect("Keystore to be `cast wallet` compliant") + .with_chain_id(chain_id); + + let verification_data = VerificationData { + proof_generator_addr: wallet.address(), + proving_system: aligned_sdk::common::types::ProvingSystemId::SP1, + proof, + vm_program_code: Some(vm_program_code), + pub_input: Some(pub_input), + verification_key: None, + }; + + let nonce = aligned_sdk::verification_layer::get_nonce_from_batcher( + config.network.clone(), + wallet.address(), + ) + .await + .expect("Retrieve nonce from aligned batcher"); + + let max_fee = estimate_fee( + &config.eth_rpc_url, + aligned_sdk::common::types::FeeEstimationType::Instant, + ) + .await + .expect("Max fee to be retrieved"); + + aligned_sdk::verification_layer::submit( + config.network.clone(), + &verification_data, + max_fee, + wallet, + nonce, + ) + .await + .expect("Proof to be sent") +} + +pub async fn check_proof_proof_aggregation_status( + config: &Config, + proof: &sp1_sdk::SP1ProofWithPublicValues, + vk: &SP1VerifyingKey, +) -> ProofStatus { + let verification_data = aligned_sdk::aggregation_layer::AggregationModeVerificationData::SP1 { + vk: vk.hash_bytes(), + public_inputs: proof.public_values.to_vec(), + }; + + let proof_status = aligned_sdk::aggregation_layer::check_proof_verification( + &verification_data, + config.network.clone(), + config.eth_rpc_url.clone(), + config.beacon_client_url.clone(), + // By default it looks back 24 hours + None, + ) + .await + .expect("Get merkle path for proof"); + + proof_status +} diff --git a/examples/l2/crates/l2/src/config.rs b/examples/l2/crates/l2/src/config.rs new file mode 100644 index 0000000000..9a3bc5e3f2 --- /dev/null +++ b/examples/l2/crates/l2/src/config.rs @@ -0,0 +1,10 @@ +pub struct Config { + pub network: aligned_sdk::common::types::Network, + pub eth_rpc_url: String, + pub ws_eth_rpc_url: String, + pub beacon_client_url: String, + pub private_key_store_path: String, + pub private_key_store_password: String, + pub state_transition_contract_address: String, + pub db_path: Option, +} diff --git a/examples/l2/crates/l2/src/db.rs b/examples/l2/crates/l2/src/db.rs new file mode 100644 index 0000000000..b5e2c1473c --- /dev/null +++ b/examples/l2/crates/l2/src/db.rs @@ -0,0 +1,135 @@ +use std::{ + collections::BTreeMap, + fs::File, + io::{BufReader, BufWriter}, + str::FromStr, +}; + +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; +use primitive_types::{H160, U256}; +use rand::Rng; +use tracing::warn; +use types::{Transfer, UserState}; + +pub struct DB { + pub user_states: BTreeMap, + pub file_path: String, +} + +#[derive(Debug)] +pub enum DBError { + #[allow(dead_code)] + IO(String), +} + +impl DB { + pub fn new(file_path: String) -> Self { + match Self::new_from_file(file_path.clone()) { + Ok(db) => db, + Err(e) => { + warn!("Error when loading db from file {:?}, will start a new db with a default initial state", e); + // if db does not exists, create one with initial state + let initial_state = Self::initial_state(); + let mut user_states: BTreeMap = BTreeMap::new(); + for state in initial_state { + user_states.insert(state.address, state); + } + + DB { + user_states, + file_path, + } + } + } + } + + fn new_from_file(file_path: String) -> Result { + let file = File::open(&file_path).map_err(|e| DBError::IO(e.to_string()))?; + let reader = BufReader::new(file); + let user_states: Vec = + serde_json::from_reader(reader).map_err(|e| DBError::IO(e.to_string()))?; + + let mut user_states_map: BTreeMap = BTreeMap::new(); + for state in user_states { + user_states_map.insert(state.address, state); + } + + let db = Self { + user_states: user_states_map, + file_path, + }; + + Ok(db) + } + + pub fn save(&self) -> Result<(), DBError> { + let file = File::create(&self.file_path).map_err(|e| DBError::IO(e.to_string()))?; + let writer = BufWriter::new(file); + let values: Vec = self.user_states.clone().into_values().collect(); + serde_json::to_writer(writer, &values).map_err(|e| DBError::IO(e.to_string()))?; + + Ok(()) + } + + pub fn commitment(&self) -> [u8; 32] { + let values: Vec = self.user_states.clone().into_values().collect(); + MerkleTree::::build(&values).unwrap().root + } + + /// Db genesis state used if a file is not provided + /// Its commitment is: 0x3c1d1c01f8e0a4533085bc9d8a3829c5f6872e6d6cf62e04ae71acbc803747ce + fn initial_state() -> Vec { + vec![ + UserState { + address: H160::from_str("0x742d35Cc6634C0532925a3b844Bc454e4438f44e").unwrap(), + balance: U256::from_dec_str("100000000000000000000").unwrap(), + nonce: U256::from(0), + }, + UserState { + address: H160::from_str("0x53d284357ec70cE289D6D64134DfAc8E511c8a3D").unwrap(), + balance: U256::from_dec_str("50000000000000000000").unwrap(), + nonce: U256::from(0), + }, + UserState { + address: H160::from_str("0xfe9e8709d3215310075d67e3ed32a380ccf451c8").unwrap(), + balance: U256::from_dec_str("250000000000000000000").unwrap(), + nonce: U256::from(0), + }, + UserState { + address: H160::from_str("0xab5801a7d398351b8be11c439e05c5b3259aec9b").unwrap(), + balance: U256::from_dec_str("75000000000000000000").unwrap(), + nonce: U256::from(0), + }, + ] + } +} + +pub fn generate_random_transfers(db: &DB, num_to_generate: usize) -> Vec { + let mut transfers = vec![]; + let mut rng = rand::thread_rng(); + + let mut accounts: Vec = db.user_states.clone().into_values().collect(); + + for _ in 0..num_to_generate { + let (from, amount) = { + let user = accounts + .get_mut(rng.gen_range(0..db.user_states.len())) + .unwrap(); + let new_balance = user.balance / 2; + user.balance = new_balance; + + (user.address, new_balance) + }; + + let to = accounts + .get(rng.gen_range(0..db.user_states.len())) + .unwrap() + .address; + + let transfer = Transfer { amount, from, to }; + + transfers.push(transfer); + } + + transfers +} diff --git a/examples/l2/crates/l2/src/eth.rs b/examples/l2/crates/l2/src/eth.rs new file mode 100644 index 0000000000..246686bbe6 --- /dev/null +++ b/examples/l2/crates/l2/src/eth.rs @@ -0,0 +1,45 @@ +use std::str::FromStr; + +use alloy::{ + network::EthereumWallet, primitives::Address, providers::ProviderBuilder, + rpc::types::TransactionReceipt, signers::local::LocalSigner, sol, +}; + +use crate::config::Config; + +sol!( + #[sol(rpc)] + StateTransition, + "abi/StateTransition.json" +); + +pub async fn send_state_transition_to_chain( + config: &Config, + public_inputs: Vec, + merkle_proof: Vec<[u8; 32]>, +) -> TransactionReceipt { + let rpc_url = config.eth_rpc_url.parse().expect("RPC URL should be valid"); + let signer = LocalSigner::decrypt_keystore( + &config.private_key_store_path, + &config.private_key_store_password, + ) + .expect("Keystore signer should be `cast wallet` compliant"); + let wallet = EthereumWallet::from(signer); + + let rpc_provider = ProviderBuilder::new().wallet(wallet).connect_http(rpc_url); + let state_transition_contract = StateTransition::new( + Address::from_str(&config.state_transition_contract_address) + .expect("State transition address should be valid"), + rpc_provider, + ); + + let merkle_proof = merkle_proof.iter().map(|e| e.into()).collect(); + + let res = state_transition_contract + .updateState(public_inputs.into(), merkle_proof) + .send() + .await + .expect("State transition tx to not revert"); + + res.get_receipt().await.expect("To get receipt") +} diff --git a/examples/l2/crates/l2/src/l2.rs b/examples/l2/crates/l2/src/l2.rs new file mode 100644 index 0000000000..a1498cc802 --- /dev/null +++ b/examples/l2/crates/l2/src/l2.rs @@ -0,0 +1,119 @@ +use crate::aligned::{check_proof_proof_aggregation_status, send_proof_to_be_verified_on_aligned}; +use crate::config::Config; +use crate::db::{generate_random_transfers, DB}; +use crate::eth::send_state_transition_to_chain; +use crate::prover::{self, prove_state_transition, PROGRAM_ELF}; +use alloy::hex; +use primitive_types::U256; +use sp1_sdk::SP1ProofWithPublicValues; +use sp1_state_transition_program::ProgramOutput; +use tracing::info; + +pub struct L2 { + config: Config, + db: DB, +} + +impl L2 { + pub fn new(config: Config) -> Self { + let db_path = config.db_path.clone().unwrap_or("./db".to_string()); + + Self { + config, + db: DB::new(db_path), + } + } + + pub async fn prove_state_transition_and_send_proof_to_aligned( + &mut self, + ) -> SP1ProofWithPublicValues { + // 1. Create random transfers + let transfers = generate_random_transfers(&self.db, 10); + + // 2. Call zkvm and transfer to perform and verify + info!("Starting prover..."); + let (mut proof, _vk) = prove_state_transition(&self.db, transfers.clone()); + let ProgramOutput { + initial_state_merkle_root, + post_state_merkle_root, + } = proof.public_values.read::(); + info!("Prover finish"); + + // 3. If the proving went alright, update the db and verify that the merkle root matches + assert_eq!(self.db.commitment(), initial_state_merkle_root); + // Note: we don't have to verify that the user has enough balance, as the prover already validates it + for transfer in transfers { + let mut user_from = self + .db + .user_states + .get(&transfer.from) + .expect("User must exist in state") + .clone(); + + let mut user_to = self + .db + .user_states + .get(&transfer.to) + .expect("User must exist in state") + .clone(); + + user_from.balance -= transfer.amount; + user_from.nonce += U256::one(); + user_to.balance += transfer.amount; + + self.db.user_states.insert(transfer.from, user_from); + self.db.user_states.insert(transfer.to, user_to); + } + assert_eq!(self.db.commitment(), post_state_merkle_root); + + // Fow now, in order for a proof to be aggregated, we first need to submit it via the fast mode or verification layer + // Let's suppose that our L2 would run the prover once every 24hs and submit it on aligned + // Once aligned aggregates the proof we will be notified and we'll send the new state commitment on chain + + // 4. Send the proof to aligned and wait for verification + info!("Sending proof to aligned batcher..."); + let _ = + send_proof_to_be_verified_on_aligned(&self.config, &proof, PROGRAM_ELF.to_vec()).await; + info!("Proof submitted"); + + self.db.save().unwrap(); + + proof + } + + pub async fn update_state_on_chain(&mut self, proof: SP1ProofWithPublicValues) { + let vk = prover::vk_from_elf(PROGRAM_ELF); + // 5. Check if proof has been aggregated + info!("Checking if proof has been aggregated in the last 24 hours..."); + let proof_status = check_proof_proof_aggregation_status(&self.config, &proof, &vk).await; + let merkle_path = match proof_status { + aligned_sdk::aggregation_layer::ProofStatus::Verified { + merkle_root, + merkle_path, + } => { + info!( + "Proof aggregated in aggregation with merkle root {:?}", + hex::encode(merkle_root) + ); + merkle_path + } + aligned_sdk::aggregation_layer::ProofStatus::Invalid => { + panic!("Proof did pass merkle root verification"); + } + aligned_sdk::aggregation_layer::ProofStatus::NotFound => { + panic!("Proof not found in the last 24 hours logs"); + } + }; + info!("Proof has been aggregated on aligned, about to send update to chain..."); + + // 6. Send updateState transaction to Ethereum + let receipt = + send_state_transition_to_chain(&self.config, proof.public_values.to_vec(), merkle_path) + .await; + + info!( + "State update in contracts tx hash: {:?}", + receipt.transaction_hash + ); + } +} diff --git a/examples/l2/crates/l2/src/lib.rs b/examples/l2/crates/l2/src/lib.rs new file mode 100644 index 0000000000..124cf3987f --- /dev/null +++ b/examples/l2/crates/l2/src/lib.rs @@ -0,0 +1,6 @@ +mod aligned; +pub mod config; +mod db; +mod eth; +pub mod l2; +mod prover; diff --git a/examples/l2/crates/l2/src/prover.rs b/examples/l2/crates/l2/src/prover.rs new file mode 100644 index 0000000000..08bd957307 --- /dev/null +++ b/examples/l2/crates/l2/src/prover.rs @@ -0,0 +1,35 @@ +use sp1_sdk::{Prover, SP1VerifyingKey}; +use types::Transfer; + +use crate::db::DB; + +pub const PROGRAM_ELF: &[u8] = + include_bytes!("../zkvm_programs/sp1/elf/sp1_state_transition_program"); + +pub fn prove_state_transition( + db: &DB, + transfers: Vec, +) -> (sp1_sdk::SP1ProofWithPublicValues, sp1_sdk::SP1VerifyingKey) { + let mut stdin = sp1_sdk::SP1Stdin::new(); + let program_input = sp1_state_transition_program::ProgramInput { + transfers, + user_states: db.user_states.clone(), + }; + stdin.write(&program_input); + + let prover = sp1_sdk::ProverClient::from_env(); + let (pk, vk) = prover.setup(PROGRAM_ELF); + let proof = prover + .prove(&pk, &stdin) + .compressed() + .run() + .expect("Prover to run well"); + + (proof, vk) +} + +pub fn vk_from_elf(elf: &[u8]) -> SP1VerifyingKey { + let prover = sp1_sdk::ProverClient::builder().cpu().build(); + let (_pk, vk) = prover.setup(elf); + vk +} diff --git a/examples/l2/crates/l2/zkvm_programs/Cargo.lock b/examples/l2/crates/l2/zkvm_programs/Cargo.lock new file mode 100644 index 0000000000..3e4a47966a --- /dev/null +++ b/examples/l2/crates/l2/zkvm_programs/Cargo.lock @@ -0,0 +1,987 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cc" +version = "1.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lambdaworks-crypto" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "lambdaworks-math", + "rand", + "rand_chacha", + "serde", + "sha2", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lambdaworks-math" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" +dependencies = [ + "getrandom", + "rand", + "serde", + "serde_json", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools", + "num-bigint", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-serde", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1#8f6d303c0861ba7e5adcc36207c0f41fe5edaabc" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "sp1-lib" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03046db52868c1b60e8acffa0777ef6dc11ec1bbbb10b9eb612a871f69c8d3f6" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6939d6b2f63e54e5fbd208a0293027608f22511741b62fe32b6f67f6c144e0c0" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1-zkvm" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e69fef4d915b10072461e52fd616ca2625409ede7b37a36ec910e1a52bd860" +dependencies = [ + "cfg-if", + "getrandom", + "lazy_static", + "libm", + "p3-baby-bear", + "p3-field", + "rand", + "sha2", + "sp1-lib", + "sp1-primitives", +] + +[[package]] +name = "sp1_state_transition_program" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "primitive-types", + "serde", + "serde_json", + "sha3 0.10.8 (git+https://github.com/sp1-patches/RustCrypto-hashes?tag=sha3-v0.10.8-patch-v1)", + "sp1-zkvm", + "types", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "syn" +version = "2.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "toml_datetime" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" + +[[package]] +name = "toml_edit" +version = "0.22.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "types" +version = "0.1.0" +dependencies = [ + "lambdaworks-crypto", + "primitive-types", + "serde", + "serde_json", + "sha3 0.10.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "winnow" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/examples/l2/crates/l2/zkvm_programs/Cargo.toml b/examples/l2/crates/l2/zkvm_programs/Cargo.toml new file mode 100644 index 0000000000..31337fd727 --- /dev/null +++ b/examples/l2/crates/l2/zkvm_programs/Cargo.toml @@ -0,0 +1,11 @@ +[workspace] +name = "zkvm_state_transition_programs" +version = "0.1.0" +edition = "2021" +resolver = "2" +members = ["sp1"] + +[workspace.dependencies] +types = { path = "../../types"} +tracing = { version = "0.1", features = ["log"] } +tracing-subscriber = { version = "0.3.0", features = ["env-filter"] } diff --git a/examples/l2/crates/l2/zkvm_programs/bin/write_program_ids.rs b/examples/l2/crates/l2/zkvm_programs/bin/write_program_ids.rs new file mode 100644 index 0000000000..4573b9ecb3 --- /dev/null +++ b/examples/l2/crates/l2/zkvm_programs/bin/write_program_ids.rs @@ -0,0 +1,29 @@ +use alloy::hex; +use serde_json::json; +use sp1_sdk::{HashableKey, Prover}; +use std::{fs, path::Path}; +use tracing::info; +use tracing_subscriber::FmtSubscriber; + +const SP1_PROGRAM_ELF: &[u8] = include_bytes!("../sp1/elf/sp1_state_transition_program"); + +fn main() { + let subscriber = FmtSubscriber::builder().finish(); + tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); + + info!("About to write sp1 program vk hash bytes"); + let client = sp1_sdk::ProverClient::builder().cpu().build(); + let (_pk, vk) = client.setup(SP1_PROGRAM_ELF); + let sp1_vk_hash = vk.hash_bytes(); + let sp1_vk_hash_hex = hex::encode(sp1_vk_hash); + + let dest_path = Path::new("programs_ids.json"); + let json_data = json!({ + "sp1_vk_hash": format!("0x{}", sp1_vk_hash_hex), + }); + + // Write to the file + fs::write(dest_path, serde_json::to_string_pretty(&json_data).unwrap()).unwrap(); + + info!("Program ids written to {:?}", dest_path); +} diff --git a/examples/l2/crates/l2/zkvm_programs/sp1/Cargo.toml b/examples/l2/crates/l2/zkvm_programs/sp1/Cargo.toml new file mode 100644 index 0000000000..1c713e8258 --- /dev/null +++ b/examples/l2/crates/l2/zkvm_programs/sp1/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "sp1_state_transition_program" +version = "0.1.0" +edition = "2021" +resolver = "2" + +[dependencies] +sp1-zkvm = { version = "5.0.0", features = ["verify"] } +serde = { version = "1.0.203", features = ["derive"] } +serde_json = "1.0.117" +primitive-types = { version = "0.12.0", features = ["serde"] } +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"]} +sha3 = { git = "https://github.com/sp1-patches/RustCrypto-hashes", tag = "sha3-v0.10.8-patch-v1" } +types = { workspace = true } + +[lib] +path = "./src/lib.rs" diff --git a/examples/l2/crates/l2/zkvm_programs/sp1/src/lib.rs b/examples/l2/crates/l2/zkvm_programs/sp1/src/lib.rs new file mode 100644 index 0000000000..41fa48ad55 --- /dev/null +++ b/examples/l2/crates/l2/zkvm_programs/sp1/src/lib.rs @@ -0,0 +1,16 @@ +use primitive_types::H160; +use serde::{Deserialize, Serialize}; +use std::collections::BTreeMap; +use types::{Transfer, UserState}; + +#[derive(Deserialize, Serialize)] +pub struct ProgramInput { + pub user_states: BTreeMap, + pub transfers: Vec, +} + +#[derive(Serialize, Deserialize)] +pub struct ProgramOutput { + pub initial_state_merkle_root: [u8; 32], + pub post_state_merkle_root: [u8; 32], +} diff --git a/examples/l2/crates/l2/zkvm_programs/sp1/src/main.rs b/examples/l2/crates/l2/zkvm_programs/sp1/src/main.rs new file mode 100644 index 0000000000..5b2a77ed0c --- /dev/null +++ b/examples/l2/crates/l2/zkvm_programs/sp1/src/main.rs @@ -0,0 +1,52 @@ +#![no_main] +sp1_zkvm::entrypoint!(main); + +use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; +use primitive_types::U256; +use sp1_state_transition_program::{ProgramInput, ProgramOutput}; +use types::UserState; + +pub fn main() { + let mut input = sp1_zkvm::io::read::(); + + let initial_state: Vec = input.user_states.clone().into_values().collect(); + let initial_state_merkle_tree: MerkleTree = + MerkleTree::build(&initial_state).expect("to build merkle tree with the provided state"); + let initial_state_merkle_root = initial_state_merkle_tree.root; + + for transfer in input.transfers { + let mut user_from = input + .user_states + .get(&transfer.from) + .expect("User must exist in state") + .clone(); + let mut user_to = input + .user_states + .get(&transfer.to) + .expect("User must exist in state") + .clone(); + + if user_from.balance >= transfer.amount { + user_from.balance -= transfer.amount; + user_from.nonce += U256::one(); + user_to.balance += transfer.amount; + } else { + panic!("User does not have enough balance to perform the transfer",); + } + + input.user_states.insert(transfer.from, user_from); + input.user_states.insert(transfer.to, user_to); + } + + let post_state: Vec = input.user_states.clone().into_values().collect(); + let post_state_merkle_tree: MerkleTree = + MerkleTree::build(&post_state).expect("to build merkle tree with the provided state"); + let post_state_merkle_root = post_state_merkle_tree.root; + + let program_output = ProgramOutput { + initial_state_merkle_root, + post_state_merkle_root, + }; + + sp1_zkvm::io::commit(&program_output); +} diff --git a/examples/l2/crates/types/Cargo.toml b/examples/l2/crates/types/Cargo.toml new file mode 100644 index 0000000000..1b0123d553 --- /dev/null +++ b/examples/l2/crates/types/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "types" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = { workspace = true } +serde_json = { workspace = true } +primitive-types = { workspace = true } +lambdaworks-crypto = { workspace = true } +sha3 = { workspace = true } + + +[profile.release] +opt-level = 3 diff --git a/examples/l2/crates/types/src/lib.rs b/examples/l2/crates/types/src/lib.rs new file mode 100644 index 0000000000..6eb8818c37 --- /dev/null +++ b/examples/l2/crates/types/src/lib.rs @@ -0,0 +1,44 @@ +use lambdaworks_crypto::merkle_tree::traits::IsMerkleTreeBackend; +use primitive_types::{H160, U256}; +use serde::{Deserialize, Serialize}; +use sha3::{Digest, Keccak256}; + +#[derive(Clone, Debug, Default, Serialize, Deserialize)] +pub struct UserState { + pub address: H160, + pub balance: U256, + pub nonce: U256, +} + +impl IsMerkleTreeBackend for UserState { + type Node = [u8; 32]; + type Data = UserState; + + fn hash_data(leaf: &Self::Data) -> Self::Node { + let mut hasher = Keccak256::new(); + + let mut balance_bytes: [u8; 32] = [0u8; 32]; + let mut nonce_bytes: [u8; 32] = [0u8; 32]; + leaf.balance.to_little_endian(&mut balance_bytes); + leaf.nonce.to_little_endian(&mut nonce_bytes); + + hasher.update(leaf.address); + hasher.update(balance_bytes); + hasher.update(nonce_bytes); + hasher.finalize().into() + } + + fn hash_new_parent(child_1: &Self::Node, child_2: &Self::Node) -> Self::Node { + let mut hasher = Keccak256::new(); + hasher.update(child_1); + hasher.update(child_2); + hasher.finalize().into() + } +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub struct Transfer { + pub from: H160, + pub to: H160, + pub amount: U256, +} diff --git a/examples/validating-public-input/Makefile b/examples/validating-public-input/Makefile index fab9b58756..527336e3b8 100644 --- a/examples/validating-public-input/Makefile +++ b/examples/validating-public-input/Makefile @@ -10,7 +10,6 @@ generate_sp1_fibonacci_proof: cargo run --release && \ echo "Fibonacci proof, pub input and image ID generated in sp1 folder" - submit_fibonacci_sp1_proof_devnet: @cd aligned-integration && \ RUST_LOG=info cargo run --release -- --proving-system "SP1" --network "devnet" --rpc-url "http://localhost:8545" @@ -44,3 +43,7 @@ deploy_fibonacci_validator: deploy_fibonacci_validator_devnet: @. ./contracts/.env.devnet && . ./contracts/deploy.sh + +get_program_id_commitment: + @echo "Proof commitment for $(DATA_FILE_NAME) is:" + @jq '.program_id_commitment' ./aligned-integration/batch_inclusion_data/$(DATA_FILE_NAME) diff --git a/examples/validating-public-input/README.md b/examples/validating-public-input/README.md index 5ef088c700..480ca2bfe4 100644 --- a/examples/validating-public-input/README.md +++ b/examples/validating-public-input/README.md @@ -15,8 +15,6 @@ This example is designed to do either with SP1 or risc0 proofs these are the com 2. `make submit_fibonacci_risc0_proof_devnet` -> The batch needs at least two proofs to be sealed, in another terminal run `make batcher_send_risc0_task` to actually submit the batch to aligned. - The command will log the file where all the aligned verification data was saved like so: ``` @@ -65,8 +63,6 @@ transactionHash 2. `make submit_fibonacci_sp1_proof_devnet` -> The batch needs at least two proofs to be selaed, in another terminal run `make batcher_send_sp1_task` to actually submit the batch to aligned. - The command will log the file where all the aligned verification data was saved like so: ``` @@ -86,8 +82,6 @@ Contract Address: 0x90d6A3E189C70E1Cce16c29151077cB9Badb2448 Block: 2963688 Paid: 0.000727925005095475 ETH (727925 gas * 1.000000007 gwei) ``` -> [NOTE] -> The `Contract Address` listed above corresponds to a current valid deployment of the examples contract on the `holesky` testnet. save the contract address for the next command. @@ -104,3 +98,11 @@ status 1 (success) transactionHash ... ``` + +5. If the process fails, it could be due to mismatched commitments when verifying. Ensure that the contract commitments are updated to match the values returned in the batcher's response under `aligned_verification_data`. For example, if the SP1 or Risc0 version has changed, you'll need to update the `programIdCommitment`. To regenerate the commitment, run: + +```shell +make get_program_id_commitment DATA_FILE_NAME= +``` + +And update the field `fibonacciProgramIdCommitmentSp1` or `fibonacciProgramIdCommitmentRisc0` in the contract with the new value. diff --git a/examples/validating-public-input/aligned-integration/Cargo.lock b/examples/validating-public-input/aligned-integration/Cargo.lock index 8d6882e9dd..93a98d6f2a 100644 --- a/examples/validating-public-input/aligned-integration/Cargo.lock +++ b/examples/validating-public-input/aligned-integration/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] @@ -73,7 +73,9 @@ dependencies = [ "hex", "lambdaworks-crypto", "log", + "reqwest 0.12.19", "serde", + "serde_bytes", "serde_json", "serde_repr", "sha3", @@ -84,9 +86,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -99,36 +101,37 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.59.0", ] [[package]] @@ -148,13 +151,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -168,15 +171,21 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -187,9 +196,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -218,11 +227,17 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bech32" @@ -253,9 +268,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bitvec" @@ -290,15 +305,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "byteorder" @@ -308,9 +323,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -327,29 +342,28 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] [[package]] name = "camino" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -365,14 +379,14 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "cc" -version = "1.1.23" +version = "1.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" dependencies = [ "jobserver", "libc", @@ -387,9 +401,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "num-traits", ] @@ -433,9 +447,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.18" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" +checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" dependencies = [ "clap_builder", "clap_derive", @@ -443,9 +457,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.18" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" +checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" dependencies = [ "anstream", "anstyle", @@ -455,21 +469,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coins-bip32" @@ -484,7 +498,7 @@ dependencies = [ "k256", "serde", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -500,7 +514,7 @@ dependencies = [ "pbkdf2 0.12.2", "rand", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -520,33 +534,33 @@ dependencies = [ "serde_derive", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", "unicode-width", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "const-hex" -version = "1.13.1" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" dependencies = [ "cfg-if", "cpufeatures", @@ -561,6 +575,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -585,9 +619,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -603,9 +637,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -622,15 +656,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -665,15 +699,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -681,22 +715,31 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] [[package]] name = "derive_more" -version = "0.99.18" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -708,7 +751,7 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -766,6 +809,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "dunce" version = "1.0.5" @@ -788,9 +842,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -822,15 +876,15 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -855,9 +909,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", "regex", @@ -865,31 +919,31 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -910,7 +964,7 @@ dependencies = [ "serde_json", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid", ] @@ -927,7 +981,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -1006,7 +1060,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1025,10 +1079,10 @@ dependencies = [ "proc-macro2", "quote", "regex", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.79", + "syn 2.0.101", "toml", "walkdir", ] @@ -1046,7 +1100,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -1072,9 +1126,9 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.79", + "syn 2.0.101", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -1087,11 +1141,11 @@ checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" dependencies = [ "chrono", "ethers-core", - "reqwest", + "reqwest 0.11.27", "semver", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1112,10 +1166,10 @@ dependencies = [ "futures-locks", "futures-util", "instant", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -1145,10 +1199,10 @@ dependencies = [ "jsonwebtoken", "once_cell", "pin-project", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite 0.20.1", "tracing", @@ -1175,7 +1229,7 @@ dependencies = [ "ethers-core", "rand", "sha2", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1203,7 +1257,7 @@ dependencies = [ "serde_json", "solang-parser", "svm-rs", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "tokio", "tracing", @@ -1223,15 +1277,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "rand_core", "subtle", @@ -1257,9 +1311,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", "miniz_oxide", @@ -1313,9 +1367,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1328,9 +1382,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1338,15 +1392,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1355,9 +1409,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-locks" @@ -1371,26 +1425,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -1404,9 +1458,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1442,26 +1496,40 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", - "wasi", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] name = "gimli" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "gloo-timers" @@ -1505,11 +1573,30 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", @@ -1517,9 +1604,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" [[package]] name = "hashers" @@ -1538,9 +1625,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" [[package]] name = "hex" @@ -1559,11 +1646,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1579,9 +1666,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1599,11 +1686,34 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] + [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1611,25 +1721,19 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", - "http-body", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -1641,6 +1745,26 @@ dependencies = [ "want", ] +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.10", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + [[package]] name = "hyper-rustls" version = "0.24.2" @@ -1649,20 +1773,175 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper", - "rustls", + "hyper 0.14.32", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" +dependencies = [ + "http 1.3.1", + "hyper 1.6.0", + "hyper-util", + "rustls 0.23.27", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration 0.6.1", "tokio", - "tokio-rustls", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", ] [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1694,13 +1973,13 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] @@ -1711,9 +1990,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.5.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", "hashbrown", @@ -1721,9 +2000,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] @@ -1739,9 +2018,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" @@ -1760,25 +2049,51 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] -name = "jobserver" -version = "0.1.32" +name = "jiff" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "a194df1107f33c79f4f93d02c80798520551949d59dfad22b6157048a88cca93" dependencies = [ - "libc", -] + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1851,10 +2166,12 @@ dependencies = [ [[package]] name = "lambdaworks-crypto" -version = "0.10.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa95d94bba7de86cb96611b40d3#efd46f0b0aea3aa95d94bba7de86cb96611b40d3" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" dependencies = [ "lambdaworks-math", + "rand", + "rand_chacha", "serde", "sha2", "sha3", @@ -1862,9 +2179,11 @@ dependencies = [ [[package]] name = "lambdaworks-math" -version = "0.10.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa95d94bba7de86cb96611b40d3#efd46f0b0aea3aa95d94bba7de86cb96611b40d3" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" dependencies = [ + "getrandom 0.2.16", + "rand", "serde", "serde_json", ] @@ -1877,15 +2196,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" - -[[package]] -name = "libm" -version = "0.2.8" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libredox" @@ -1893,21 +2206,27 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "libc", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -1915,9 +2234,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "md-5" @@ -1943,30 +2262,29 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi", "libc", - "wasi", - "windows-sys 0.52.0", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -2017,14 +2335,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -2048,26 +2365,29 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "object" -version = "0.36.4" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.1" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "open-fastrlp" @@ -2096,11 +2416,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "cfg-if", "foreign-types", "libc", @@ -2117,20 +2437,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -2146,35 +2466,37 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -2182,9 +2504,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -2269,80 +2591,71 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", + "phf_shared", "rand", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared 0.11.2", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "phf_shared" -version = "0.10.0" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2362,15 +2675,33 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -2380,9 +2711,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] @@ -2395,12 +2726,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" dependencies = [ "proc-macro2", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -2419,29 +2750,29 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "lazy_static", "num-traits", "rand", @@ -2453,13 +2784,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -2493,7 +2830,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", ] [[package]] @@ -2527,11 +2864,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", ] [[package]] @@ -2540,16 +2877,16 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -2559,9 +2896,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2585,11 +2922,11 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", - "http-body", - "hyper", - "hyper-rustls", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", "ipnet", "js-sys", "log", @@ -2597,15 +2934,15 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", + "rustls 0.21.12", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", - "system-configuration", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", @@ -2615,6 +2952,48 @@ dependencies = [ "winreg", ] +[[package]] +name = "reqwest" +version = "0.12.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "h2 0.4.10", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls 0.27.6", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -2634,7 +3013,7 @@ dependencies = [ "cc", "libc", "once_cell", - "spin 0.5.2", + "spin", "untrusted 0.7.1", "web-sys", "winapi", @@ -2642,15 +3021,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -2688,23 +3066,23 @@ dependencies = [ [[package]] name = "rpassword" -version = "7.3.1" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2730,15 +3108,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2748,11 +3126,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", - "rustls-webpki", + "ring 0.17.14", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.23.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki 0.103.3", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -2762,27 +3153,47 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + [[package]] name = "rustls-webpki" version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "ring 0.17.14", + "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -2804,9 +3215,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", "derive_more", @@ -2816,21 +3227,21 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -2859,7 +3270,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] @@ -2883,7 +3294,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "core-foundation", "core-foundation-sys", "libc", @@ -2892,9 +3303,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2902,9 +3313,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -2923,29 +3334,38 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -2955,13 +3375,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -2998,9 +3418,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3041,21 +3461,21 @@ dependencies = [ [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 2.0.12", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" @@ -3068,15 +3488,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3092,7 +3512,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] @@ -3102,12 +3522,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "spki" version = "0.7.3" @@ -3118,6 +3532,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -3126,14 +3546,13 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", "parking_lot", - "phf_shared 0.10.0", + "phf_shared", "precomputed-hash", ] @@ -3162,7 +3581,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -3181,12 +3600,12 @@ dependencies = [ "fs2", "hex", "once_cell", - "reqwest", + "reqwest 0.11.27", "semver", "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.69", "url", "zip", ] @@ -3204,9 +3623,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -3219,6 +3638,26 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -3227,7 +3666,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation", - "system-configuration-sys", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.1", + "core-foundation", + "system-configuration-sys 0.6.0", ] [[package]] @@ -3240,6 +3690,16 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -3248,12 +3708,12 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", "rustix", "windows-sys 0.59.0", @@ -3272,29 +3732,49 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -3307,15 +3787,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -3330,11 +3810,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -3347,9 +3837,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", @@ -3363,13 +3853,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] @@ -3388,7 +3878,17 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls 0.23.27", "tokio", ] @@ -3400,9 +3900,9 @@ checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", - "rustls", + "rustls 0.21.12", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tungstenite 0.20.1", "webpki-roots", ] @@ -3423,9 +3923,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -3436,9 +3936,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -3448,26 +3948,72 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -3476,9 +4022,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -3487,20 +4033,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", ] @@ -3534,9 +4080,9 @@ dependencies = [ "httparse", "log", "rand", - "rustls", + "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -3550,21 +4096,21 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.3.1", "httparse", "log", "native-tls", "rand", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uint" @@ -3584,32 +4130,17 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" -version = "0.1.14" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" @@ -3631,9 +4162,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -3646,6 +4177,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -3658,7 +4195,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.16", "serde", ] @@ -3699,49 +4236,59 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3749,28 +4296,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -3813,6 +4363,41 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-registry" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -3963,9 +4548,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] @@ -3980,6 +4565,21 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "ws_stream_wasm" version = "0.7.4" @@ -3993,7 +4593,7 @@ dependencies = [ "pharos", "rustc_version", "send_wrapper 0.6.0", - "thiserror", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -4014,25 +4614,69 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.101", + "synstructure", ] [[package]] @@ -4041,6 +4685,39 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "zip" version = "0.6.6" @@ -4082,9 +4759,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/examples/validating-public-input/aligned-integration/Cargo.toml b/examples/validating-public-input/aligned-integration/Cargo.toml index b95940c4bb..b88767ce07 100644 --- a/examples/validating-public-input/aligned-integration/Cargo.toml +++ b/examples/validating-public-input/aligned-integration/Cargo.toml @@ -4,8 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] -aligned-sdk = { path = "../../../batcher/aligned-sdk" } -tokio = { version = "1.37.0", features = [ +aligned-sdk = { path = "../../../crates/sdk" } +tokio = { version = "1.45.1", features = [ "io-std", "time", "macros", diff --git a/examples/validating-public-input/aligned-integration/src/main.rs b/examples/validating-public-input/aligned-integration/src/main.rs index 84955e1979..3ff9986b9e 100644 --- a/examples/validating-public-input/aligned-integration/src/main.rs +++ b/examples/validating-public-input/aligned-integration/src/main.rs @@ -4,10 +4,10 @@ use std::io::Write; use std::path::PathBuf; use std::str::FromStr; -use aligned_sdk::core::errors::SubmitError; -use aligned_sdk::core::types::Network; -use aligned_sdk::core::types::{AlignedVerificationData, ProvingSystemId, VerificationData}; -use aligned_sdk::sdk::{get_nonce_from_ethereum, submit_and_wait_verification}; +use aligned_sdk::common::errors::SubmitError; +use aligned_sdk::common::types::Network; +use aligned_sdk::common::types::{AlignedVerificationData, ProvingSystemId, VerificationData}; +use aligned_sdk::verification_layer::{get_nonce_from_batcher, submit_and_wait_verification}; use clap::Parser; use clap::ValueEnum; use env_logger::Env; @@ -215,7 +215,7 @@ async fn main() -> Result<(), SubmitError> { // Set a fee of 0.01 Eth let max_fee = U256::from(100_000_000_000_000u128); - let nonce = get_nonce_from_ethereum(&args.rpc_url, wallet.address(), network.clone()) + let nonce = get_nonce_from_batcher(network.clone(), wallet.address()) .await .expect("Failed to get next nonce"); diff --git a/examples/validating-public-input/contracts/.env.devnet b/examples/validating-public-input/contracts/.env.devnet index 2e805c46e3..2d1e16ca5c 100644 --- a/examples/validating-public-input/contracts/.env.devnet +++ b/examples/validating-public-input/contracts/.env.devnet @@ -1,4 +1,4 @@ RPC_URL="http://127.0.0.1:8545" PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 -ALIGNED_SERVICE_MANAGER_ADDRESS=0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8 -PAYMENT_SERVICE_ADDRESS=0x7969c5eD335650692Bc04293B07F5BF2e7A673C0 +ALIGNED_SERVICE_MANAGER_ADDRESS=0x851356ae760d987E095750cCeb3bC6014560891C +PAYMENT_SERVICE_ADDRESS=0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650 diff --git a/examples/validating-public-input/contracts/src/FibonacciValidator.sol b/examples/validating-public-input/contracts/src/FibonacciValidator.sol index 930147579e..d9885bed98 100644 --- a/examples/validating-public-input/contracts/src/FibonacciValidator.sol +++ b/examples/validating-public-input/contracts/src/FibonacciValidator.sol @@ -5,11 +5,10 @@ contract FibonacciValidator { address public alignedServiceManager; address public paymentServiceAddr; - bytes32 public fibonacciProgramIdCommitmentSp1 = - 0x588277d2461159223e7a688895a8e8529ce33f54730d1528c960d3c67e468520; - + bytes32 public fibonacciProgramIdCommitmentSp1 = 0xc91d23fc3b1d24ecb241fbd501162734584f7c9f15ee5c95c712419206797a61; + bytes32 public fibonacciProgramIdCommitmentRisc0 = - 0x52075f80c0b914b6cb8d86a2827b30b1252b58f2aa0173b993188650a538d5c5; + 0x34fea0bbf4266e3ec6d518f685cf1e365f25228013efaaebf7648b26d14d41bb; error InvalidProgramID(string verifier, bytes32 submitted, bytes32 required); //051ce67c @@ -20,7 +19,6 @@ contract FibonacciValidator { paymentServiceAddr = _paymentServiceAddr; } - function verifyBatchInclusion( bytes32 proofCommitment, bytes32 pubInputCommitment, @@ -49,51 +47,40 @@ contract FibonacciValidator { "Fibonacci numbers don't match with public input" ); - ( - bool callWasSuccessful, - bytes memory proofIsIncluded - ) = alignedServiceManager.staticcall( - abi.encodeWithSignature( - "verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256,address)", - proofCommitment, - pubInputCommitment, - programIdCommitment, - proofGeneratorAddr, - batchMerkleRoot, - merkleProof, - verificationDataBatchIndex, - paymentServiceAddr - ) - ); + (bool callWasSuccessful, bytes memory proofIsIncluded) = alignedServiceManager.staticcall( + abi.encodeWithSignature( + "verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256,address)", + proofCommitment, + pubInputCommitment, + programIdCommitment, + proofGeneratorAddr, + batchMerkleRoot, + merkleProof, + verificationDataBatchIndex, + paymentServiceAddr + ) + ); require(callWasSuccessful, "static_call failed"); - (uint32 n ,uint32 fibN, uint32 fibNPlusOne) = bytesToTwoUint32(pubInputBytes); + (uint32 n, uint32 fibN, uint32 fibNPlusOne) = bytesToTwoUint32(pubInputBytes); emit FibonacciNumbers(n, fibN, fibNPlusOne); return abi.decode(proofIsIncluded, (bool)); } - function bytesToTwoUint32( - bytes memory data - ) public pure returns (uint32, uint32, uint32) { + function bytesToTwoUint32(bytes memory data) public pure returns (uint32, uint32, uint32) { require(data.length >= 8, "Input bytes must be at least 8 bytes long"); - uint32 first = uint32(uint8(data[0])) | - (uint32(uint8(data[1])) << 8) | - (uint32(uint8(data[2])) << 16) | - (uint32(uint8(data[3])) << 24); - - uint32 second = uint32(uint8(data[4])) | - (uint32(uint8(data[5])) << 8) | - (uint32(uint8(data[6])) << 16) | - (uint32(uint8(data[7])) << 24); - - uint32 third = uint32(uint8(data[8])) | - (uint32(uint8(data[9])) << 8) | - (uint32(uint8(data[10])) << 16) | - (uint32(uint8(data[11])) << 24); + uint32 first = uint32(uint8(data[0])) | (uint32(uint8(data[1])) << 8) | (uint32(uint8(data[2])) << 16) + | (uint32(uint8(data[3])) << 24); + + uint32 second = uint32(uint8(data[4])) | (uint32(uint8(data[5])) << 8) | (uint32(uint8(data[6])) << 16) + | (uint32(uint8(data[7])) << 24); + + uint32 third = uint32(uint8(data[8])) | (uint32(uint8(data[9])) << 8) | (uint32(uint8(data[10])) << 16) + | (uint32(uint8(data[11])) << 24); return (first, second, third); } diff --git a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/Cargo.lock b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/Cargo.lock index ac1467c8b9..ea144f5816 100644 --- a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/Cargo.lock +++ b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addchain" @@ -15,39 +15,31 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "cpp_demangle", "fallible-iterator", - "gimli 0.29.0", + "gimli", "memmap2", - "object 0.35.0", + "object", "rustc-demangle", "smallvec", -] - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli 0.31.1", + "typed-arena", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -64,38 +56,65 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anyhow" -version = "1.0.91" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +dependencies = [ + "backtrace", +] [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ "derive_arbitrary", ] [[package]] name = "ark-bn254" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ "ark-ec", "ark-ff", + "ark-r1cs-std", "ark-std", ] [[package]] name = "ark-crypto-primitives" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3a13b34da09176a8baba701233fdffbaa7c1b1192ce031a3da4e55ce1f1a56" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" dependencies = [ + "ahash", + "ark-crypto-primitives-macros", "ark-ec", "ark-ff", "ark-relations", @@ -105,74 +124,91 @@ dependencies = [ "blake2", "derivative", "digest", + "fnv", + "merlin", "sha2", ] +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "ark-ec" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" dependencies = [ + "ahash", "ark-ff", "ark-poly", "ark-serialize", "ark-std", - "derivative", - "hashbrown 0.13.2", - "itertools 0.10.5", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", "num-traits", "zeroize", ] [[package]] name = "ark-ff" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" dependencies = [ "ark-ff-asm", "ark-ff-macros", "ark-serialize", "ark-std", - "derivative", + "arrayvec", "digest", - "itertools 0.10.5", + "educe", + "itertools 0.13.0", "num-bigint 0.4.6", "num-traits", "paste", - "rustc_version", "zeroize", ] [[package]] name = "ark-ff-asm" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "ark-ff-macros" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "ark-groth16" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ceafa83848c3e390f1cbf124bc3193b3e639b3f02009e0e290809a501b95fc" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" dependencies = [ "ark-crypto-primitives", "ark-ec", @@ -185,22 +221,41 @@ dependencies = [ [[package]] name = "ark-poly" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" dependencies = [ + "ahash", "ark-ff", "ark-serialize", "ark-std", - "derivative", - "hashbrown 0.13.2", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-relations", + "ark-std", + "educe", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "tracing", ] [[package]] name = "ark-relations" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00796b6efc05a3f48225e59cb6a2cda78881e7c390872d5786aaf112f31fb4f0" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" dependencies = [ "ark-ff", "ark-std", @@ -210,32 +265,33 @@ dependencies = [ [[package]] name = "ark-serialize" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" dependencies = [ "ark-serialize-derive", "ark-std", + "arrayvec", "digest", "num-bigint 0.4.6", ] [[package]] name = "ark-serialize-derive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "ark-snark" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d3cc6833a335bb8a600241889ead68ee89a3cf8448081fb7694c0fe503da63" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" dependencies = [ "ark-ff", "ark-relations", @@ -245,31 +301,58 @@ dependencies = [ [[package]] name = "ark-std" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ - "addr2line 0.24.2", + "addr2line", "cfg-if", "libc", "miniz_oxide", - "object 0.36.5", + "object", "rustc-demangle", "windows-targets 0.52.6", ] @@ -280,6 +363,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + [[package]] name = "bincode" version = "1.3.3" @@ -289,6 +378,12 @@ dependencies = [ "serde", ] +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -297,9 +392,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "bitvec" @@ -337,23 +432,11 @@ dependencies = [ "generic-array", ] -[[package]] -name = "bonsai-sdk" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" -dependencies = [ - "duplicate", - "maybe-async", - "reqwest", - "serde", - "thiserror", -] - [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" dependencies = [ "borsh-derive", "cfg_aliases", @@ -361,42 +444,41 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.85", - "syn_derive", + "syn 2.0.106", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -407,51 +489,52 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] [[package]] name = "camino" -version = "1.1.9" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", - "thiserror", + "thiserror 2.0.16", ] [[package]] name = "cc" -version = "1.1.31" +version = "1.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -459,9 +542,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -469,6 +552,28 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.16", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -513,95 +618,117 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] -name = "crossbeam" -version = "0.8.4" +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "crossbeam-channel", - "crossbeam-deque", "crossbeam-epoch", - "crossbeam-queue", "crossbeam-utils", ] [[package]] -name = "crossbeam-channel" -version = "0.5.13" +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ "crossbeam-utils", ] [[package]] -name = "crossbeam-deque" -version = "0.8.5" +name = "crossbeam-utils" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "generic-array", + "typenum", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "darling" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "crossbeam-utils", + "darling_core", + "darling_macro", ] [[package]] -name = "crossbeam-queue" -version = "0.3.11" +name = "darling_core" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ - "crossbeam-utils", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.106", ] [[package]] -name = "crossbeam-utils" -version = "0.8.20" +name = "darling_macro" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.106", +] [[package]] -name = "crypto-bigint" -version = "0.5.5" +name = "der" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ - "subtle", + "const-oid", + "pem-rfc7468", + "zeroize", ] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "deranged" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ - "generic-array", - "typenum", + "powerfmt", + "serde", ] [[package]] @@ -616,36 +743,66 @@ dependencies = [ ] [[package]] -name = "derive-debug" -version = "0.1.2" +name = "derive_arbitrary" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53ef7e1cf756fd5a8e74b9a0a9504ec446eddde86c3063a76ff26a13b7773b1" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] -name = "derive_arbitrary" -version = "1.3.2" +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ + "darling", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.106", ] [[package]] name = "derive_more" -version = "0.99.18" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", + "unicode-xid", ] [[package]] @@ -662,32 +819,32 @@ dependencies = [ [[package]] name = "directories" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ "dirs-sys", ] [[package]] name = "dirs" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.48.0", + "windows-sys 0.60.2", ] [[package]] @@ -698,7 +855,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -721,27 +878,35 @@ checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" dependencies = [ "digest", "futures", - "rand", + "rand 0.8.5", "reqwest", - "thiserror", + "thiserror 1.0.69", "tokio", ] [[package]] -name = "duplicate" -version = "1.0.0" +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "educe" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de78e66ac9061e030587b2a2e75cc88f22304913c907b11307bca737141230cb" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" dependencies = [ - "heck", - "proc-macro-error", + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elf" @@ -750,65 +915,125 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" [[package]] -name = "equivalent" -version = "1.0.1" +name = "embedded-io" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" [[package]] -name = "erased-serde" -version = "0.4.5" +name = "embedded-io" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" -dependencies = [ - "serde", - "typeid", -] +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] -name = "errno" -version = "0.3.9" +name = "encoding_rs" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "libc", - "windows-sys 0.52.0", + "cfg-if", ] [[package]] -name = "fallible-iterator" -version = "0.3.0" +name = "enum-map" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] [[package]] -name = "fastrand" -version = "2.1.1" +name = "enum-map-derive" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] -name = "ff" -version = "0.13.0" +name = "enum-ordinalize" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" dependencies = [ - "bitvec", - "byteorder", - "ff_derive", - "rand_core", - "subtle", + "enum-ordinalize-derive", ] [[package]] -name = "ff_derive" -version = "0.13.0" +name = "enum-ordinalize-derive" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ - "addchain", - "cfg-if", - "num-bigint 0.3.3", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", "num-integer", "num-traits", "proc-macro2", @@ -816,11 +1041,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" + [[package]] name = "flate2" -version = "1.0.34" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -832,6 +1063,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.5.0" @@ -850,7 +1087,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -861,9 +1098,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -930,7 +1167,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -963,6 +1200,30 @@ dependencies = [ "slab", ] +[[package]] +name = "gdbstub" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b686b198dfaa4109ebd0443d2841bc521e4b4b2915f1d84b3bb50332a8cdc1ae" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "log", + "managed", + "num-traits", + "paste", +] + +[[package]] +name = "gdbstub_arch" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22dde0e1b68787036ccedd0b1ff6f953527a0e807e571fbe898975203027278f" +dependencies = [ + "gdbstub", + "num-traits", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -975,23 +1236,29 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "gimli" -version = "0.29.0" +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "fallible-iterator", - "stable_deref_trait", + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.3+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -999,39 +1266,80 @@ name = "gimli" version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "indexmap 2.11.0", + "stable_deref_trait", +] [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", ] [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "foldhash", +] [[package]] -name = "heck" -version = "0.4.1" +name = "hashlink" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] [[package]] -name = "hermit-abi" -version = "0.3.9" +name = "heapless" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version", + "serde", + "spin", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hex" @@ -1045,15 +1353,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "host" version = "0.1.0" @@ -1063,14 +1362,14 @@ dependencies = [ "methods", "risc0-zkvm", "serde", - "tracing-subscriber 0.3.18", + "tracing-subscriber 0.3.20", ] [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1089,12 +1388,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -1102,24 +1401,26 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "http", "http-body", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -1127,11 +1428,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", @@ -1145,16 +1445,21 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -1162,37 +1467,206 @@ dependencies = [ "tracing", ] +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] +[[package]] +name = "include_bytes_aligned" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" + [[package]] name = "indexmap" -version = "2.6.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.5", + "serde", ] [[package]] name = "inventory" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "itertools" @@ -1203,6 +1677,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.13.0" @@ -1212,35 +1695,55 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + [[package]] name = "lazy-regex" -version = "3.3.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" +checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -1249,14 +1752,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.3.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -1264,56 +1767,143 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "libc" -version = "0.2.161" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "liblzma" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "10bf66f4598dc77ff96677c8e763655494f00ff9c1cf79e2eb5bb07bc31f807d" +dependencies = [ + "liblzma-sys", +] + +[[package]] +name = "liblzma-sys" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01b9596486f6d60c3bbe644c0e1be1aa6ccc472ad630fe8927b456973d7cb736" +dependencies = [ + "cc", + "libc", + "pkg-config", +] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "libc", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", ] [[package]] -name = "lockfree-object-pool" -version = "0.1.6" +name = "log" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] -name = "log" +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "malachite" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fbdf9cb251732db30a7200ebb6ae5d22fe8e11397364416617d2c2cf0c51cb5" +dependencies = [ + "malachite-base", + "malachite-float", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-base" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea0ed76adf7defc1a92240b5c36d5368cfe9251640dcce5bd2d0b7c1fd87aeb" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.11.0", + "libm", + "ryu", +] + +[[package]] +name = "malachite-float" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9d20db1c73759c1377db7b27575df6f2eab7368809dd62c0a715dc1bcc39f7" +dependencies = [ + "itertools 0.11.0", + "malachite-base", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-nz" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "34a79feebb2bc9aa7762047c8e5495269a367da6b5a90a99882a0aeeac1841f7" +dependencies = [ + "itertools 0.11.0", + "libm", + "malachite-base", +] + +[[package]] +name = "malachite-q" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f235d5747b1256b47620f5640c2a17a88c7569eebdf27cd9cb130e1a619191" +dependencies = [ + "itertools 0.11.0", + "malachite-base", + "malachite-nz", +] [[package]] name = "malloc_buf" @@ -1324,58 +1914,65 @@ dependencies = [ "libc", ] +[[package]] +name = "managed" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d" + [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] name = "matrixmultiply" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" dependencies = [ "autocfg", "rawpointer", ] -[[package]] -name = "maybe-async" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.85", -] - [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" dependencies = [ "libc", ] +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + [[package]] name = "metal" version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "block", "core-graphics-types", "foreign-types", @@ -1391,31 +1988,24 @@ dependencies = [ "risc0-build", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi", "libc", - "wasi", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -1434,14 +2024,19 @@ dependencies = [ "rayon", ] +[[package]] +name = "no_std_strings" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" + [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1465,6 +2060,23 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -1474,6 +2086,23 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -1483,6 +2112,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1490,6 +2130,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -1512,29 +2174,20 @@ dependencies = [ [[package]] name = "object" -version = "0.35.0" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "flate2", "memchr", "ruzstd", ] -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "option-ext" @@ -1542,17 +2195,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -1560,9 +2207,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -1577,17 +2224,26 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -1595,77 +2251,122 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90a7d5beecc52a491b54d6dd05c7a45ba1801666a5baad9fdbfc6fef8d2d206c" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" dependencies = [ "portable-atomic", ] [[package]] -name = "ppv-lite86" -version = "0.2.20" +name = "postcard" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ - "zerocopy", + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "heapless", + "serde", ] [[package]] -name = "proc-macro-crate" -version = "3.2.0" +name = "potential_utf" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ - "toml_edit", + "zerovec", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "zerocopy", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-crate" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] +[[package]] +name = "proptest" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +dependencies = [ + "bitflags 2.9.4", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "unarray", +] + [[package]] name = "prost" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -1673,15 +2374,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -1700,61 +2401,74 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", "rustls", "socket2", - "thiserror", + "thiserror 2.0.16", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "rand", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.2", "ring", "rustc-hash", "rustls", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.16", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -1767,19 +2481,39 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "libc", - "rand_chacha", - "rand_core", + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", ] [[package]] name = "rand_chacha" -version = "0.3.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.9.3", ] [[package]] @@ -1788,7 +2522,25 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", ] [[package]] @@ -1799,9 +2551,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -1809,9 +2561,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1819,95 +2571,94 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", ] [[package]] name = "redox_users" -version = "0.4.6" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom", + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 2.0.16", ] [[package]] -name = "regex" -version = "1.11.1" +name = "ref-cast" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", + "ref-cast-impl", ] [[package]] -name = "regex-automata" -version = "0.1.10" +name = "ref-cast-impl" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ - "regex-syntax 0.6.29", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] -name = "regex-automata" -version = "0.4.8" +name = "regex" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] -name = "regex-syntax" -version = "0.6.29" +name = "regex-automata" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "base64", "bytes", - "futures-channel", "futures-core", - "futures-util", "http", "http-body", "http-body-util", "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", @@ -1915,83 +2666,131 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-rustls", - "tokio-util", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", "webpki-roots", - "windows-registry", ] [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] +[[package]] +name = "ringbuffer" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" + [[package]] name = "risc0-binfmt" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "borsh", + "bytemuck", + "derive_more", "elf", + "lazy_static", + "postcard", + "rand 0.9.2", "risc0-zkp", "risc0-zkvm-platform", + "ruint", + "semver", "serde", "tracing", ] [[package]] name = "risc0-build" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "cargo_metadata", + "derive_builder", "dirs", "docker-generate", "hex", "risc0-binfmt", + "risc0-zkos-v1compat", "risc0-zkp", "risc0-zkvm-platform", + "rzup", + "semver", "serde", "serde_json", + "stability", "tempfile", ] [[package]] name = "risc0-build-kernel" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "2.0.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "cc", "directories", - "glob", "hex", "rayon", "sha2", "tempfile", - "which", +] + +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "cfg-if", + "keccak", + "liblzma", + "paste", + "rayon", + "risc0-binfmt", + "risc0-circuit-keccak-sys", + "risc0-circuit-recursion", + "risc0-core", + "risc0-sys", + "risc0-zkp", + "tracing", +] + +[[package]] +name = "risc0-circuit-keccak-sys" +version = "4.0.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "cc", + "derive_more", + "glob", + "risc0-build-kernel", + "risc0-core", + "risc0-sys", ] [[package]] name = "risc0-circuit-recursion" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "bytemuck", @@ -2000,7 +2799,7 @@ dependencies = [ "hex", "lazy-regex", "metal", - "rand", + "rand 0.9.2", "rayon", "risc0-circuit-recursion-sys", "risc0-core", @@ -2014,8 +2813,8 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "glob", "risc0-build-kernel", @@ -2025,35 +2824,44 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", + "bit-vec", "bytemuck", + "byteorder", "cfg-if", - "crossbeam", - "crypto-bigint", - "derive-debug", - "lazy-regex", - "metal", - "rand", + "derive_more", + "enum-map", + "gdbstub", + "gdbstub_arch", + "malachite", + "num-derive", + "num-traits", + "paste", + "postcard", + "rand 0.9.2", "rayon", + "ringbuffer", "risc0-binfmt", "risc0-circuit-rv32im-sys", "risc0-core", "risc0-sys", "risc0-zkp", - "risc0-zkvm-platform", "serde", - "sha2", + "smallvec", "tracing", + "wide", ] [[package]] name = "risc0-circuit-rv32im-sys" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ + "cc", + "derive_more", "glob", "risc0-build-kernel", "risc0-core", @@ -2062,32 +2870,35 @@ dependencies = [ [[package]] name = "risc0-core" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", "nvtx", "puffin", - "rand_core", + "rand_core 0.9.3", ] [[package]] name = "risc0-groth16" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "ark-bn254", "ark-ec", + "ark-ff", "ark-groth16", "ark-serialize", "bytemuck", + "cfg-if", "hex", "num-bigint 0.4.6", "num-traits", "risc0-binfmt", "risc0-core", "risc0-zkp", + "rzup", "serde", "serde_json", "tempfile", @@ -2096,17 +2907,27 @@ dependencies = [ [[package]] name = "risc0-sys" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "1.5.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ - "cc", + "anyhow", "risc0-build-kernel", ] +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform", +] + [[package]] name = "risc0-zkp" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "blake2", @@ -2121,46 +2942,57 @@ dependencies = [ "ndarray", "parking_lot", "paste", - "rand", - "rand_core", + "rand 0.9.2", + "rand_core 0.9.3", "rayon", "risc0-core", "risc0-sys", "risc0-zkvm-platform", "serde", "sha2", + "stability", "tracing", ] [[package]] name = "risc0-zkvm" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ - "addr2line 0.22.0", + "addr2line", "anyhow", "bincode", - "bonsai-sdk", "borsh", "bytemuck", "bytes", + "derive_more", "elf", - "getrandom", + "enum-map", + "gdbstub", + "gdbstub_arch", + "gimli", "hex", + "keccak", "lazy-regex", + "num-bigint 0.4.6", + "num-traits", + "object", "prost", - "rand", + "rand 0.9.2", "rayon", "risc0-binfmt", "risc0-build", + "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", "risc0-core", "risc0-groth16", + "risc0-zkos-v1compat", "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", "rustc-demangle", + "rzup", "semver", "serde", "sha2", @@ -2172,12 +3004,16 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", - "getrandom", + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", "libm", + "num_enum", + "paste", "stability", ] @@ -2191,17 +3027,59 @@ dependencies = [ "paste", ] +[[package]] +name = "rsa" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "ruint" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +dependencies = [ + "borsh", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -2214,22 +3092,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "once_cell", "ring", @@ -2240,47 +3118,97 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "rustls-pki-types" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "rustls-pki-types", + "web-time", + "zeroize", ] -[[package]] -name = "rustls-pki-types" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" - [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + [[package]] name = "ruzstd" -version = "0.6.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" +checksum = "fad02996bfc73da3e301efe90b1837be9ed8f4a462b6ed410aa35d00381de89f" dependencies = [ - "byteorder", - "derive_more", "twox-hash", ] [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "rzup" +version = "0.5.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "hex", + "rsa", + "semver", + "serde", + "serde_with", + "sha2", + "strum", + "tempfile", + "thiserror 2.0.16", + "toml", + "yaml-rust2", +] + +[[package]] +name = "safe_arch" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] [[package]] name = "scopeguard" @@ -2290,38 +3218,38 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -2329,6 +3257,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2341,11 +3278,43 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.11.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -2367,6 +3336,16 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -2375,27 +3354,24 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.7" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2403,6 +3379,19 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] [[package]] name = "stability" @@ -2411,7 +3400,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -2426,6 +3415,33 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "subtle" version = "2.6.1" @@ -2445,9 +3461,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -2455,24 +3471,23 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "sync_wrapper" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.85", + "futures-core", ] [[package]] -name = "sync_wrapper" -version = "1.0.1" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "futures-core", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -2483,52 +3498,111 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.60.2", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "1.0.65" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +dependencies = [ + "thiserror-impl 2.0.16", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", +] + +[[package]] +name = "time" +version = "0.3.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", ] [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -2541,60 +3615,111 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", + "slab", "socket2", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] -name = "tokio-util" -version = "0.7.12" +name = "toml" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap", + "indexmap 2.11.0", + "serde", + "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.4", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -2603,9 +3728,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -2615,20 +3740,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -2656,14 +3781,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -2688,23 +3813,29 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "typeid" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "typetag" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba3b6e86ffe0054b2c44f2d86407388b933b16cb0a70eea3929420db1d9bbe" +checksum = "73f22b40dd7bfe8c14230cf9702081366421890435b2d625fa92b4acc4c3de6f" dependencies = [ "erased-serde", "inventory", @@ -2715,35 +3846,32 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b20a22c42c8f1cd23ce5e34f165d4d37038f5b663ad20fb6adbdf029172483" +checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] -name = "unicode-bidi" -version = "0.3.17" +name = "unarray" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] -name = "unicode-normalization" -version = "0.1.24" +name = "unicode-xid" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "untrusted" @@ -2753,20 +3881,27 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "version_check" @@ -2785,53 +3920,63 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +dependencies = [ + "wit-bindgen", +] [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2839,41 +3984,41 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] -name = "wasm-streams" -version = "0.4.2" +name = "web-sys" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ - "futures-util", "js-sys", "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", ] [[package]] -name = "web-sys" -version = "0.3.72" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -2881,84 +4026,80 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] [[package]] -name = "which" -version = "6.0.3" +name = "wide" +version = "0.7.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" dependencies = [ - "either", - "home", - "rustix", - "winsafe", + "bytemuck", + "safe_arch", ] [[package]] -name = "winapi" -version = "0.3.9" +name = "windows-core" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows-implement" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-interface" +version = "0.59.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] -name = "windows-result" -version = "0.2.0" +name = "windows-link" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] -name = "windows-strings" -version = "0.1.0" +name = "windows-result" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] -name = "windows-sys" -version = "0.48.0" +name = "windows-strings" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-targets 0.48.5", + "windows-link", ] [[package]] @@ -2980,18 +4121,12 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets 0.53.3", ] [[package]] @@ -3003,7 +4138,7 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", @@ -3011,10 +4146,21 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" +name = "windows-targets" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] [[package]] name = "windows_aarch64_gnullvm" @@ -3023,10 +4169,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" +name = "windows_aarch64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" @@ -3035,10 +4181,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] -name = "windows_i686_gnu" -version = "0.48.5" +name = "windows_aarch64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" @@ -3046,6 +4192,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" @@ -3053,10 +4205,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "windows_i686_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" @@ -3065,10 +4217,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +name = "windows_i686_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" @@ -3077,10 +4229,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" +name = "windows_x86_64_gnu" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" [[package]] name = "windows_x86_64_gnullvm" @@ -3089,10 +4241,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +name = "windows_x86_64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" @@ -3100,20 +4252,32 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "winsafe" -version = "0.0.19" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wyz" @@ -3124,25 +4288,80 @@ dependencies = [ "tap", ] +[[package]] +name = "yaml-rust2" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", + "synstructure", ] [[package]] @@ -3162,36 +4381,67 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" dependencies = [ "arbitrary", "crc32fast", "crossbeam-utils", "displaydoc", "flate2", - "indexmap", + "indexmap 2.11.0", "memchr", - "thiserror", + "thiserror 2.0.16", "zopfli", ] [[package]] name = "zopfli" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", - "lockfree-object-pool", "log", - "once_cell", "simd-adler32", ] diff --git a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/host/Cargo.toml b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/host/Cargo.toml index e64aaee716..a1c2dfccae 100644 --- a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/host/Cargo.toml +++ b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/host/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" [dependencies] methods = { path = "../methods" } -risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v1.1.2", default-features = false, features = [ +risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v3.0.3", default-features = false, features = [ "prove", ] } tracing-subscriber = { version = "0.3", features = ["env-filter"] } diff --git a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/Cargo.toml b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/Cargo.toml index 42c0ed8451..a50fb4e690 100644 --- a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/Cargo.toml +++ b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [build-dependencies] -risc0-build = { git = "https://github.com/risc0/risc0", tag = "v1.1.2" } +risc0-build = { git = "https://github.com/risc0/risc0", tag = "v3.0.3" } [package.metadata.risc0] methods = ["guest"] diff --git a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/build.rs b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/build.rs index c10babb5fa..83aa586eba 100644 --- a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/build.rs +++ b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/build.rs @@ -1,31 +1,18 @@ -use std::{collections::HashMap, env, path::PathBuf}; - -use risc0_build::{DockerOptions, GuestOptions}; +use risc0_build::{DockerOptionsBuilder, GuestOptionsBuilder}; +use std::collections::HashMap; fn main() { - match env::current_dir() { - Ok(current_dir) => { - if let Some(parent) = current_dir.parent() { - let parent_path = PathBuf::from(parent); - // Set the root directory for Docker to risc_zero/fibonacci_proof_generator - - let docker_options = Some(DockerOptions { - root_dir: Some(parent_path), - }); - - let guest_options = HashMap::from([( - "fibonacci", - GuestOptions { - features: vec![], - use_docker: docker_options, - }, - )]); + // With this containerized build process, we ensure that all builds of the guest code, + // regardless of the machine or local environment, will produce the same ImageID + let docker_options = DockerOptionsBuilder::default().build().unwrap(); + // Reference: https://github.com/risc0/risc0/blob/main/risc0/build/src/config.rs#L73-L90 + let guest_options = GuestOptionsBuilder::default() + .use_docker(docker_options) + .build() + .unwrap(); - risc0_build::embed_methods_with_options(guest_options); - } else { - println!("The current directory does not have a parent."); - } - } - Err(e) => println!("Error getting current directory: {}", e), - } + risc0_build::embed_methods_with_options(HashMap::from([( + "fibonacci", + guest_options, + )])); } diff --git a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.lock b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.lock index e13e01aa80..20dc880549 100644 --- a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.lock +++ b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.lock @@ -1,12 +1,12 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -14,17 +14,23 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "anyhow" -version = "1.0.91" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] name = "ark-bn254" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ "ark-ec", "ark-ff", @@ -33,10 +39,12 @@ dependencies = [ [[package]] name = "ark-crypto-primitives" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3a13b34da09176a8baba701233fdffbaa7c1b1192ce031a3da4e55ce1f1a56" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" dependencies = [ + "ahash", + "ark-crypto-primitives-macros", "ark-ec", "ark-ff", "ark-relations", @@ -46,74 +54,91 @@ dependencies = [ "blake2", "derivative", "digest", + "fnv", + "merlin", "sha2", ] +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "ark-ec" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" dependencies = [ + "ahash", "ark-ff", "ark-poly", "ark-serialize", "ark-std", - "derivative", - "hashbrown 0.13.2", + "educe", + "fnv", + "hashbrown", "itertools", + "num-bigint", + "num-integer", "num-traits", "zeroize", ] [[package]] name = "ark-ff" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" dependencies = [ "ark-ff-asm", "ark-ff-macros", "ark-serialize", "ark-std", - "derivative", + "arrayvec", "digest", + "educe", "itertools", "num-bigint", "num-traits", "paste", - "rustc_version", "zeroize", ] [[package]] name = "ark-ff-asm" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "ark-ff-macros" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ "num-bigint", "num-traits", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "ark-groth16" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ceafa83848c3e390f1cbf124bc3193b3e639b3f02009e0e290809a501b95fc" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" dependencies = [ "ark-crypto-primitives", "ark-ec", @@ -126,22 +151,24 @@ dependencies = [ [[package]] name = "ark-poly" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" dependencies = [ + "ahash", "ark-ff", "ark-serialize", "ark-std", - "derivative", - "hashbrown 0.13.2", + "educe", + "fnv", + "hashbrown", ] [[package]] name = "ark-relations" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00796b6efc05a3f48225e59cb6a2cda78881e7c390872d5786aaf112f31fb4f0" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" dependencies = [ "ark-ff", "ark-std", @@ -150,32 +177,33 @@ dependencies = [ [[package]] name = "ark-serialize" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" dependencies = [ "ark-serialize-derive", "ark-std", + "arrayvec", "digest", "num-bigint", ] [[package]] name = "ark-serialize-derive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "ark-snark" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d3cc6833a335bb8a600241889ead68ee89a3cf8448081fb7694c0fe503da63" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" dependencies = [ "ark-ff", "ark-relations", @@ -185,19 +213,31 @@ dependencies = [ [[package]] name = "ark-std" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "bit-vec" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" @@ -207,9 +247,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "blake2" @@ -237,9 +277,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" dependencies = [ "borsh-derive", "cfg_aliases", @@ -247,36 +287,35 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.85", - "syn_derive", + "syn 2.0.106", ] [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -287,9 +326,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -297,6 +336,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -332,9 +380,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -360,6 +408,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -378,11 +447,23 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elf" @@ -390,11 +471,43 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "fibonacci" @@ -403,6 +516,12 @@ dependencies = [ "risc0-zkvm", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "foreign-types" version = "0.5.0" @@ -421,7 +540,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -442,29 +561,35 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] -name = "hashbrown" -version = "0.13.2" +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "ahash", + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.3+wasi-0.2.4", ] [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", +] [[package]] name = "hex" @@ -478,42 +603,66 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "include_bytes_aligned" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" + [[package]] name = "indexmap" -version = "2.6.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown", ] [[package]] name = "itertools" -version = "0.10.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + [[package]] name = "libc" -version = "0.2.161" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "log" -version = "0.4.22" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "malloc_buf" @@ -526,9 +675,21 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "merlin" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] [[package]] name = "metal" @@ -536,7 +697,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "block", "core-graphics-types", "foreign-types", @@ -545,6 +706,12 @@ dependencies = [ "paste", ] +[[package]] +name = "no_std_strings" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" + [[package]] name = "num-bigint" version = "0.4.6" @@ -571,6 +738,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -584,9 +773,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "paste" @@ -596,77 +785,95 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] -name = "ppv-lite86" -version = "0.2.20" +name = "postcard" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ - "zerocopy", + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", ] [[package]] -name = "proc-macro-crate" -version = "3.2.0" +name = "ppv-lite86" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "toml_edit", + "zerocopy", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-crate" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", + "toml_edit", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro2" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "unicode-ident", ] [[package]] -name = "proc-macro2" -version = "1.0.89" +name = "proptest" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ - "unicode-ident", + "bitflags 2.9.4", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift", + "unarray", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_core 0.9.3", ] [[package]] @@ -676,7 +883,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -685,24 +902,61 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" + +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.3", +] + [[package]] name = "risc0-binfmt" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "borsh", + "bytemuck", + "derive_more", "elf", + "lazy_static", + "postcard", + "rand 0.9.2", "risc0-zkp", "risc0-zkvm-platform", + "ruint", + "semver", "serde", "tracing", ] +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-zkp", + "tracing", +] + [[package]] name = "risc0-circuit-recursion" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "bytemuck", @@ -715,50 +969,64 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", - "metal", + "bit-vec", + "bytemuck", + "derive_more", + "paste", "risc0-binfmt", "risc0-core", "risc0-zkp", - "risc0-zkvm-platform", "serde", "tracing", ] [[package]] name = "risc0-core" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", - "rand_core", + "rand_core 0.9.3", ] [[package]] name = "risc0-groth16" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "ark-bn254", "ark-ec", + "ark-ff", "ark-groth16", "ark-serialize", "bytemuck", "hex", "num-bigint", + "num-traits", "risc0-binfmt", "risc0-zkp", "serde", ] +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform", +] + [[package]] name = "risc0-zkp" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "blake2", @@ -770,29 +1038,32 @@ dependencies = [ "hex-literal", "metal", "paste", - "rand_core", + "rand_core 0.9.3", "risc0-core", "risc0-zkvm-platform", "serde", "sha2", + "stability", "tracing", ] [[package]] name = "risc0-zkvm" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "borsh", "bytemuck", - "getrandom", + "derive_more", "hex", "risc0-binfmt", + "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", "risc0-core", "risc0-groth16", + "risc0-zkos-v1compat", "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", @@ -805,12 +1076,16 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", - "getrandom", + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", "libm", + "num_enum", + "paste", "stability", ] @@ -825,51 +1100,79 @@ dependencies = [ ] [[package]] -name = "rustc_version" -version = "0.4.1" +name = "ruint" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" dependencies = [ - "semver", + "borsh", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", ] +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] [[package]] name = "serde" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", "digest", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "stability" version = "0.2.1" @@ -877,7 +1180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -899,9 +1202,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -909,28 +1212,36 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "thiserror" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "toml_datetime", @@ -939,9 +1250,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -950,32 +1261,50 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unarray" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "version_check" @@ -985,38 +1314,52 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +dependencies = [ + "wit-bindgen", +] [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] [[package]] @@ -1036,5 +1379,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.106", ] diff --git a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.toml b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.toml index 963431a24c..d54370fc9c 100644 --- a/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.toml +++ b/examples/validating-public-input/risc_zero/fibonacci_proof_generator/methods/guest/Cargo.toml @@ -7,4 +7,4 @@ edition = "2021" [dependencies] # If you want to try (experimental) std support, add `features = [ "std" ]` to risc0-zkvm -risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v1.1.2", default-features = false } +risc0-zkvm = { git = "https://github.com/risc0/risc0", tag = "v3.0.3", default-features = false } diff --git a/examples/validating-public-input/sp1/fibonacci/Cargo.lock b/examples/validating-public-input/sp1/fibonacci/Cargo.lock index 7655b66f8a..6b40eba5f4 100644 --- a/examples/validating-public-input/sp1/fibonacci/Cargo.lock +++ b/examples/validating-public-input/sp1/fibonacci/Cargo.lock @@ -1,16 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] +version = 4 [[package]] name = "addchain" @@ -38,22 +28,11 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -86,13 +65,34 @@ dependencies = [ "bytes", "cfg-if", "const-hex", - "derive_more 0.99.18", + "derive_more 0.99.20", "hex-literal", "itoa", "k256", "keccak-asm", "proptest", - "rand", + "rand 0.8.5", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-primitives" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a326d47106039f38b811057215a92139f46eef7983a4b77b10930a0ea5685b1e" +dependencies = [ + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "hashbrown 0.15.3", + "indexmap 2.9.0", + "itoa", + "k256", + "paste", + "rand 0.9.1", "ruint", "serde", "tiny-keccak", @@ -100,9 +100,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" dependencies = [ "arrayvec", "bytes", @@ -119,7 +119,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -130,12 +130,12 @@ checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" dependencies = [ "alloy-sol-macro-input", "const-hex", - "heck", - "indexmap", + "heck 0.5.0", + "indexmap 2.9.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", "syn-solidity", "tiny-keccak", ] @@ -148,10 +148,10 @@ checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" dependencies = [ "const-hex", "dunce", - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", "syn-solidity", ] @@ -161,7 +161,7 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" dependencies = [ - "alloy-primitives", + "alloy-primitives 0.7.7", "alloy-sol-macro", "const-hex", "serde", @@ -193,9 +193,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -208,43 +208,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", + "once_cell_polyfill", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.94" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "ark-ff" @@ -357,7 +358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -367,7 +368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -383,25 +384,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "async-trait" -version = "0.1.83" +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] -name = "async_io_stream" -version = "0.3.3" +name = "async-trait" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ - "futures", - "pharos", - "rustc_version 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -412,13 +424,13 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -437,10 +449,10 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.5.2", + "hyper", "hyper-util", "itoa", "matchit", @@ -453,9 +465,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", - "tower", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -470,23 +482,37 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.2", + "sync_wrapper", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.16", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", +] + [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -504,18 +530,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -524,15 +538,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bech32" -version = "0.9.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bincode" @@ -549,7 +557,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.6.0", + "bitflags", "cexpr", "clang-sys", "itertools 0.13.0", @@ -560,35 +568,29 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "1.3.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bitvec" @@ -613,9 +615,9 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", @@ -624,9 +626,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.5" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -653,37 +655,27 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pairing", - "rand_core", + "rand_core 0.6.4", "subtle", ] -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2", - "tinyvec", -] - [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.20.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" +checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" [[package]] name = "byteorder" @@ -693,18 +685,18 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] [[package]] name = "camino" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" dependencies = [ "serde", ] @@ -726,20 +718,37 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.24", + "semver 1.0.26", "serde", "serde_json", "thiserror 1.0.69", ] +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.9.0", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.101", + "tempfile", + "toml", +] + [[package]] name = "cc" -version = "1.2.4" +version = "1.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" dependencies = [ - "jobserver", - "libc", "shlex", ] @@ -766,24 +775,14 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets 0.52.6", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", + "windows-link", ] [[package]] @@ -799,9 +798,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.23" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" dependencies = [ "clap_builder", "clap_derive", @@ -809,9 +808,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" dependencies = [ "anstream", "anstyle", @@ -821,14 +820,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -837,69 +836,17 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" -[[package]] -name = "coins-bip32" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" -dependencies = [ - "bs58", - "coins-core", - "digest 0.10.7", - "hmac", - "k256", - "serde", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-bip39" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-core" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" -dependencies = [ - "base64 0.21.7", - "bech32", - "bs58", - "digest 0.10.7", - "generic-array 0.14.7", - "hex", - "ripemd", - "serde", - "serde_derive", - "sha2", - "sha3", - "thiserror 1.0.69", -] - [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "console" -version = "0.15.10" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", "libc", @@ -910,9 +857,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" dependencies = [ "cfg-if", "cpufeatures", @@ -927,6 +874,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.3.1" @@ -941,9 +908,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -957,13 +924,22 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -991,9 +967,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -1002,7 +978,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1018,38 +994,13 @@ dependencies = [ ] [[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" +name = "ctrlc" +version = "3.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +checksum = "46f93780a459b7d656ef7f071fe699c4d3d2cb201c4b24d085b6ddc505276e73" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", + "nix", + "windows-sys 0.59.0", ] [[package]] @@ -1132,19 +1083,20 @@ dependencies = [ [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -1162,15 +1114,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -1179,7 +1131,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -1190,7 +1151,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "unicode-xid", ] [[package]] @@ -1243,7 +1216,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -1252,6 +1225,20 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand 0.8.5", + "reqwest", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "dunce" version = "1.0.5" @@ -1268,15 +1255,16 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elf" @@ -1293,12 +1281,14 @@ dependencies = [ "base16ct", "crypto-bigint", "digest 0.10.7", - "ff 0.13.0", + "ff 0.13.1", "generic-array 0.14.7", "group 0.13.0", + "pem-rfc7468", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", + "serdect", "subtle", "zeroize", ] @@ -1309,33 +1299,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enr" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" -dependencies = [ - "base64 0.21.7", - "bytes", - "hex", - "k256", - "log", - "rand", - "rlp", - "serde", - "sha3", - "zeroize", -] - [[package]] name = "enum-map" version = "2.7.3" @@ -1354,287 +1317,34 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" dependencies = [ "libc", "windows-sys 0.59.0", ] [[package]] -name = "eth-keystore" -version = "0.5.0" +name = "eventsource-stream" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand", - "scrypt", - "serde", - "serde_json", - "sha2", - "sha3", - "thiserror 1.0.69", - "uuid", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror 1.0.69", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" -dependencies = [ - "ethers-addressbook", - "ethers-contract", - "ethers-core", - "ethers-middleware", - "ethers-providers", - "ethers-signers", -] - -[[package]] -name = "ethers-addressbook" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" -dependencies = [ - "ethers-core", - "once_cell", - "serde", - "serde_json", -] - -[[package]] -name = "ethers-contract" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" -dependencies = [ - "const-hex", - "ethers-contract-abigen", - "ethers-contract-derive", - "ethers-core", - "ethers-providers", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "ethers-contract-abigen" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "eyre", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "serde", - "serde_json", - "syn 2.0.90", - "toml", - "walkdir", -] - -[[package]] -name = "ethers-contract-derive" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" -dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen", - "ethers-core", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.90", -] - -[[package]] -name = "ethers-core" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" -dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "generic-array 0.14.7", - "k256", - "num_enum 0.7.3", - "once_cell", - "open-fastrlp", - "rand", - "rlp", - "serde", - "serde_json", - "strum", - "syn 2.0.90", - "tempfile", - "thiserror 1.0.69", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "ethers-middleware" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" -dependencies = [ - "async-trait", - "auto_impl", - "ethers-contract", - "ethers-core", - "ethers-providers", - "ethers-signers", - "futures-channel", - "futures-locks", - "futures-util", - "instant", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-futures", - "url", -] - -[[package]] -name = "ethers-providers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" -dependencies = [ - "async-trait", - "auto_impl", - "base64 0.21.7", - "bytes", - "const-hex", - "enr", - "ethers-core", - "futures-core", - "futures-timer", - "futures-util", - "hashers", - "http 0.2.12", - "instant", - "jsonwebtoken", - "once_cell", - "pin-project", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-futures", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "ws_stream_wasm", -] - -[[package]] -name = "ethers-signers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" -dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", - "elliptic-curve", - "eth-keystore", - "ethers-core", - "rand", - "sha2", - "thiserror 1.0.69", - "tracing", + "futures-core", + "nom", + "pin-project-lite", ] [[package]] @@ -1682,31 +1392,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ "bitvec", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "bitvec", "byteorder", "ff_derive", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff_derive" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" dependencies = [ "addchain", - "cfg-if", "num-bigint 0.3.3", "num-integer", "num-traits", @@ -1715,12 +1424,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - [[package]] name = "fibonacci-program" version = "0.1.0" @@ -1738,7 +1441,7 @@ dependencies = [ "hex", "serde", "serde_json", - "sp1-build 3.4.0", + "sp1-build 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp1-helper", "sp1-sdk", "tracing", @@ -1751,7 +1454,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -1764,24 +1467,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "form_urlencoded" @@ -1846,16 +1534,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" -[[package]] -name = "futures-locks" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" -dependencies = [ - "futures-channel", - "futures-task", -] - [[package]] name = "futures-macro" version = "0.3.31" @@ -1864,7 +1542,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -1879,16 +1557,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - [[package]] name = "futures-util" version = "0.3.31" @@ -1907,21 +1575,18 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "gcd" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + [[package]] name = "generic-array" version = "0.14.7" @@ -1935,9 +1600,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "1.1.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb8bc4c28d15ade99c7e90b219f30da4be5c88e586277e8cbe886beeb868ab2" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" dependencies = [ "serde", "typenum", @@ -1945,53 +1610,42 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "git2" -version = "0.19.0" +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "bitflags 2.6.0", + "cfg-if", + "js-sys", "libc", - "libgit2-sys", - "log", - "url", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] -name = "glob" -version = "0.3.1" +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "gloo-timers" -version = "0.2.6" +name = "glob" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "group" @@ -2001,7 +1655,7 @@ checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", "memuse", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2011,43 +1665,24 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", - "rand_core", + "ff 0.13.1", + "rand_core 0.6.4", "subtle", ] [[package]] name = "h2" -version = "0.3.26" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.2.0", - "indexmap", + "http", + "indexmap 2.9.0", "slab", "tokio", "tokio-util", @@ -2073,10 +1708,16 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pasta_curves 0.4.1", - "rand_core", + "rand_core 0.6.4", "rayon", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" @@ -2090,23 +1731,21 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "allocator-api2", "equivalent", "foldhash", + "serde", ] [[package]] -name = "hashers" -version = "1.0.1" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" -dependencies = [ - "fxhash", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "heck" @@ -2116,15 +1755,18 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] [[package]] name = "hex-literal" @@ -2143,37 +1785,15 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -2181,27 +1801,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.2.0", + "http", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", + "futures-core", + "http", + "http-body", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -2211,40 +1831,16 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", - "http 1.2.0", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -2256,13 +1852,12 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" dependencies = [ - "futures-util", - "http 1.2.0", - "hyper 1.5.2", + "http", + "hyper", "hyper-util", "rustls", "rustls-pki-types", @@ -2273,46 +1868,35 @@ dependencies = [ ] [[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" +name = "hyper-timeout" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "bytes", - "http-body-util", - "hyper 1.5.2", + "hyper", "hyper-util", - "native-tls", + "pin-project-lite", "tokio", - "tokio-native-tls", "tower-service", ] [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "hyper 1.5.2", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -2322,16 +1906,17 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core", + "windows-core 0.61.2", ] [[package]] @@ -2345,54 +1930,35 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", "tinystr", "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + "zerovec", +] [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -2400,67 +1966,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "idna" version = "1.0.3" @@ -2474,9 +2027,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -2491,24 +2044,6 @@ dependencies = [ "parity-scale-codec", ] -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - [[package]] name = "impl-trait-for-tuples" version = "0.2.3" @@ -2517,7 +2052,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -2528,19 +2063,30 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.7.0" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.3", + "serde", ] [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", "number_prefix", @@ -2549,15 +2095,6 @@ dependencies = [ "web-time", ] -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array 0.14.7", -] - [[package]] name = "instant" version = "0.1.13" @@ -2569,9 +2106,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" @@ -2607,44 +2154,30 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "1.0.14" +name = "itertools" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] [[package]] -name = "jobserver" -version = "0.1.32" +name = "itoa" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" -dependencies = [ - "libc", -] +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", ] -[[package]] -name = "jsonwebtoken" -version = "8.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" -dependencies = [ - "base64 0.21.7", - "pem", - "ring 0.16.20", - "serde", - "serde_json", - "simple_asn1", -] - [[package]] name = "jubjub" version = "0.9.0" @@ -2655,7 +2188,7 @@ dependencies = [ "bls12_381", "ff 0.12.1", "group 0.12.1", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2669,6 +2202,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2", "signature", ] @@ -2698,42 +2232,30 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.9.8", + "spin", ] [[package]] name = "libc" -version = "0.2.168" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" - -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "libm" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" @@ -2741,39 +2263,27 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", - "libc", -] - -[[package]] -name = "libz-sys" -version = "1.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" -dependencies = [ - "cc", + "bitflags", "libc", - "pkg-config", - "vcpkg", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -2781,9 +2291,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "lru" @@ -2791,9 +2301,15 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "matchers" version = "0.1.0" @@ -2835,39 +2351,34 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi", - "windows-sys 0.52.0", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] -name = "native-tls" -version = "0.2.12" +name = "nix" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", ] [[package]] @@ -3013,9 +2524,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -3027,16 +2538,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ - "num_enum_derive 0.5.11", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive 0.7.3", + "num_enum_derive", ] [[package]] @@ -3051,27 +2553,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "number_prefix" version = "0.4.0" @@ -3080,87 +2561,30 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" - -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "openssl" -version = "0.10.68" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] -name = "openssl-macros" -version = "0.1.1" +name = "once_cell_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.104" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "option-ext" @@ -3174,11 +2598,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "p3-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066f571b2e645505ed5972dd0e1e252ba03352150830c9566769ca711c0f1e9b" +checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" dependencies = [ "p3-field", "p3-matrix", @@ -3186,49 +2622,39 @@ dependencies = [ [[package]] name = "p3-baby-bear" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff00f571044d299310d9659c6e51c98422de3bf94b8577f7f30cf59cf2043e40" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" dependencies = [ "num-bigint 0.4.6", "p3-field", "p3-mds", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] -[[package]] -name = "p3-blake3" -version = "0.1.4-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4cb69ae54a279bbbd477566d1bdb71aa879b528fd658d0fcfc36f54b00217c" -dependencies = [ - "blake3", - "p3-symmetric", -] - [[package]] name = "p3-bn254-fr" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf19917f986d45e9abb6d177e875824ced6eed096480d574fce16f2c45c721ea" +checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" dependencies = [ - "ff 0.13.0", + "ff 0.13.1", "num-bigint 0.4.6", "p3-field", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-challenger" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be7e4fbce4566a93091107eadfafa0b5374bd1ffd3e0f6b850da3ff72eb183f" +checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" dependencies = [ "p3-field", "p3-maybe-rayon", @@ -3240,13 +2666,12 @@ dependencies = [ [[package]] name = "p3-commit" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a03eb0f99d68a712c41e658e9a7782a0705d4ffcfb6232a43bd3f1ef9591002" +checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" dependencies = [ "itertools 0.12.1", "p3-challenger", - "p3-dft", "p3-field", "p3-matrix", "p3-util", @@ -3255,9 +2680,9 @@ dependencies = [ [[package]] name = "p3-dft" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1556de968523fbe5d804ab50600ea306fcceea3500cfd7601e40882480524664" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" dependencies = [ "p3-field", "p3-matrix", @@ -3268,23 +2693,23 @@ dependencies = [ [[package]] name = "p3-field" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec2af6e1ac47a2035af5165e668d64612c4b9ccabd06df37fc1fd381fdf8a71" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" dependencies = [ "itertools 0.12.1", "num-bigint 0.4.6", "num-traits", "p3-util", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-fri" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f351ee9f9d4256455164565cd91e3e6d2487cc2a5355515fa2b6d479269188dd" +checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" dependencies = [ "itertools 0.12.1", "p3-challenger", @@ -3301,9 +2726,9 @@ dependencies = [ [[package]] name = "p3-interpolation" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24d0f2907a374ebe4545fcff3120d6376d9630cf0bef30feedcfc5908ea2c37" +checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" dependencies = [ "p3-field", "p3-matrix", @@ -3312,9 +2737,9 @@ dependencies = [ [[package]] name = "p3-keccak-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e66badd47cedf6570e91a0cabc389b80dfd53ba1a6e9a45a3923fd54b86122ff" +checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" dependencies = [ "p3-air", "p3-field", @@ -3326,33 +2751,33 @@ dependencies = [ [[package]] name = "p3-matrix" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa272f3ae77ed8d73478aa7c89e712efb15bda3ff4aff10fadfe11a012cd5389" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" dependencies = [ "itertools 0.12.1", "p3-field", "p3-maybe-rayon", "p3-util", - "rand", + "rand 0.8.5", "serde", "tracing", ] [[package]] name = "p3-maybe-rayon" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eecad6292021858f282d643d9d1284ab112a200494d589863a9c4080e578ef0" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" dependencies = [ "rayon", ] [[package]] name = "p3-mds" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716c4dbe68a02f1541eb09149d07b8663a3a5951b1864a31cd67ff3bb0826e57" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" dependencies = [ "itertools 0.12.1", "p3-dft", @@ -3360,14 +2785,14 @@ dependencies = [ "p3-matrix", "p3-symmetric", "p3-util", - "rand", + "rand 0.8.5", ] [[package]] name = "p3-merkle-tree" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7ebab52a03c26025988663a135aed62f5084a2e2ea262176dc8748efb593e5" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" dependencies = [ "itertools 0.12.1", "p3-commit", @@ -3382,23 +2807,23 @@ dependencies = [ [[package]] name = "p3-poseidon2" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c042efa15beab7a8c4d0ca9b9e4cbda7582be0c08e121e830fec45f082935b" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" dependencies = [ "gcd", "p3-field", "p3-mds", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-symmetric" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9896a831f5b688adc13f6fbe1dcf66ecfaa4622a500f81aa745610e777acb72" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" dependencies = [ "itertools 0.12.1", "p3-field", @@ -3407,9 +2832,9 @@ dependencies = [ [[package]] name = "p3-uni-stark" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437ebcd060c8a5479898030b114a93da8a86eb4c2e5f313d9eeaaf40c6e6f61" +checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" dependencies = [ "itertools 0.12.1", "p3-air", @@ -3426,9 +2851,9 @@ dependencies = [ [[package]] name = "p3-util" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dedb9d27ba47ac314c6fac4ca54e55c3e486c864d51ec5ba55dbe47b75121157" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" dependencies = [ "serde", ] @@ -3444,35 +2869,37 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -3480,9 +2907,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -3501,7 +2928,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -3513,10 +2940,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" dependencies = [ "blake2b_simd", - "ff 0.13.0", + "ff 0.13.1", "group 0.13.0", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -3528,31 +2955,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" +name = "pathdiff" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", -] +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] -name = "pem" -version = "1.1.1" +name = "pem-rfc7468" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ - "base64 0.13.1", + "base64ct", ] [[package]] @@ -3563,50 +2977,40 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" dependencies = [ "memchr", - "thiserror 2.0.7", + "thiserror 2.0.12", "ucd-trie", ] -[[package]] -name = "pharos" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" -dependencies = [ - "futures", - "rustc_version 0.4.1", -] - [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3625,16 +3029,19 @@ dependencies = [ ] [[package]] -name = "pkg-config" -version = "0.3.31" +name = "portable-atomic" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] -name = "portable-atomic" -version = "1.10.0" +name = "potential_utf" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -3644,21 +3051,30 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" dependencies = [ "proc-macro2", - "syn 2.0.90", + "syn 2.0.101", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", ] [[package]] @@ -3669,9 +3085,6 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", "uint", ] @@ -3687,11 +3100,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.22", + "toml_edit 0.22.26", ] [[package]] @@ -3720,26 +3133,26 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.6.0", + "bitflags", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax 0.8.5", "rusty-fork", @@ -3749,9 +3162,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -3759,15 +3172,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -3778,37 +3191,40 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.0", + "rustc-hash 2.1.1", "rustls", "socket2", - "thiserror 2.0.7", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "getrandom", - "rand", - "ring 0.17.8", - "rustc-hash 2.1.0", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", + "ring", + "rustc-hash 2.1.1", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.7", + "thiserror 2.0.12", "tinyvec", "tracing", "web-time", @@ -3816,9 +3232,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.8" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52cd4b1eff68bf27940dd39811292c49e007f4d0b4c357358dc9b0197be6b527" +checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" dependencies = [ "cfg_aliases", "libc", @@ -3830,13 +3246,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -3847,11 +3269,22 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" name = "rand" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ - "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", ] [[package]] @@ -3861,7 +3294,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -3870,7 +3313,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", ] [[package]] @@ -3879,7 +3332,19 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", ] [[package]] @@ -3913,11 +3378,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags 2.6.0", + "bitflags", ] [[package]] @@ -3926,7 +3391,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", "libredox", "thiserror 1.0.69", ] @@ -3977,84 +3442,39 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.9" +version = "0.12.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" dependencies = [ - "base64 0.22.1", + "base64", "bytes", - "encoding_rs", "futures-core", "futures-util", - "h2 0.4.7", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.5.2", + "hyper", "hyper-rustls", - "hyper-tls 0.6.0", "hyper-util", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.2", - "system-configuration 0.6.1", + "sync_wrapper", "tokio", - "tokio-native-tls", "tokio-rustls", "tokio-util", + "tower 0.5.2", + "tower-http", "tower-service", "url", "wasm-bindgen", @@ -4062,7 +3482,6 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots", - "windows-registry", ] [[package]] @@ -4073,8 +3492,8 @@ checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" dependencies = [ "anyhow", "async-trait", - "http 1.2.0", - "reqwest 0.12.9", + "http", + "reqwest", "serde", "thiserror 1.0.69", "tower-service", @@ -4092,43 +3511,18 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - -[[package]] -name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin 0.9.8", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "rlp" version = "0.5.2" @@ -4136,21 +3530,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", - "rlp-derive", "rustc-hex", ] -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "rrs-succinct" version = "0.1.0" @@ -4158,15 +3540,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" dependencies = [ "downcast-rs", - "num_enum 0.5.11", + "num_enum", "paste", ] [[package]] name = "ruint" -version = "1.12.4" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ef8fb1dd8de3870cb8400d51b4c2023854bbafd5431a3ac7e7317243e22d2f" +checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -4180,7 +3562,8 @@ dependencies = [ "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", + "rand 0.9.1", "rlp", "ruint-macro", "serde", @@ -4208,9 +3591,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -4233,16 +3616,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.24", + "semver 1.0.26", ] [[package]] name = "rustix" -version = "0.38.42" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.6.0", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -4251,12 +3634,13 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.20" +version = "0.23.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" dependencies = [ + "log", "once_cell", - "ring 0.17.8", + "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -4264,12 +3648,15 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls-native-certs" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ - "base64 0.21.7", + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", ] [[package]] @@ -4283,29 +3670,30 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", + "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ - "ring 0.17.8", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "rusty-fork" @@ -4321,27 +3709,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "salsa20" -version = "0.10.2" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "scale-info" @@ -4361,17 +3731,17 @@ version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "scc" -version = "2.2.6" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b13f8ea6177672c49d12ed964cca44836f59621981b04a3e26b87e675181de" +checksum = "22b2d775fb28f245817589471dd49c5edf64237f4a19d10ce9a92ff4651a27f4" dependencies = [ "sdd", ] @@ -4391,23 +3761,11 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2", -] - [[package]] name = "sdd" -version = "3.0.5" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478f121bb72bbf63c52c93011ea1791dca40140dfe13f8336c4c5ac952c33aa9" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" [[package]] name = "sec1" @@ -4419,17 +3777,18 @@ dependencies = [ "der", "generic-array 0.14.7", "pkcs8", + "serdect", "subtle", "zeroize", ] [[package]] name = "security-framework" -version = "2.11.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.6.0", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -4438,9 +3797,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -4457,9 +3816,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -4473,43 +3832,31 @@ dependencies = [ "pest", ] -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - [[package]] name = "serde" -version = "1.0.216" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -4519,9 +3866,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -4548,6 +3895,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "serial_test" version = "3.2.0" @@ -4570,14 +3927,14 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -4621,9 +3978,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -4635,19 +3992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", -] - -[[package]] -name = "simple_asn1" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "thiserror 1.0.69", - "time", + "rand_core 0.6.4", ] [[package]] @@ -4667,9 +4012,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "snowbridge-amcl" @@ -4683,9 +4028,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4693,8 +4038,9 @@ dependencies = [ [[package]] name = "sp1-build" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ef25d7c5d6f3a8fb695c57a248abfc7627eaab3a663b89edc3ceafee593cd0" dependencies = [ "anyhow", "cargo_metadata", @@ -4705,43 +4051,48 @@ dependencies = [ [[package]] name = "sp1-build" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e58e5f49cf1481363abb74b55104e215f3b6e58dc2adb748bde7a6e4ea61b51d" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "cargo_metadata", "chrono", "clap", "dirs", + "sp1-prover", ] [[package]] name = "sp1-core-executor" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", "bytemuck", + "clap", "elf", "enum-map", "eyre", "hashbrown 0.14.5", "hex", "itertools 0.13.0", - "log", "nohash-hasher", "num", + "p3-baby-bear", "p3-field", "p3-maybe-rayon", - "rand", + "p3-util", + "rand 0.8.5", + "range-set-blaze", "rrs-succinct", "serde", + "serde_json", "sp1-curves", "sp1-primitives", "sp1-stark", "strum", "strum_macros", + "subenum", "thiserror 1.0.69", "tiny-keccak", "tracing", @@ -4751,32 +4102,40 @@ dependencies = [ [[package]] name = "sp1-core-machine" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "cbindgen", + "cc", "cfg-if", "elliptic-curve", - "generic-array 1.1.1", + "generic-array 1.1.0", + "glob", "hashbrown 0.14.5", "hex", "itertools 0.13.0", "k256", - "log", "num", "num_cpus", + "p256", "p3-air", "p3-baby-bear", - "p3-blake3", "p3-challenger", "p3-field", "p3-keccak-air", "p3-matrix", "p3-maybe-rayon", + "p3-poseidon2", + "p3-symmetric", "p3-uni-stark", "p3-util", - "rand", + "pathdiff", + "rand 0.8.5", + "rayon", + "rayon-scan", "serde", + "serde_json", "size", "snowbridge-amcl", "sp1-core-executor", @@ -4796,19 +4155,35 @@ dependencies = [ "web-time", ] +[[package]] +name = "sp1-cuda" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + [[package]] name = "sp1-curves" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "cfg-if", - "curve25519-dalek", "dashu", "elliptic-curve", - "generic-array 1.1.1", + "generic-array 1.1.0", "itertools 0.13.0", "k256", "num", + "p256", "p3-field", "serde", "snowbridge-amcl", @@ -4819,8 +4194,8 @@ dependencies = [ [[package]] name = "sp1-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -4828,27 +4203,30 @@ dependencies = [ [[package]] name = "sp1-helper" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ - "sp1-build 3.0.0", + "sp1-build 5.0.0 (git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0)", ] [[package]] name = "sp1-lib" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", "serde", + "sp1-primitives", ] [[package]] name = "sp1-primitives" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "blake3", + "cfg-if", "hex", "lazy_static", "num-bigint 0.4.6", @@ -4862,16 +4240,19 @@ dependencies = [ [[package]] name = "sp1-prover" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.1" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", "clap", "dirs", + "downloader", + "enum-map", "eyre", + "hashbrown 0.14.5", + "hex", "itertools 0.13.0", - "lazy_static", "lru", "num-bigint 0.4.6", "p3-baby-bear", @@ -4881,11 +4262,12 @@ dependencies = [ "p3-field", "p3-matrix", "p3-symmetric", + "p3-util", "rayon", - "reqwest 0.11.27", "serde", "serde_json", "serial_test", + "sha2", "sp1-core-executor", "sp1-core-machine", "sp1-primitives", @@ -4894,17 +4276,16 @@ dependencies = [ "sp1-recursion-core", "sp1-recursion-gnark-ffi", "sp1-stark", - "subtle-encoding", - "tempfile", "thiserror 1.0.69", "tracing", + "tracing-appender", "tracing-subscriber", ] [[package]] name = "sp1-recursion-circuit" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", @@ -4919,8 +4300,9 @@ dependencies = [ "p3-fri", "p3-matrix", "p3-symmetric", + "p3-uni-stark", "p3-util", - "rand", + "rand 0.8.5", "rayon", "serde", "sp1-core-executor", @@ -4936,8 +4318,8 @@ dependencies = [ [[package]] name = "sp1-recursion-compiler" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", "itertools 0.13.0", @@ -4957,13 +4339,18 @@ dependencies = [ [[package]] name = "sp1-recursion-core" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", - "ff 0.13.0", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", "hashbrown 0.14.5", "itertools 0.13.0", + "num_cpus", "p3-air", "p3-baby-bear", "p3-bn254-fr", @@ -4978,6 +4365,8 @@ dependencies = [ "p3-poseidon2", "p3-symmetric", "p3-util", + "pathdiff", + "rand 0.8.5", "serde", "sp1-core-machine", "sp1-derive", @@ -4992,8 +4381,8 @@ dependencies = [ [[package]] name = "sp1-recursion-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -5001,8 +4390,8 @@ dependencies = [ [[package]] name = "sp1-recursion-gnark-ffi" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", @@ -5010,7 +4399,6 @@ dependencies = [ "cc", "cfg-if", "hex", - "log", "num-bigint 0.4.6", "p3-baby-bear", "p3-field", @@ -5022,35 +4410,40 @@ dependencies = [ "sp1-recursion-compiler", "sp1-stark", "tempfile", + "tracing", ] [[package]] name = "sp1-sdk" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.2" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ - "alloy-sol-types", + "alloy-primitives 1.2.0", "anyhow", "async-trait", + "backoff", "bincode", "cfg-if", "dirs", - "ethers", + "eventsource-stream", "futures", "hashbrown 0.14.5", "hex", "indicatif", "itertools 0.13.0", - "log", + "k256", "p3-baby-bear", "p3-field", "p3-fri", "prost", - "reqwest 0.12.9", + "reqwest", "reqwest-middleware", "serde", + "serde_json", + "sp1-build 5.0.0 (git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0)", "sp1-core-executor", "sp1-core-machine", + "sp1-cuda", "sp1-primitives", "sp1-prover", "sp1-stark", @@ -5059,20 +4452,20 @@ dependencies = [ "tempfile", "thiserror 1.0.69", "tokio", + "tonic", "tracing", "twirp-rs", - "vergen", ] [[package]] name = "sp1-stark" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "arrayref", - "getrandom", "hashbrown 0.14.5", "itertools 0.13.0", + "num-bigint 0.4.6", "num-traits", "p3-air", "p3-baby-bear", @@ -5095,30 +4488,24 @@ dependencies = [ "strum", "strum_macros", "sysinfo", - "thiserror 1.0.69", "tracing", ] [[package]] name = "sp1-zkvm" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.16", "lazy_static", "libm", - "rand", + "rand 0.8.5", "sha2", "sp1-lib", + "sp1-primitives", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -5168,27 +4555,30 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "subenum" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "4f5d5dfb8556dd04017db5e318bbeac8ab2b0c67b76bf197bfb79e9b29f18ecf" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "subtle-encoding" -version = "0.5.1" +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" -dependencies = [ - "zeroize", -] +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -5203,9 +4593,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -5221,15 +4611,9 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.2" @@ -5241,70 +4625,28 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "sysinfo" -version = "0.30.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" -dependencies = [ - "cfg-if", - "core-foundation-sys", - "libc", - "ntapi", - "once_cell", - "rayon", - "windows", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" dependencies = [ + "cfg-if", "core-foundation-sys", "libc", + "ntapi", + "once_cell", + "rayon", + "windows", ] [[package]] @@ -5315,12 +4657,12 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", "rustix", "windows-sys 0.59.0", @@ -5337,11 +4679,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.7", + "thiserror-impl 2.0.12", ] [[package]] @@ -5352,18 +4694,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "thiserror-impl" -version = "2.0.7" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -5378,15 +4720,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -5395,15 +4735,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -5420,9 +4760,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -5430,9 +4770,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -5445,9 +4785,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", @@ -5463,40 +4803,41 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "tokio-rustls" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "native-tls", + "rustls", "tokio", ] [[package]] -name = "tokio-rustls" -version = "0.26.1" +name = "tokio-stream" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ - "rustls", + "futures-core", + "pin-project-lite", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -5507,21 +4848,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.22", + "toml_edit 0.22.26", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] @@ -5532,22 +4873,82 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.9.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ - "indexmap", + "indexmap 2.9.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.20", + "toml_write", + "winnow 0.7.10", +] + +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs", + "rustls-pemfile", + "socket2", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", ] [[package]] @@ -5559,13 +4960,31 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -5590,6 +5009,18 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" version = "0.1.28" @@ -5598,7 +5029,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -5624,16 +5055,6 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -5678,24 +5099,24 @@ dependencies = [ "async-trait", "axum", "futures", - "http 1.2.0", + "http", "http-body-util", - "hyper 1.5.2", + "hyper", "prost", - "reqwest 0.12.9", + "reqwest", "serde", "serde_json", "thiserror 1.0.69", "tokio", - "tower", + "tower 0.5.2", "url", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" @@ -5723,9 +5144,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" @@ -5739,12 +5160,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -5762,12 +5177,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -5780,27 +5189,11 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] - [[package]] name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vec_map" @@ -5811,19 +5204,6 @@ dependencies = [ "serde", ] -[[package]] -name = "vergen" -version = "8.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" -dependencies = [ - "anyhow", - "cfg-if", - "git2", - "rustversion", - "time", -] - [[package]] name = "version_check" version = "0.9.5" @@ -5832,23 +5212,13 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - [[package]] name = "want" version = "0.3.1" @@ -5864,36 +5234,46 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -5904,9 +5284,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5914,22 +5294,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -5946,9 +5329,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -5966,9 +5349,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" dependencies = [ "rustls-pki-types", ] @@ -5989,15 +5372,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -6010,7 +5384,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core", + "windows-core 0.52.0", "windows-targets 0.52.6", ] @@ -6024,33 +5398,62 @@ dependencies = [ ] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-core" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", "windows-result", "windows-strings", - "windows-targets 0.52.6", ] +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -6104,13 +5507,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6123,6 +5542,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -6135,6 +5560,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -6147,12 +5578,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -6165,6 +5608,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -6177,6 +5626,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -6189,6 +5644,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -6201,6 +5662,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.5.40" @@ -6212,53 +5679,27 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] [[package]] -name = "winreg" -version = "0.50.0" +name = "wit-bindgen-rt" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "bitflags", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - -[[package]] -name = "ws_stream_wasm" -version = "0.7.4" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" -dependencies = [ - "async_io_stream", - "futures", - "js-sys", - "log", - "pharos", - "rustc_version 0.4.1", - "send_wrapper 0.6.0", - "thiserror 1.0.69", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wyz" @@ -6271,9 +5712,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -6283,55 +5724,54 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", "synstructure", ] [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", "synstructure", ] @@ -6352,14 +5792,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", ] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -6368,13 +5819,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.101", ] [[package]] @@ -6397,7 +5848,7 @@ dependencies = [ "jubjub", "lazy_static", "pasta_curves 0.5.1", - "rand", + "rand 0.8.5", "serde", "sha2", "sha3", diff --git a/examples/validating-public-input/sp1/fibonacci/program/Cargo.toml b/examples/validating-public-input/sp1/fibonacci/program/Cargo.toml index 3ef630f607..8afae98c18 100644 --- a/examples/validating-public-input/sp1/fibonacci/program/Cargo.toml +++ b/examples/validating-public-input/sp1/fibonacci/program/Cargo.toml @@ -4,4 +4,4 @@ name = "fibonacci-program" edition = "2021" [dependencies] -sp1-zkvm = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } +sp1-zkvm = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } diff --git a/examples/validating-public-input/sp1/fibonacci/rust-toolchain b/examples/validating-public-input/sp1/fibonacci/rust-toolchain index b3524b5240..9397b95266 100644 --- a/examples/validating-public-input/sp1/fibonacci/rust-toolchain +++ b/examples/validating-public-input/sp1/fibonacci/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "1.79.0" +channel = "stable" components = ["llvm-tools", "rustc-dev"] diff --git a/examples/validating-public-input/sp1/fibonacci/script/Cargo.toml b/examples/validating-public-input/sp1/fibonacci/script/Cargo.toml index dbc34b7f75..d4deda5553 100644 --- a/examples/validating-public-input/sp1/fibonacci/script/Cargo.toml +++ b/examples/validating-public-input/sp1/fibonacci/script/Cargo.toml @@ -9,7 +9,7 @@ name = "fibonacci" path = "src/main.rs" [dependencies] -sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } +sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } serde_json = { version = "1.0", default-features = false, features = ["alloc"] } serde = { version = "1.0", default-features = false, features = ["derive"] } clap = { version = "4.0", features = ["derive", "env"] } @@ -19,5 +19,5 @@ alloy-sol-types = { workspace = true } bincode = "1.3.3" [build-dependencies] -sp1-helper = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } -sp1-build = "3.0.0" +sp1-helper = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } +sp1-build = "5.0.0" diff --git a/examples/validating-public-input/sp1/fibonacci/script/build.rs b/examples/validating-public-input/sp1/fibonacci/script/build.rs index daaa5d8b91..26d66a79de 100644 --- a/examples/validating-public-input/sp1/fibonacci/script/build.rs +++ b/examples/validating-public-input/sp1/fibonacci/script/build.rs @@ -6,8 +6,8 @@ fn main() { let args = BuildArgs { docker: true, - output_directory: "../".to_string(), - elf_name: "./fibonacci/sp1_fibonacci.elf".to_string(), + output_directory: Some("../".to_string()), + elf_name: Some("sp1_fibonacci.elf".to_string()), ..Default::default() }; build_program_with_args("../program", args); diff --git a/examples/validating-public-input/sp1/fibonacci/script/src/main.rs b/examples/validating-public-input/sp1/fibonacci/script/src/main.rs index 6f2200065b..fe30c70b4f 100644 --- a/examples/validating-public-input/sp1/fibonacci/script/src/main.rs +++ b/examples/validating-public-input/sp1/fibonacci/script/src/main.rs @@ -1,4 +1,4 @@ -use sp1_sdk::{ProverClient, SP1Stdin}; +use sp1_sdk::{HashableKey, ProverClient, SP1Stdin}; /// The ELF (executable and linkable format) file for the Succinct RISC-V zkVM. pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../sp1_fibonacci.elf"); @@ -8,7 +8,7 @@ fn main() { sp1_sdk::utils::setup_logger(); // Setup the prover client. - let client = ProverClient::new(); + let client = ProverClient::from_env(); // Setup the inputs. let n = 500; @@ -20,7 +20,7 @@ fn main() { // // Generate the proof let proof = client - .prove(&pk, stdin) + .prove(&pk, &stdin) .compressed() .run() .expect("failed to generate proof"); @@ -30,6 +30,9 @@ fn main() { client.verify(&proof, &vk).expect("failed to verify proof"); println!("Successfully verified proof!"); + // Print ELF + println!("{}", hex::encode(vk.hash_bytes())); + proof .save("../sp1_fibonacci.proof") .expect("failed to save proof"); diff --git a/examples/verify/.env.example b/examples/verify/.env.example index 2992ebcb86..16da74c527 100644 --- a/examples/verify/.env.example +++ b/examples/verify/.env.example @@ -1,3 +1,3 @@ RPC_URL= PRIVATE_KEY= -ALIGNED_DEPLOYMENT_OUTPUT=../../contracts/script/output/holesky/alignedlayer_deployment_output.json # Path to the deployment output file from the aligned layer, relative to verify directory +ALIGNED_DEPLOYMENT_OUTPUT=../../contracts/script/output/hoodi/alignedlayer_deployment_output.json # Path to the deployment output file from the aligned layer, relative to verify directory diff --git a/examples/verify/README.md b/examples/verify/README.md index 886c80d07b..a9b0cb15d7 100644 --- a/examples/verify/README.md +++ b/examples/verify/README.md @@ -20,8 +20,8 @@ First create a `.env` file in the root directory of the project with the followi | Variable | Value | |-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `PRIVATE_KEY` | Your ethereum private key | -| `RPC_URL` | Your ethereum RPC url. You can use public node: https://ethereum-holesky-rpc.publicnode.com | -| `ALIGNED_DEPLOYMENT_OUTPUT` | Path to aligned layer deployment output. This is needed to get service manager address. You can get it from https://github.com/yetanotherco/aligned_layer/blob/main/contracts/script/output/holesky/alignedlayer_deployment_output.json | +| `RPC_URL` | Your ethereum RPC url. You can use public node: https://ethereum-hoodi-rpc.publicnode.com | +| `ALIGNED_DEPLOYMENT_OUTPUT` | Path to aligned layer deployment output. This is needed to get service manager address. You can get it from https://github.com/yetanotherco/aligned_layer/blob/main/contracts/script/output/hoodi/alignedlayer_deployment_output.json | Then, you can deploy the contract by running the following command: @@ -38,22 +38,32 @@ This will output the address of the deployed contract. You will need this addres First encode the ethereum call to the contract using the following command: ```bash -python3 encode_verification_data.py --aligned-verification-data [PATH_TO_ALIGNED_VERIFICATION_DATA] +python3 encode_verification_data.py --aligned-verification-data [PATH_TO_ALIGNED_VERIFICATION_DATA] --sender-address [SENDER_ADDRESS] ``` Replace `[PATH_TO_ALIGNED_VERIFICATION_DATA]` with the path to the json file containing the verification data. This is the output when submitting a proof from the aligned cli. +Replace `[SENDER_ADDRESS]` with the address of the `BatcherPaymentService` contract. + This will output the encoded call. You can then use this encoded call to check your submitted proof with the associated data is verified in Ethereum by running the following command: ```bash -curl -H "Content-Type: application/json" \ - --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to": "", "data": ""}]}' \ - -X POST +curl -X POST \ +-H "Content-Type: application/json" \ +-d '{ + "jsonrpc": "2.0", + "method": "eth_call", + "params": [{ + "to": "", + "data": "" + }], + "id": 1 +}' ``` -Replace `` with the address of the contract you deployed earlier (or `0x58F280BeBE9B34c9939C3C39e0890C81f163B623` for Aligned ServiceManager in Holesky), `` with the encoded call, -and `` with the RPC URL of the blockchain you are using. +Replace `` with the address of the contract you deployed earlier (or `0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c` for Aligned ServiceManager in Hoodi), `` with the encoded call, +and `` with the RPC URL of the blockchain you are using (`https://ethereum-hoodi-rpc.publicnode.com` for Hoodi). The output data should be something like this: @@ -61,7 +71,7 @@ The output data should be something like this: { "jsonrpc":"2.0", "result":"0x0000000000000000000000000000000000000000000000000000000000000001", - "id":null + "id":1 } ``` @@ -78,13 +88,17 @@ Note that if result ends in 1 it means that your submitted proof with the associ Then, you can run the script by running the following command: ```bash -python3 verify.py --contract-address [CONTRACT_ADDRESS] --aligned-verification-data [PATH_TO_ALIGNED_VERIFICATION_DATA] +python3 verify.py --contract-address [CONTRACT_ADDRESS] --aligned-verification-data [PATH_TO_ALIGNED_VERIFICATION_DATA] --sender-address [SENDER_ADDRESS] ``` -Replace `[CONTRACT_ADDRESS]`, and `[PATH_TO_ALIGNED_VERIFICATION_DATA]` with your actual values. +Replace `[CONTRACT_ADDRESS]`, `[PATH_TO_ALIGNED_VERIFICATION_DATA]` and `[SENDER_ADDRESS]` with your actual values. #### Example Command ```bash -python3 verify.py --contract-address 0x623926229DD27c45AE40B4e16ba4CD6522fC4d22 --aligned-verification-data ../../aligned_verification_data/7553cb14bff387c06e016cb3e7946e91d9fe44a54ad5d888ce8343ddb16116a7_118.json +python3 verify.py --contract-address 0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c --aligned-verification-data ../../aligned_verification_data/b8c17406_4.json --sender-address 0x041af25Fce2413570aaa0029D36DeA1eFdeff083 ``` + +In this case, `--contract-address` is the address of the `AlignedLayerServiceManager` and `--sender-address` is the address of the `BatcherPaymentService` in Hoodi Testnet. + +You need to replace the `--aligned-verification-data` with the path to the JSON file containing the verification data. This is the output when submitting a proof. diff --git a/examples/verify/encode_verification_data.py b/examples/verify/encode_verification_data.py index 6d8ebf3191..b752ce690d 100644 --- a/examples/verify/encode_verification_data.py +++ b/examples/verify/encode_verification_data.py @@ -4,40 +4,34 @@ from Crypto.Hash import keccak -def encode_call(file): +def encode_call(file, sender_address): with open(file) as f: data = load(f) - verification_data_commitment = data['verification_data_commitment'] - proof_commitment = bytearray(verification_data_commitment['proof_commitment']) - pub_input_commitment = bytearray(verification_data_commitment['pub_input_commitment']) - proving_system_aux_data_commitment = bytearray( - verification_data_commitment['proving_system_aux_data_commitment']) - proof_generator_addr = bytearray(verification_data_commitment['proof_generator_addr']) - batch_merkle_root = bytearray(data['batch_merkle_root']) + proof_commitment = bytearray.fromhex(data['proof_commitment']) + pub_input_commitment = bytearray.fromhex(data['pub_input_commitment']) + proving_system_aux_data_commitment = bytearray.fromhex(data['program_id_commitment']) + proof_generator_addr = bytearray.fromhex(data['proof_generator_addr']) + batch_merkle_root = bytearray.fromhex(data['batch_merkle_root']) + merkle_proof = bytearray.fromhex(data['merkle_proof']) + verification_data_batch_index = data['verification_data_batch_index'] - merkle_path_arr = data['batch_inclusion_proof']['merkle_path'] - merkle_proof = bytearray() - for i in range(0, len(merkle_path_arr)): - merkle_proof += bytearray(merkle_path_arr[i]) - - index = data['index_in_batch'] - - output = encode(['bytes32', 'bytes32', 'bytes32', 'bytes20', 'bytes32', 'bytes', 'uint256'], + output = encode(['bytes32', 'bytes32', 'bytes32', 'bytes20', 'bytes32', 'bytes', 'uint256', 'address'], [proof_commitment, pub_input_commitment, proving_system_aux_data_commitment, - proof_generator_addr, batch_merkle_root, merkle_proof, index]) + proof_generator_addr, batch_merkle_root, merkle_proof, verification_data_batch_index, + sender_address]) k = keccak.new(digest_bits=256) - k.update(b'verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256)') + k.update(b'verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256,address)') signature = k.hexdigest()[:8] - return '0x' + signature + output.hex() if __name__ == "__main__": parser = ArgumentParser() parser.add_argument('--aligned-verification-data', help='Path to JSON file with the verification data') + parser.add_argument('--sender-address', help='Address that sent the batch to Aligned') args = parser.parse_args() - data = encode_call(args.aligned_verification_data) + data = encode_call(args.aligned_verification_data, args.sender_address) print(data) diff --git a/examples/verify/script/VerifyBatchInclusionCallerDeployer.s.sol b/examples/verify/script/VerifyBatchInclusionCallerDeployer.s.sol index 2fa230bbb7..c5be8782fb 100644 --- a/examples/verify/script/VerifyBatchInclusionCallerDeployer.s.sol +++ b/examples/verify/script/VerifyBatchInclusionCallerDeployer.s.sol @@ -1,4 +1,4 @@ -pragma solidity =0.8.12; +pragma solidity ^0.8.12; import {Script} from "forge-std/Script.sol"; import {VerifyBatchInclusionCaller} from "../src/VerifyBatchInclusionCaller.sol"; diff --git a/examples/verify/src/VerifyBatchInclusionCaller.sol b/examples/verify/src/VerifyBatchInclusionCaller.sol index 7c47a45a72..a4f1dd7ca6 100644 --- a/examples/verify/src/VerifyBatchInclusionCaller.sol +++ b/examples/verify/src/VerifyBatchInclusionCaller.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity =0.8.12; +pragma solidity ^0.8.12; contract VerifyBatchInclusionCaller { address public targetContract; @@ -15,18 +15,20 @@ contract VerifyBatchInclusionCaller { bytes20 proofGeneratorAddr, bytes32 batchMerkleRoot, bytes memory merkleProof, - uint256 verificationDataBatchIndex + uint256 verificationDataBatchIndex, + address senderAddress ) external view returns (bool) { (bool callWasSuccessfull, bytes memory proofIsIncluded) = targetContract.staticcall( abi.encodeWithSignature( - "verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256)", + "verifyBatchInclusion(bytes32,bytes32,bytes32,bytes20,bytes32,bytes,uint256,address)", proofCommitment, pubInputCommitment, provingSystemAuxDataCommitment, proofGeneratorAddr, batchMerkleRoot, merkleProof, - verificationDataBatchIndex + verificationDataBatchIndex, + senderAddress ) ); diff --git a/examples/verify/verify.py b/examples/verify/verify.py index b46c32f61b..4af8ef215e 100644 --- a/examples/verify/verify.py +++ b/examples/verify/verify.py @@ -5,17 +5,18 @@ def main(): parser = ArgumentParser() - parser.add_argument('--rpc-url', default='https://ethereum-holesky-rpc.publicnode.com', - help='RPC URL (default: https://ethereum-holesky-rpc.publicnode.com)') + parser.add_argument('--rpc-url', default='https://ethereum-hoodi-rpc.publicnode.com', + help='RPC URL (default: https://ethereum-hoodi-rpc.publicnode.com)') parser.add_argument('--aligned-verification-data', help='Path to JSON file with the verification data', required=True) parser.add_argument('--contract-address', help='Verifier Contract address', required=True) + parser.add_argument('--sender-address', help='Address that sent the batch to Aligned') args = parser.parse_args() provider = Web3(Web3.HTTPProvider(args.rpc_url)) - data = encode_call(args.aligned_verification_data) + data = encode_call(args.aligned_verification_data, args.sender_address) result = provider.eth.call({ 'to': args.contract_address, diff --git a/examples/zkquiz/Makefile b/examples/zkquiz/Makefile index bbf60dc0cc..c55a453cba 100644 --- a/examples/zkquiz/Makefile +++ b/examples/zkquiz/Makefile @@ -6,14 +6,15 @@ deploy_verifier: deploy_verifier_devnet: . ./contracts/.devnet.env && . ./contracts/deploy.sh -CONTRACT_ADDRESS=0x1adFb00CC74Ff26bB05419953006c66B1abFCD45 +CONTRACT_ADDRESS=0xAD607c7DA33BDD310307E57830bf426b16f32AD1 STAGE_CONTRACT_ADDRESS=0xc4da6fcfa317eaf166b09ef276c0bdf43648a65f -RPC_URL=https://ethereum-holesky-rpc.publicnode.com +RPC_URL=https://ethereum-hoodi-rpc.publicnode.com answer_quiz: @cd quiz/script && cargo run -r -- \ --keystore-path $(KEYSTORE_PATH) \ --rpc-url $(RPC_URL) \ + --network hoodi \ --verifier-contract-address $(CONTRACT_ADDRESS) answer_quiz_stage: @@ -27,7 +28,6 @@ answer_quiz_local: @cd quiz/script && cargo run -r -- \ --keystore-path ../../../../config-files/devnet/keys/operator-3.ecdsa.key.json \ --rpc-url http://localhost:8545 \ - --batcher-url ws://localhost:8080 \ --network devnet \ --verifier-contract-address $(CONTRACT_ADDRESS) diff --git a/examples/zkquiz/contracts/.env.example b/examples/zkquiz/contracts/.env.example index 0e0482ae60..51d919671b 100644 --- a/examples/zkquiz/contracts/.env.example +++ b/examples/zkquiz/contracts/.env.example @@ -1,5 +1,5 @@ RPC_URL= PRIVATE_KEY= -ALIGNED_SERVICE_MANAGER_ADDRESS=# 0x58F280BeBE9B34c9939C3C39e0890C81f163B623 for Holesky -BATCHER_PAYMENT_SERVICE_ADDRESS=# 0x815aeCA64a974297942D2Bbf034ABEe22a38A003 +ALIGNED_SERVICE_MANAGER_ADDRESS=# 0x87CD431F160e88EC34fA48EC6F6cF7F2C0E8248c for Hoodi +BATCHER_PAYMENT_SERVICE_ADDRESS=# 0x041af25Fce2413570aaa0029D36DeA1eFdeff083 ETHERSCAN_API_KEY= diff --git a/examples/zkquiz/contracts/deploy.sh b/examples/zkquiz/contracts/deploy.sh index 8ae0ff5d6e..8780fd3b09 100755 --- a/examples/zkquiz/contracts/deploy.sh +++ b/examples/zkquiz/contracts/deploy.sh @@ -33,6 +33,5 @@ forge script script/Deployer.s.sol \ --rpc-url "$RPC_URL" \ --private-key "$PRIVATE_KEY" \ --broadcast \ - --verify \ - --etherscan-api-key $ETHERSCAN_API_KEY \ + ${ETHERSCAN_API_KEY:+--verify --etherscan-api-key "$ETHERSCAN_API_KEY"} \ --sig "run(address _alignedServiceManager, address _paymentService)" diff --git a/examples/zkquiz/quiz/program/Cargo.lock b/examples/zkquiz/quiz/program/Cargo.lock index cb370ebc0b..a83ca86650 100644 --- a/examples/zkquiz/quiz/program/Cargo.lock +++ b/examples/zkquiz/quiz/program/Cargo.lock @@ -1,6 +1,24 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "bincode" @@ -11,6 +29,19 @@ dependencies = [ "serde", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -26,12 +57,27 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "cc" +version = "1.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" +dependencies = [ + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "cpufeatures" version = "0.2.14" @@ -67,6 +113,18 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + [[package]] name = "generic-array" version = "0.14.7" @@ -88,6 +146,21 @@ dependencies = [ "wasi", ] +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -106,6 +179,158 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools", + "num-bigint", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools", + "p3-field", + "serde", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -202,19 +427,45 @@ dependencies = [ "digest", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "sp1-lib" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "serde", + "sp1-primitives", +] + +[[package]] +name = "sp1-primitives" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", "serde", + "sha2", ] [[package]] name = "sp1-zkvm" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "cfg-if", "getrandom", @@ -223,6 +474,7 @@ dependencies = [ "rand", "sha2", "sp1-lib", + "sp1-primitives", ] [[package]] @@ -245,6 +497,37 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + [[package]] name = "typenum" version = "1.17.0" diff --git a/examples/zkquiz/quiz/program/Cargo.toml b/examples/zkquiz/quiz/program/Cargo.toml index a240fc3167..119fbf6144 100644 --- a/examples/zkquiz/quiz/program/Cargo.toml +++ b/examples/zkquiz/quiz/program/Cargo.toml @@ -5,7 +5,7 @@ name = "quiz-program" edition = "2021" [dependencies] -sp1-zkvm = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } +sp1-zkvm = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } tiny-keccak = { git = "https://github.com/sp1-patches/tiny-keccak", branch = "patch-v2.0.2", features = [ "sha3", ] } diff --git a/examples/zkquiz/quiz/script/Cargo.lock b/examples/zkquiz/quiz/script/Cargo.lock index f62da135f1..feb2a4a24a 100644 --- a/examples/zkquiz/quiz/script/Cargo.lock +++ b/examples/zkquiz/quiz/script/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -58,7 +58,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -81,7 +81,9 @@ dependencies = [ "hex", "lambdaworks-crypto", "log", + "reqwest 0.12.15", "serde", + "serde_bytes", "serde_json", "serde_repr", "sha3", @@ -92,101 +94,31 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-primitives" -version = "0.7.7" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +checksum = "a326d47106039f38b811057215a92139f46eef7983a4b77b10930a0ea5685b1e" dependencies = [ - "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more 0.99.18", - "hex-literal", + "derive_more 2.0.1", + "hashbrown 0.15.2", + "indexmap 2.9.0", "itoa", "k256", - "keccak-asm", - "proptest", - "rand", + "paste", + "rand 0.9.0", "ruint", "serde", "tiny-keccak", ] -[[package]] -name = "alloy-rlp" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" -dependencies = [ - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-sol-macro" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.85", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.85", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" -dependencies = [ - "const-hex", - "dunce", - "heck", - "proc-macro2", - "quote", - "syn 2.0.85", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-types" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" -dependencies = [ - "alloy-primitives", - "alloy-sol-macro", - "const-hex", - "serde", -] - [[package]] name = "android-tzdata" version = "0.1.1" @@ -213,9 +145,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.17" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -228,9 +160,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" @@ -252,37 +184,20 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" - -[[package]] -name = "ark-ff" -version = "0.3.0" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "ark-ff" @@ -290,30 +205,20 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", "derivative", - "digest 0.10.7", + "digest", "itertools 0.10.5", "num-bigint 0.4.6", "num-traits", "paste", - "rustc_version 0.4.1", + "rustc_version", "zeroize", ] -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -324,18 +229,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -349,37 +242,17 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - [[package]] name = "ark-serialize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", + "ark-std", + "digest", "num-bigint 0.4.6", ] -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - [[package]] name = "ark-std" version = "0.4.0" @@ -387,7 +260,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -411,15 +284,37 @@ dependencies = [ "term", ] +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -430,7 +325,7 @@ checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" dependencies = [ "futures", "pharos", - "rustc_version 0.4.1", + "rustc_version", ] [[package]] @@ -441,13 +336,13 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -458,18 +353,18 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.7" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", "bytes", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.5.0", + "hyper 1.6.0", "hyper-util", "itoa", "matchit", @@ -482,9 +377,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", - "tower", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -499,18 +394,32 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.15", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", +] + [[package]] name = "backtrace" version = "0.3.74" @@ -553,9 +462,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" [[package]] name = "bech32" @@ -578,7 +487,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -589,7 +498,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -615,9 +524,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "bitvec" @@ -637,14 +546,14 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest 0.10.7", + "digest", ] [[package]] name = "blake2b_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", @@ -653,9 +562,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -682,7 +591,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pairing", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -698,21 +607,21 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -722,9 +631,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -741,12 +650,11 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -761,9 +669,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -776,17 +684,36 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.9.0", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.100", + "tempfile", + "toml", ] [[package]] name = "cc" -version = "1.1.31" +version = "1.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "525046617d8376e3db1deffb079e91cef90a89fc3ca5c185bbf8c9ecdd15cd5c" dependencies = [ "jobserver", "libc", @@ -808,16 +735,22 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -870,9 +803,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" dependencies = [ "clap_builder", "clap_derive", @@ -880,9 +813,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" dependencies = [ "anstream", "anstyle", @@ -892,21 +825,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coins-bip32" @@ -916,12 +849,12 @@ checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" dependencies = [ "bs58", "coins-core", - "digest 0.10.7", + "digest", "hmac", "k256", "serde", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -935,9 +868,9 @@ dependencies = [ "hmac", "once_cell", "pbkdf2 0.12.2", - "rand", + "rand 0.8.5", "sha2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -949,7 +882,7 @@ dependencies = [ "base64 0.21.7", "bech32", "bs58", - "digest 0.10.7", + "digest", "generic-array 0.14.7", "hex", "ripemd", @@ -957,7 +890,7 @@ dependencies = [ "serde_derive", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -968,22 +901,22 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", "unicode-width", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "const-hex" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -998,6 +931,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -1011,16 +964,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] -name = "convert_case" -version = "0.4.0" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] [[package]] name = "core-foundation" -version = "0.9.4" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" dependencies = [ "core-foundation-sys", "libc", @@ -1034,9 +991,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1050,11 +1007,20 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-channel" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1071,15 +1037,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -1088,7 +1054,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1113,29 +1079,13 @@ dependencies = [ ] [[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" +name = "ctrlc" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.85", + "nix", + "windows-sys 0.59.0", ] [[package]] @@ -1218,9 +1168,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" [[package]] name = "der" @@ -1229,14 +1179,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -1254,24 +1205,20 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.85", + "derive_more-impl 1.0.0", ] [[package]] name = "derive_more" -version = "1.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" dependencies = [ - "derive_more-impl", + "derive_more-impl 2.0.1", ] [[package]] @@ -1282,7 +1229,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "unicode-xid", ] [[package]] @@ -1294,19 +1253,10 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array 0.14.7", -] - [[package]] name = "digest" version = "0.10.7" @@ -1361,12 +1311,37 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "downcast-rs" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest", + "futures", + "rand 0.8.5", + "reqwest 0.12.15", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "dunce" version = "1.0.5" @@ -1380,18 +1355,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest 0.10.7", + "digest", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elf" @@ -1407,13 +1383,15 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest 0.10.7", - "ff 0.13.0", + "digest", + "ff 0.13.1", "generic-array 0.14.7", "group 0.13.0", + "pem-rfc7468", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", + "serdect", "subtle", "zeroize", ] @@ -1429,9 +1407,9 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" @@ -1453,7 +1431,7 @@ dependencies = [ "hex", "k256", "log", - "rand", + "rand 0.8.5", "rlp", "serde", "sha3", @@ -1478,23 +1456,23 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1505,17 +1483,17 @@ checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ "aes", "ctr", - "digest 0.10.7", + "digest", "hex", "hmac", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", "sha2", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid", ] @@ -1532,7 +1510,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -1611,7 +1589,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1633,7 +1611,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.85", + "syn 2.0.100", "toml", "walkdir", ] @@ -1651,7 +1629,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -1672,14 +1650,14 @@ dependencies = [ "num_enum 0.7.3", "once_cell", "open-fastrlp", - "rand", + "rand 0.8.5", "rlp", "serde", "serde_json", "strum", - "syn 2.0.85", + "syn 2.0.100", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -1693,10 +1671,10 @@ dependencies = [ "chrono", "ethers-core", "reqwest 0.11.27", - "semver 1.0.23", + "semver", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1720,7 +1698,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -1753,7 +1731,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite 0.20.1", "tracing", @@ -1778,9 +1756,9 @@ dependencies = [ "elliptic-curve", "eth-keystore", "ethers-core", - "rand", + "rand 0.8.5", "sha2", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1803,12 +1781,12 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.23", + "semver", "serde", "serde_json", "solang-parser", "svm-rs", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "tokio", "tracing", @@ -1816,6 +1794,17 @@ dependencies = [ "yansi", ] +[[package]] +name = "eventsource-stream" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" +dependencies = [ + "futures-core", + "nom", + "pin-project-lite", +] + [[package]] name = "eyre" version = "0.6.12" @@ -1828,20 +1817,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" - -[[package]] -name = "fastrlp" -version = "0.3.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" @@ -1850,31 +1828,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ "bitvec", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "bitvec", "byteorder", "ff_derive", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff_derive" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" dependencies = [ "addchain", - "cfg-if", "num-bigint 0.3.3", "num-integer", "num-traits", @@ -1883,12 +1860,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - [[package]] name = "fixed-hash" version = "0.8.0" @@ -1896,7 +1867,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -1909,9 +1880,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", "miniz_oxide", @@ -1925,9 +1896,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -2035,7 +2006,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -2093,6 +2064,12 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + [[package]] name = "generic-array" version = "0.14.7" @@ -2121,34 +2098,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "git2" -version = "0.19.0" +name = "getrandom" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ - "bitflags 2.6.0", + "cfg-if", + "js-sys", "libc", - "libgit2-sys", - "log", - "url", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "gloo-timers" @@ -2170,7 +2150,7 @@ checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", "memuse", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2180,8 +2160,8 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", - "rand_core", + "ff 0.13.1", + "rand_core 0.6.4", "subtle", ] @@ -2197,7 +2177,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap", + "indexmap 2.9.0", "slab", "tokio", "tokio-util", @@ -2206,17 +2186,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap", + "http 1.3.1", + "indexmap 2.9.0", "slab", "tokio", "tokio-util", @@ -2225,9 +2205,9 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", @@ -2252,10 +2232,16 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pasta_curves 0.4.1", - "rand_core", + "rand_core 0.6.4", "rayon", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" @@ -2269,13 +2255,14 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "allocator-api2", "equivalent", "foldhash", + "serde", ] [[package]] @@ -2287,6 +2274,12 @@ dependencies = [ "fxhash", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -2304,12 +2297,9 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +dependencies = [ + "serde", +] [[package]] name = "hmac" @@ -2317,16 +2307,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.7", + "digest", ] [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2342,9 +2332,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -2369,27 +2359,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -2399,9 +2389,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -2423,15 +2413,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", - "http 1.1.0", + "h2 0.4.8", + "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", @@ -2450,7 +2440,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.32", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -2458,33 +2448,33 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.5.0", + "http 1.3.1", + "hyper 1.6.0", "hyper-util", - "rustls 0.23.15", + "rustls 0.23.25", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.2", "tower-service", - "webpki-roots 0.26.6", + "webpki-roots 0.26.8", ] [[package]] -name = "hyper-tls" -version = "0.5.0" +name = "hyper-timeout" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "bytes", - "hyper 0.14.31", - "native-tls", + "hyper 1.6.0", + "hyper-util", + "pin-project-lite", "tokio", - "tokio-native-tls", + "tower-service", ] [[package]] @@ -2495,7 +2485,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.0", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -2505,16 +2495,17 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", - "hyper 1.5.0", + "hyper 1.6.0", + "libc", "pin-project-lite", "socket2", "tokio", @@ -2524,16 +2515,17 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core", + "windows-core 0.61.0", ] [[package]] @@ -2545,14 +2537,143 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -2584,13 +2705,13 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] @@ -2601,32 +2722,43 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.6.0" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.2", + "serde", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "unicode-width", + "web-time", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array 0.14.7", ] @@ -2642,9 +2774,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -2688,27 +2820,38 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.2", "libc", ] [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2736,7 +2879,7 @@ dependencies = [ "bls12_381", "ff 0.12.1", "group 0.12.1", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2750,6 +2893,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2", "signature", ] @@ -2763,16 +2907,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "keccak-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - [[package]] name = "lalrpop" version = "0.20.2" @@ -2800,15 +2934,17 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata 0.4.8", + "regex-automata 0.4.9", ] [[package]] name = "lambdaworks-crypto" -version = "0.10.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa95d94bba7de86cb96611b40d3#efd46f0b0aea3aa95d94bba7de86cb96611b40d3" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" dependencies = [ "lambdaworks-math", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "sha2", "sha3", @@ -2816,9 +2952,11 @@ dependencies = [ [[package]] name = "lambdaworks-math" -version = "0.10.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa95d94bba7de86cb96611b40d3#efd46f0b0aea3aa95d94bba7de86cb96611b40d3" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" dependencies = [ + "getrandom 0.2.15", + "rand 0.8.5", "serde", "serde_json", ] @@ -2834,27 +2972,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.161" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" - -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -2862,9 +2988,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" @@ -2872,27 +2998,21 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "libc", ] [[package]] -name = "libz-sys" -version = "1.1.20" +name = "linux-raw-sys" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] +checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" [[package]] -name = "linux-raw-sys" -version = "0.4.14" +name = "litemap" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" @@ -2906,9 +3026,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "lru" @@ -2916,7 +3036,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.0", + "hashbrown 0.15.2", ] [[package]] @@ -2941,7 +3061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if", - "digest 0.10.7", + "digest", ] [[package]] @@ -2952,9 +3072,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memuse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2145869435ace5ea6ea3d35f59be559317ec9a0d04e1812d5f185a87b6d36f1a" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" [[package]] name = "mime" @@ -2970,30 +3090,29 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -3001,7 +3120,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -3012,6 +3131,18 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "nohash-hasher" version = "0.2.0" @@ -3199,19 +3330,10 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.85", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", + "syn 2.0.100", ] [[package]] @@ -3222,18 +3344,18 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "open-fastrlp" @@ -3262,11 +3384,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -3283,20 +3405,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" dependencies = [ "cc", "libc", @@ -3316,11 +3438,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "p3-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066f571b2e645505ed5972dd0e1e252ba03352150830c9566769ca711c0f1e9b" +checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" dependencies = [ "p3-field", "p3-matrix", @@ -3328,49 +3462,39 @@ dependencies = [ [[package]] name = "p3-baby-bear" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff00f571044d299310d9659c6e51c98422de3bf94b8577f7f30cf59cf2043e40" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" dependencies = [ "num-bigint 0.4.6", "p3-field", "p3-mds", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] -[[package]] -name = "p3-blake3" -version = "0.1.4-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4cb69ae54a279bbbd477566d1bdb71aa879b528fd658d0fcfc36f54b00217c" -dependencies = [ - "blake3", - "p3-symmetric", -] - [[package]] name = "p3-bn254-fr" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf19917f986d45e9abb6d177e875824ced6eed096480d574fce16f2c45c721ea" +checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" dependencies = [ - "ff 0.13.0", + "ff 0.13.1", "num-bigint 0.4.6", "p3-field", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-challenger" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be7e4fbce4566a93091107eadfafa0b5374bd1ffd3e0f6b850da3ff72eb183f" +checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" dependencies = [ "p3-field", "p3-maybe-rayon", @@ -3382,13 +3506,12 @@ dependencies = [ [[package]] name = "p3-commit" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a03eb0f99d68a712c41e658e9a7782a0705d4ffcfb6232a43bd3f1ef9591002" +checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" dependencies = [ "itertools 0.12.1", "p3-challenger", - "p3-dft", "p3-field", "p3-matrix", "p3-util", @@ -3397,9 +3520,9 @@ dependencies = [ [[package]] name = "p3-dft" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1556de968523fbe5d804ab50600ea306fcceea3500cfd7601e40882480524664" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" dependencies = [ "p3-field", "p3-matrix", @@ -3410,23 +3533,23 @@ dependencies = [ [[package]] name = "p3-field" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec2af6e1ac47a2035af5165e668d64612c4b9ccabd06df37fc1fd381fdf8a71" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" dependencies = [ "itertools 0.12.1", "num-bigint 0.4.6", "num-traits", "p3-util", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-fri" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f351ee9f9d4256455164565cd91e3e6d2487cc2a5355515fa2b6d479269188dd" +checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" dependencies = [ "itertools 0.12.1", "p3-challenger", @@ -3443,9 +3566,9 @@ dependencies = [ [[package]] name = "p3-interpolation" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24d0f2907a374ebe4545fcff3120d6376d9630cf0bef30feedcfc5908ea2c37" +checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" dependencies = [ "p3-field", "p3-matrix", @@ -3454,9 +3577,9 @@ dependencies = [ [[package]] name = "p3-keccak-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e66badd47cedf6570e91a0cabc389b80dfd53ba1a6e9a45a3923fd54b86122ff" +checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" dependencies = [ "p3-air", "p3-field", @@ -3468,33 +3591,33 @@ dependencies = [ [[package]] name = "p3-matrix" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa272f3ae77ed8d73478aa7c89e712efb15bda3ff4aff10fadfe11a012cd5389" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" dependencies = [ "itertools 0.12.1", "p3-field", "p3-maybe-rayon", "p3-util", - "rand", + "rand 0.8.5", "serde", "tracing", ] [[package]] name = "p3-maybe-rayon" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eecad6292021858f282d643d9d1284ab112a200494d589863a9c4080e578ef0" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" dependencies = [ "rayon", ] [[package]] name = "p3-mds" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716c4dbe68a02f1541eb09149d07b8663a3a5951b1864a31cd67ff3bb0826e57" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" dependencies = [ "itertools 0.12.1", "p3-dft", @@ -3502,14 +3625,14 @@ dependencies = [ "p3-matrix", "p3-symmetric", "p3-util", - "rand", + "rand 0.8.5", ] [[package]] name = "p3-merkle-tree" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7ebab52a03c26025988663a135aed62f5084a2e2ea262176dc8748efb593e5" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" dependencies = [ "itertools 0.12.1", "p3-commit", @@ -3524,23 +3647,23 @@ dependencies = [ [[package]] name = "p3-poseidon2" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c042efa15beab7a8c4d0ca9b9e4cbda7582be0c08e121e830fec45f082935b" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" dependencies = [ "gcd", "p3-field", "p3-mds", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-symmetric" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9896a831f5b688adc13f6fbe1dcf66ecfaa4622a500f81aa745610e777acb72" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" dependencies = [ "itertools 0.12.1", "p3-field", @@ -3549,9 +3672,9 @@ dependencies = [ [[package]] name = "p3-uni-stark" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437ebcd060c8a5479898030b114a93da8a86eb4c2e5f313d9eeaaf40c6e6f61" +checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" dependencies = [ "itertools 0.12.1", "p3-air", @@ -3568,9 +3691,9 @@ dependencies = [ [[package]] name = "p3-util" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dedb9d27ba47ac314c6fac4ca54e55c3e486c864d51ec5ba55dbe47b75121157" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" dependencies = [ "serde", ] @@ -3586,28 +3709,30 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] @@ -3640,7 +3765,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -3654,7 +3779,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -3666,10 +3791,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" dependencies = [ "blake2b_simd", - "ff 0.13.0", + "ff 0.13.1", "group 0.13.0", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -3686,13 +3811,19 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pbkdf2" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest 0.10.7", + "digest", "hmac", "password-hash", "sha2", @@ -3704,7 +3835,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest 0.10.7", + "digest", "hmac", ] @@ -3718,22 +3849,20 @@ dependencies = [ ] [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "pem-rfc7468" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pest" -version = "2.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ - "memchr", - "thiserror", - "ucd-trie", + "base64ct", ] +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + [[package]] name = "petgraph" version = "0.6.5" @@ -3741,7 +3870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 2.9.0", ] [[package]] @@ -3751,85 +3880,76 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" dependencies = [ "futures", - "rustc_version 0.4.1", + "rustc_version", ] [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", - "rand", + "phf_shared", + "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared 0.11.2", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.85", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", + "syn 2.0.100", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3849,15 +3969,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] name = "powerfmt" @@ -3867,11 +3987,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.24", ] [[package]] @@ -3882,12 +4002,21 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn 2.0.85", + "syn 2.0.100", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", ] [[package]] @@ -3916,71 +4045,43 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit 0.22.22", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit 0.22.24", ] [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", + "bitflags 2.9.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax 0.8.5", - "rusty-fork", - "tempfile", "unarray", ] [[package]] name = "prost" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -3988,64 +4089,64 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", - "rustls 0.23.15", + "rustc-hash 2.1.1", + "rustls 0.23.25", "socket2", - "thiserror", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "b820744eb4dc9b57a3398183639c511b5a26d2ed702cedd3febaa1393caa22cc" dependencies = [ "bytes", - "rand", - "ring 0.17.8", - "rustc-hash 2.0.0", - "rustls 0.23.15", + "getrandom 0.3.2", + "rand 0.9.0", + "ring 0.17.14", + "rustc-hash 2.1.1", + "rustls 0.23.25", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.12", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "541d0f57c6ec747a90738a52741d3221f7960e8ac2f0ff4b1a63680e033b4ab5" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", @@ -4073,13 +4174,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -4093,8 +4200,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", + "zerocopy 0.8.24", ] [[package]] @@ -4104,7 +4223,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -4113,7 +4242,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.2", + "serde", ] [[package]] @@ -4122,7 +4261,19 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", ] [[package]] @@ -4156,11 +4307,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", ] [[package]] @@ -4169,9 +4320,9 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4182,7 +4333,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -4197,9 +4348,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -4232,14 +4383,12 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-rustls 0.24.2", - "hyper-tls 0.5.0", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -4251,7 +4400,6 @@ dependencies = [ "sync_wrapper 0.1.2", "system-configuration 0.5.1", "tokio", - "tokio-native-tls", "tokio-rustls 0.24.1", "tower-service", "url", @@ -4264,22 +4412,22 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.6", - "http 1.1.0", + "h2 0.4.8", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.5.0", - "hyper-rustls 0.27.3", - "hyper-tls 0.6.0", + "hyper 1.6.0", + "hyper-rustls 0.27.5", + "hyper-tls", "hyper-util", "ipnet", "js-sys", @@ -4290,25 +4438,26 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.15", + "rustls 0.23.25", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "system-configuration 0.6.1", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.2", "tokio-util", + "tower 0.5.2", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.26.6", + "webpki-roots 0.26.8", "windows-registry", ] @@ -4320,10 +4469,10 @@ checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" dependencies = [ "anyhow", "async-trait", - "http 1.1.0", - "reqwest 0.12.8", + "http 1.3.1", + "reqwest 0.12.15", "serde", - "thiserror", + "thiserror 1.0.69", "tower-service", ] @@ -4354,15 +4503,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -4373,7 +4521,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest 0.10.7", + "digest", ] [[package]] @@ -4432,22 +4580,13 @@ dependencies = [ [[package]] name = "ruint" -version = "1.12.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "78a46eb779843b2c4f21fac5773e25d6d5b7c8f0922876c91541790d2ca27eef" dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "bytes", - "fastrlp", - "num-bigint 0.4.6", - "num-traits", - "parity-scale-codec", - "primitive-types", "proptest", - "rand", - "rlp", + "rand 0.8.5", + "rand 0.9.0", "ruint-macro", "serde", "valuable", @@ -4474,9 +4613,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -4484,35 +4623,26 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver", ] [[package]] name = "rustix" -version = "0.38.37" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4522,25 +4652,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring 0.17.14", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" dependencies = [ + "log", "once_cell", - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.1", "subtle", "zeroize", ] +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.2.0", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -4561,9 +4704,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -4571,44 +4717,32 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - -[[package]] -name = "rusty-fork" -version = "0.3.0" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -4630,9 +4764,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.5" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa7ffc1c0ef49b0452c6e2986abf2b07743320641ffd5fc63d552458e3b779b" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", "derive_more 1.0.0", @@ -4642,30 +4776,30 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.5" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46385cc24172cf615450267463f937c10072516359b3ff1cb24228a4a08bf951" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] name = "scc" -version = "2.2.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c1f7fc6deb21665a9060dfc7d271be784669295a31babdcd4dd2c79ae8cbfb" +checksum = "ea091f6cac2595aa38993f04f4ee692ed43757035c36e67c180b6828356385b1" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -4694,15 +4828,15 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "sdd" -version = "3.0.4" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" [[package]] name = "sec1" @@ -4714,6 +4848,7 @@ dependencies = [ "der", "generic-array 0.14.7", "pkcs8", + "serdect", "subtle", "zeroize", ] @@ -4724,50 +4859,45 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", - "core-foundation", + "bitflags 2.9.0", + "core-foundation 0.9.4", "core-foundation-sys", "libc", "security-framework-sys", ] [[package]] -name = "security-framework-sys" -version = "2.12.0" +name = "security-framework" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.10.0", "core-foundation-sys", "libc", + "security-framework-sys", ] [[package]] -name = "semver" -version = "0.11.0" +name = "security-framework-sys" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ - "semver-parser", + "core-foundation-sys", + "libc", ] [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - [[package]] name = "send_wrapper" version = "0.4.0" @@ -4782,29 +4912,38 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -4814,9 +4953,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -4824,13 +4963,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -4854,11 +4993,21 @@ dependencies = [ "serde", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "serial_test" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" dependencies = [ "futures", "log", @@ -4870,13 +5019,13 @@ dependencies = [ [[package]] name = "serial_test_derive" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -4887,7 +5036,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -4898,7 +5047,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -4907,20 +5056,10 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest 0.10.7", + "digest", "keccak", ] -[[package]] -name = "sha3-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -dependencies = [ - "cc", - "cfg-if", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -4957,27 +5096,27 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest 0.10.7", - "rand_core", + "digest", + "rand_core 0.6.4", ] [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror", + "thiserror 2.0.12", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "size" @@ -4996,9 +5135,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "snowbridge-amcl" @@ -5012,9 +5151,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -5030,49 +5169,55 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] [[package]] name = "sp1-build" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "cargo_metadata", "chrono", "clap", "dirs", + "sp1-prover", ] [[package]] name = "sp1-core-executor" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", "bytemuck", + "clap", "elf", "enum-map", "eyre", "hashbrown 0.14.5", "hex", "itertools 0.13.0", - "log", "nohash-hasher", "num", + "p3-baby-bear", "p3-field", "p3-maybe-rayon", - "rand", + "p3-util", + "rand 0.8.5", + "range-set-blaze", "rrs-succinct", "serde", + "serde_json", "sp1-curves", "sp1-primitives", "sp1-stark", "strum", "strum_macros", - "thiserror", + "subenum", + "thiserror 1.0.69", "tiny-keccak", "tracing", "typenum", @@ -5081,32 +5226,40 @@ dependencies = [ [[package]] name = "sp1-core-machine" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "cbindgen", + "cc", "cfg-if", "elliptic-curve", "generic-array 1.1.0", + "glob", "hashbrown 0.14.5", "hex", "itertools 0.13.0", "k256", - "log", "num", "num_cpus", + "p256", "p3-air", "p3-baby-bear", - "p3-blake3", "p3-challenger", "p3-field", "p3-keccak-air", "p3-matrix", "p3-maybe-rayon", + "p3-poseidon2", + "p3-symmetric", "p3-uni-stark", "p3-util", - "rand", + "pathdiff", + "rand 0.8.5", + "rayon", + "rayon-scan", "serde", + "serde_json", "size", "snowbridge-amcl", "sp1-core-executor", @@ -5118,7 +5271,7 @@ dependencies = [ "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", "tracing-forest", "tracing-subscriber", @@ -5126,19 +5279,35 @@ dependencies = [ "web-time", ] +[[package]] +name = "sp1-cuda" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + [[package]] name = "sp1-curves" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "cfg-if", - "curve25519-dalek", "dashu", "elliptic-curve", "generic-array 1.1.0", "itertools 0.13.0", "k256", "num", + "p256", "p3-field", "serde", "snowbridge-amcl", @@ -5149,8 +5318,8 @@ dependencies = [ [[package]] name = "sp1-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -5158,18 +5327,20 @@ dependencies = [ [[package]] name = "sp1-helper" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "sp1-build", ] [[package]] name = "sp1-primitives" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "blake3", + "cfg-if", "hex", "lazy_static", "num-bigint 0.4.6", @@ -5183,16 +5354,19 @@ dependencies = [ [[package]] name = "sp1-prover" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.1" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", "clap", "dirs", + "downloader", + "enum-map", "eyre", + "hashbrown 0.14.5", + "hex", "itertools 0.13.0", - "lazy_static", "lru", "num-bigint 0.4.6", "p3-baby-bear", @@ -5202,11 +5376,12 @@ dependencies = [ "p3-field", "p3-matrix", "p3-symmetric", + "p3-util", "rayon", - "reqwest 0.11.27", "serde", "serde_json", "serial_test", + "sha2", "sp1-core-executor", "sp1-core-machine", "sp1-primitives", @@ -5215,17 +5390,16 @@ dependencies = [ "sp1-recursion-core", "sp1-recursion-gnark-ffi", "sp1-stark", - "subtle-encoding", - "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", + "tracing-appender", "tracing-subscriber", ] [[package]] name = "sp1-recursion-circuit" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", @@ -5240,8 +5414,9 @@ dependencies = [ "p3-fri", "p3-matrix", "p3-symmetric", + "p3-uni-stark", "p3-util", - "rand", + "rand 0.8.5", "rayon", "serde", "sp1-core-executor", @@ -5257,8 +5432,8 @@ dependencies = [ [[package]] name = "sp1-recursion-compiler" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", "itertools 0.13.0", @@ -5278,13 +5453,18 @@ dependencies = [ [[package]] name = "sp1-recursion-core" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", - "ff 0.13.0", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", "hashbrown 0.14.5", "itertools 0.13.0", + "num_cpus", "p3-air", "p3-baby-bear", "p3-bn254-fr", @@ -5299,13 +5479,15 @@ dependencies = [ "p3-poseidon2", "p3-symmetric", "p3-util", + "pathdiff", + "rand 0.8.5", "serde", "sp1-core-machine", "sp1-derive", "sp1-primitives", "sp1-stark", "static_assertions", - "thiserror", + "thiserror 1.0.69", "tracing", "vec_map", "zkhash", @@ -5313,8 +5495,8 @@ dependencies = [ [[package]] name = "sp1-recursion-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -5322,8 +5504,8 @@ dependencies = [ [[package]] name = "sp1-recursion-gnark-ffi" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", @@ -5331,7 +5513,6 @@ dependencies = [ "cc", "cfg-if", "hex", - "log", "num-bigint 0.4.6", "p3-baby-bear", "p3-field", @@ -5343,57 +5524,62 @@ dependencies = [ "sp1-recursion-compiler", "sp1-stark", "tempfile", + "tracing", ] [[package]] name = "sp1-sdk" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.2" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ - "alloy-sol-types", + "alloy-primitives", "anyhow", "async-trait", + "backoff", "bincode", "cfg-if", "dirs", - "ethers", + "eventsource-stream", "futures", "hashbrown 0.14.5", "hex", "indicatif", "itertools 0.13.0", - "log", + "k256", "p3-baby-bear", "p3-field", "p3-fri", "prost", - "reqwest 0.12.8", + "reqwest 0.12.15", "reqwest-middleware", "serde", + "serde_json", + "sp1-build", "sp1-core-executor", "sp1-core-machine", + "sp1-cuda", "sp1-primitives", "sp1-prover", "sp1-stark", "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", + "tonic", "tracing", "twirp-rs", - "vergen", ] [[package]] name = "sp1-stark" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "arrayref", - "getrandom", "hashbrown 0.14.5", "itertools 0.13.0", + "num-bigint 0.4.6", "num-traits", "p3-air", "p3-baby-bear", @@ -5416,7 +5602,6 @@ dependencies = [ "strum", "strum_macros", "sysinfo", - "thiserror", "tracing", ] @@ -5443,21 +5628,26 @@ dependencies = [ ] [[package]] -name = "static_assertions" +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", "parking_lot", - "phf_shared 0.10.0", + "phf_shared", "precomputed-hash", ] @@ -5482,27 +5672,30 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "subenum" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "4f5d5dfb8556dd04017db5e318bbeac8ab2b0c67b76bf197bfb79e9b29f18ecf" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "subtle-encoding" -version = "0.5.1" +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" -dependencies = [ - "zeroize", -] +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svm-rs" @@ -5515,11 +5708,11 @@ dependencies = [ "hex", "once_cell", "reqwest 0.11.27", - "semver 1.0.23", + "semver", "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.69", "url", "zip", ] @@ -5537,27 +5730,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "syn-solidity" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.85", -] - [[package]] name = "sync_wrapper" version = "0.1.2" @@ -5566,13 +5747,24 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "sysinfo" version = "0.30.13" @@ -5595,7 +5787,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys 0.5.0", ] @@ -5605,8 +5797,8 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.6.0", - "core-foundation", + "bitflags 2.9.0", + "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -5638,12 +5830,12 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.2", "once_cell", "rustix", "windows-sys 0.59.0", @@ -5662,22 +5854,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -5692,15 +5904,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -5709,15 +5919,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -5732,11 +5942,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -5749,9 +5969,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "bytes", @@ -5767,13 +5987,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] @@ -5798,12 +6018,22 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.15", - "rustls-pki-types", + "rustls 0.23.25", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", "tokio", ] @@ -5838,9 +6068,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" dependencies = [ "bytes", "futures-core", @@ -5851,14 +6081,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.22", + "toml_edit 0.22.24", ] [[package]] @@ -5876,34 +6106,87 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.9.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap", + "indexmap 2.9.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.20", + "winnow 0.7.6", +] + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2 0.4.8", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs", + "rustls-pemfile 2.2.0", + "socket2", + "tokio", + "tokio-rustls 0.26.2", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", ] [[package]] name = "tower" -version = "0.5.1" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", + "indexmap 1.9.3", + "pin-project", "pin-project-lite", - "sync_wrapper 0.1.2", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", "tokio", "tower-layer", "tower-service", @@ -5924,9 +6207,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -5934,22 +6217,34 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -5963,7 +6258,7 @@ checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" dependencies = [ "ansi_term", "smallvec", - "thiserror", + "thiserror 1.0.69", "tracing", "tracing-subscriber", ] @@ -5991,9 +6286,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -6025,10 +6320,10 @@ dependencies = [ "http 0.2.12", "httparse", "log", - "rand", + "rand 0.8.5", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -6042,13 +6337,13 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.3.1", "httparse", "log", "native-tls", - "rand", + "rand 0.8.5", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -6061,30 +6356,24 @@ dependencies = [ "async-trait", "axum", "futures", - "http 1.1.0", + "http 1.3.1", "http-body-util", - "hyper 1.5.0", + "hyper 1.6.0", "prost", - "reqwest 0.12.8", + "reqwest 0.12.15", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", - "tower", + "tower 0.5.2", "url", ] [[package]] name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "ucd-trie" -version = "0.1.7" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "uint" @@ -6104,32 +6393,17 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" -version = "0.1.14" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" @@ -6151,9 +6425,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -6166,6 +6440,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -6178,15 +6464,15 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -6203,34 +6489,12 @@ dependencies = [ "serde", ] -[[package]] -name = "vergen" -version = "8.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" -dependencies = [ - "anyhow", - "cfg-if", - "git2", - "rustversion", - "time", -] - [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -dependencies = [ - "libc", -] - [[package]] name = "walkdir" version = "2.5.0" @@ -6256,49 +6520,59 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6306,22 +6580,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -6338,9 +6615,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -6364,9 +6641,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -6408,7 +6685,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core", + "windows-core 0.52.0", "windows-targets 0.52.6", ] @@ -6421,34 +6698,83 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings 0.4.0", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "windows-strings 0.3.1", + "windows-targets 0.53.0", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", ] [[package]] @@ -6502,13 +6828,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6521,6 +6863,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -6533,6 +6881,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -6545,12 +6899,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -6563,6 +6929,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -6575,6 +6947,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -6587,6 +6965,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -6599,6 +6983,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.5.40" @@ -6610,9 +7000,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" dependencies = [ "memchr", ] @@ -6627,6 +7017,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "ws_stream_wasm" version = "0.7.4" @@ -6638,9 +7049,9 @@ dependencies = [ "js-sys", "log", "pharos", - "rustc_version 0.4.1", + "rustc_version", "send_wrapper 0.6.0", - "thiserror", + "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -6661,14 +7072,46 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive 0.8.24", ] [[package]] @@ -6679,7 +7122,39 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure", ] [[package]] @@ -6699,7 +7174,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.100", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -6728,8 +7225,8 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" dependencies = [ - "ark-ff 0.4.2", - "ark-std 0.4.0", + "ark-ff", + "ark-std", "bitvec", "blake2", "bls12_381", @@ -6742,7 +7239,7 @@ dependencies = [ "jubjub", "lazy_static", "pasta_curves 0.5.1", - "rand", + "rand 0.8.5", "serde", "sha2", "sha3", @@ -6770,9 +7267,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/examples/zkquiz/quiz/script/Cargo.toml b/examples/zkquiz/quiz/script/Cargo.toml index 3e2a7d332b..de78505b00 100644 --- a/examples/zkquiz/quiz/script/Cargo.toml +++ b/examples/zkquiz/quiz/script/Cargo.toml @@ -5,8 +5,8 @@ name = "quiz-script" edition = "2021" [dependencies] -sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } -aligned-sdk = { path = "../../../../batcher/aligned-sdk" } +sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } +aligned-sdk = { path = "../../../../crates/sdk" } ethers = { version = "2.0", features = ["ws", "rustls"] } rpassword = "7.3.1" @@ -19,4 +19,4 @@ hex = "0.4.3" dialoguer = "0.11.0" [build-dependencies] -sp1-helper = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } +sp1-helper = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } diff --git a/examples/zkquiz/quiz/script/rust-toolchain b/examples/zkquiz/quiz/script/rust-toolchain index 989860f406..9397b95266 100644 --- a/examples/zkquiz/quiz/script/rust-toolchain +++ b/examples/zkquiz/quiz/script/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2024-04-17" +channel = "stable" components = ["llvm-tools", "rustc-dev"] diff --git a/examples/zkquiz/quiz/script/src/main.rs b/examples/zkquiz/quiz/script/src/main.rs index dd4885cd5a..a879f78efe 100644 --- a/examples/zkquiz/quiz/script/src/main.rs +++ b/examples/zkquiz/quiz/script/src/main.rs @@ -1,10 +1,9 @@ -#![feature(slice_flatten)] use std::io; use std::str::FromStr; -use aligned_sdk::core::types::{AlignedVerificationData, FeeEstimationType, Network, ProvingSystemId, VerificationData}; -use aligned_sdk::sdk::{deposit_to_aligned, estimate_fee}; -use aligned_sdk::sdk::{get_nonce_from_ethereum, submit_and_wait_verification}; +use aligned_sdk::common::types::{AlignedVerificationData, FeeEstimationType, Network, ProvingSystemId, VerificationData}; +use aligned_sdk::verification_layer::{deposit_to_aligned, estimate_fee}; +use aligned_sdk::verification_layer::{get_nonce_from_ethereum, submit_and_wait_verification}; use clap::Parser; use dialoguer::Confirm; use ethers::prelude::*; @@ -25,7 +24,7 @@ struct Args { #[arg( short, long, - default_value = "https://ethereum-holesky-rpc.publicnode.com" + default_value = "https://ethereum-hoodi-rpc.publicnode.com" )] rpc_url: String, #[clap(flatten)] @@ -39,6 +38,7 @@ enum NetworkNameArg { Devnet, Holesky, HoleskyStage, + Hoodi, Mainnet, } @@ -50,9 +50,10 @@ impl FromStr for NetworkNameArg { "devnet" => Ok(NetworkNameArg::Devnet), "holesky" => Ok(NetworkNameArg::Holesky), "holesky-stage" => Ok(NetworkNameArg::HoleskyStage), + "hoodi" => Ok(NetworkNameArg::Hoodi), "mainnet" => Ok(NetworkNameArg::Mainnet), _ => Err( - "Unknown network. Possible values: devnet, holesky, holesky-stage, mainnet" + "Unknown network. Possible values: devnet, holesky, holesky-stage, mainnet, hoodi" .to_string(), ), } @@ -65,7 +66,7 @@ struct NetworkArg { name = "The working network's name", long = "network", default_value = "devnet", - help = "[possible values: devnet, holesky, holesky-stage, mainnet]" + help = "[possible values: devnet, holesky, holesky-stage, mainnet, hoodi]", )] network: Option, #[arg( @@ -116,6 +117,7 @@ impl From for Network { Some(NetworkNameArg::Devnet) => Network::Devnet, Some(NetworkNameArg::Holesky) => Network::Holesky, Some(NetworkNameArg::HoleskyStage) => Network::HoleskyStage, + Some(NetworkNameArg::Hoodi) => Network::Hoodi, Some(NetworkNameArg::Mainnet) => Network::Mainnet, } } @@ -178,10 +180,10 @@ async fn main() { println!("Generating Proof "); - let client = ProverClient::new(); + let client = ProverClient::from_env(); let (pk, vk) = client.setup(ELF); - let Ok(proof) = client.prove(&pk, stdin).run() else { + let Ok(proof) = client.prove(&pk, &stdin).compressed().run() else { println!("Incorrect answers!"); return; }; @@ -299,8 +301,10 @@ async fn claim_nft_with_verified_proof( .batch_inclusion_proof .merkle_path .as_slice() + .iter() .flatten() - .to_vec(), + .copied() // Convert &u8 to u8 + .collect::>() ); let proving_system_aux_data_commitment_hex: String = aligned_verification_data diff --git a/explorer/.env.dev b/explorer/.env.dev index b0b7b201ba..acc19cd354 100644 --- a/explorer/.env.dev +++ b/explorer/.env.dev @@ -14,6 +14,9 @@ DB_HOST=localhost # Config file ALIGNED_CONFIG_FILE="../contracts/script/output/devnet/alignedlayer_deployment_output.json" +ALIGNED_PROOF_AGG_CONFIG_FILE="../contracts/script/output/devnet/proof_aggregation_service_deployment_output.json" +## Don't use public nodes as blob data can be retrieved from them +BEACON_CLIENT="http://127.0.0.1:58801" # Debug DEBUG_ERRORS=true @@ -30,4 +33,4 @@ BATCH_TTL_MINUTES=5 SCHEDULED_BATCH_INTERVAL_MINUTES=10 # Latest aligned release that operators should be running -LATEST_RELEASE=v0.14.0 +LATEST_RELEASE=v0.20.0 diff --git a/explorer/.env.example b/explorer/.env.example index a2a327b831..555282edc6 100644 --- a/explorer/.env.example +++ b/explorer/.env.example @@ -14,6 +14,9 @@ DB_HOST= # Config file ALIGNED_CONFIG_FILE="" +ALIGNED_PROOF_AGG_CONFIG_FILE="" +## Don't use public nodes as blob data can be retrieved from them +BEACON_CLIENT="" # Debug DEBUG_ERRORS= @@ -28,4 +31,4 @@ BATCH_TTL_MINUTES=5 SCHEDULED_BATCH_INTERVAL_MINUTES=360 # Latest aligned release that operators should be running -LATEST_RELEASE=v0.14.0 +LATEST_RELEASE=v0.20.0 diff --git a/explorer/ecto_setup_db.sh b/explorer/ecto_setup_db.sh index 73fbf77395..42ca0a2bb1 100755 --- a/explorer/ecto_setup_db.sh +++ b/explorer/ecto_setup_db.sh @@ -10,6 +10,8 @@ export DB_USER=$DB_USER export DB_PASS=$DB_PASS export DB_HOST=$DB_HOST export ALIGNED_CONFIG_FILE=$ALIGNED_CONFIG_FILE +export ALIGNED_PROOF_AGG_CONFIG_FILE=$ALIGNED_PROOF_AGG_CONFIG_FILE +export BEACON_CLIENT=$BEACON_CLIENT mix deps.get diff --git a/explorer/lib/abi/AlignedProofAggregationService.json b/explorer/lib/abi/AlignedProofAggregationService.json new file mode 100644 index 0000000000..87a1d5f566 --- /dev/null +++ b/explorer/lib/abi/AlignedProofAggregationService.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"VERIFIER_MOCK_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"aggregatedProofs","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"alignedAggregatorAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"newOwner","type":"address","internalType":"address"},{"name":"_alignedAggregatorAddress","type":"address","internalType":"address"},{"name":"_sp1VerifierAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sp1VerifierAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"verify","inputs":[{"name":"blobVersionedHash","type":"bytes32","internalType":"bytes32"},{"name":"sp1ProgramVKey","type":"bytes32","internalType":"bytes32"},{"name":"sp1PublicValues","type":"bytes","internalType":"bytes"},{"name":"sp1ProofBytes","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"AggregatedProofVerified","inputs":[{"name":"merkleRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"blobVersionedHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OnlyAlignedAggregator","inputs":[{"name":"sender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e2565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100e0576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611116610119600039600081816102530152818161029c0152818161033b0152818161037b015261040e01526111166000f3fe6080604052600436106100a75760003560e01c8063715018a611610064578063715018a6146101a157806383501b21146101b65780638da5cb5b146101cb578063c0c53b8b146101e9578063f2fde38b14610209578063fc2b42711461022957600080fd5b806327d3bc9a146100ac578063294e3ccb146100f15780633659cfe6146101295780634c46688c1461014b5780634f1ef2861461016b57806352d1902d1461017e575b600080fd5b3480156100b857600080fd5b506100dc6100c7366004610c91565b60c96020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100fd57600080fd5b5060ca54610111906001600160a01b031681565b6040516001600160a01b0390911681526020016100e8565b34801561013557600080fd5b50610149610144366004610cc6565b610249565b005b34801561015757600080fd5b5060cb54610111906001600160a01b031681565b610149610179366004610cf7565b610331565b34801561018a57600080fd5b50610193610401565b6040519081526020016100e8565b3480156101ad57600080fd5b506101496104b4565b3480156101c257600080fd5b5061011160ff81565b3480156101d757600080fd5b506033546001600160a01b0316610111565b3480156101f557600080fd5b50610149610204366004610db9565b6104c8565b34801561021557600080fd5b50610149610224366004610cc6565b61061d565b34801561023557600080fd5b50610149610244366004610e45565b610693565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029a5760405162461bcd60e51b815260040161029190610ec8565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166102e360008051602061109a833981519152546001600160a01b031690565b6001600160a01b0316146103095760405162461bcd60e51b815260040161029190610f14565b610312816107b2565b6040805160008082526020820190925261032e918391906107ba565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103795760405162461bcd60e51b815260040161029190610ec8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c260008051602061109a833981519152546001600160a01b031690565b6001600160a01b0316146103e85760405162461bcd60e51b815260040161029190610f14565b6103f1826107b2565b6103fd828260016107ba565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104a15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610291565b5060008051602061109a83398151915290565b6104bc61092a565b6104c66000610984565b565b600054610100900460ff16158080156104e85750600054600160ff909116105b806105025750303b158015610502575060005460ff166001145b6105655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610291565b6000805460ff191660011790558015610588576000805461ff0019166101001790555b6105906109d6565b610598610a05565b6105a184610984565b60cb80546001600160a01b038086166001600160a01b03199283161790925560ca8054928516929091169190911790558015610617576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b61062561092a565b6001600160a01b03811661068a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610291565b61032e81610984565b60cb546001600160a01b031633146106c05760405163921f325560e01b8152336004820152602401610291565b60006106ce84860186610c91565b90506106e660ca546001600160a01b031660ff141590565b156107545760ca5460405163020a49e360e51b81526001600160a01b03909116906341493c60906107239089908990899089908990600401610f89565b60006040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050505b600081815260c9602052604090819020805460ff191660011790555181907ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f62906107a1908a815260200190565b60405180910390a250505050505050565b61032e61092a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f2576107ed83610a2c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561084c575060408051601f3d908101601f1916820190925261084991810190610fc2565b60015b6108af5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610291565b60008051602061109a833981519152811461091e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610291565b506107ed838383610ac8565b6033546001600160a01b031633146104c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610291565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166109fd5760405162461bcd60e51b815260040161029190610fdb565b6104c6610aed565b600054610100900460ff166104c65760405162461bcd60e51b815260040161029190610fdb565b6001600160a01b0381163b610a995760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610291565b60008051602061109a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610ad183610b1d565b600082511180610ade5750805b156107ed576106178383610b5d565b600054610100900460ff16610b145760405162461bcd60e51b815260040161029190610fdb565b6104c633610984565b610b2681610a2c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b610bc55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610291565b600080846001600160a01b031684604051610be0919061104a565b600060405180830381855af49150503d8060008114610c1b576040519150601f19603f3d011682016040523d82523d6000602084013e610c20565b606091505b5091509150610c4882826040518060600160405280602781526020016110ba60279139610c51565b95945050505050565b60608315610c60575081610c8a565b825115610c705782518084602001fd5b8160405162461bcd60e51b81526004016102919190611066565b9392505050565b600060208284031215610ca357600080fd5b5035919050565b80356001600160a01b0381168114610cc157600080fd5b919050565b600060208284031215610cd857600080fd5b610c8a82610caa565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610d0a57600080fd5b610d1383610caa565b9150602083013567ffffffffffffffff80821115610d3057600080fd5b818501915085601f830112610d4457600080fd5b813581811115610d5657610d56610ce1565b604051601f8201601f19908116603f01168101908382118183101715610d7e57610d7e610ce1565b81604052828152886020848701011115610d9757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610dce57600080fd5b610dd784610caa565b9250610de560208501610caa565b9150610df360408501610caa565b90509250925092565b60008083601f840112610e0e57600080fd5b50813567ffffffffffffffff811115610e2657600080fd5b602083019150836020828501011115610e3e57600080fd5b9250929050565b60008060008060008060808789031215610e5e57600080fd5b8635955060208701359450604087013567ffffffffffffffff80821115610e8457600080fd5b610e908a838b01610dfc565b90965094506060890135915080821115610ea957600080fd5b50610eb689828a01610dfc565b979a9699509497509295939492505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000610fa3606083018688610f60565b8281036040840152610fb6818587610f60565b98975050505050505050565b600060208284031215610fd457600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611041578181015183820152602001611029565b50506000910152565b6000825161105c818460208701611026565b9190910192915050565b6020815260008251806020840152611085816040850160208701611026565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ef3ac35a93e0bc422c32ddc5626edbb3121458d2f45c80dcb960589ffea6d6b764736f6c63430008180033","sourceMap":"506:2562:10:-:0;;;1332:4:5;1289:48;;1548:53:10;;;;;;;;;-1:-1:-1;1572:22:10;:20;:22::i;:::-;506:2562;;5388:279:4;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:4;;216:2:12;5447:66:4;;;198:21:12;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:12;;;338:37;392:19;;5447:66:4;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:4;5588:15;5573:30;;;;;;5622:28;;564:36:12;;;5622:28:4;;552:2:12;537:18;5622:28:4;;;;;;;5523:138;5388:279::o;422:184:12:-;506:2562:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100a75760003560e01c8063715018a611610064578063715018a6146101a157806383501b21146101b65780638da5cb5b146101cb578063c0c53b8b146101e9578063f2fde38b14610209578063fc2b42711461022957600080fd5b806327d3bc9a146100ac578063294e3ccb146100f15780633659cfe6146101295780634c46688c1461014b5780634f1ef2861461016b57806352d1902d1461017e575b600080fd5b3480156100b857600080fd5b506100dc6100c7366004610c91565b60c96020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100fd57600080fd5b5060ca54610111906001600160a01b031681565b6040516001600160a01b0390911681526020016100e8565b34801561013557600080fd5b50610149610144366004610cc6565b610249565b005b34801561015757600080fd5b5060cb54610111906001600160a01b031681565b610149610179366004610cf7565b610331565b34801561018a57600080fd5b50610193610401565b6040519081526020016100e8565b3480156101ad57600080fd5b506101496104b4565b3480156101c257600080fd5b5061011160ff81565b3480156101d757600080fd5b506033546001600160a01b0316610111565b3480156101f557600080fd5b50610149610204366004610db9565b6104c8565b34801561021557600080fd5b50610149610224366004610cc6565b61061d565b34801561023557600080fd5b50610149610244366004610e45565b610693565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361029a5760405162461bcd60e51b815260040161029190610ec8565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166102e360008051602061109a833981519152546001600160a01b031690565b6001600160a01b0316146103095760405162461bcd60e51b815260040161029190610f14565b610312816107b2565b6040805160008082526020820190925261032e918391906107ba565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103795760405162461bcd60e51b815260040161029190610ec8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166103c260008051602061109a833981519152546001600160a01b031690565b6001600160a01b0316146103e85760405162461bcd60e51b815260040161029190610f14565b6103f1826107b2565b6103fd828260016107ba565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104a15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610291565b5060008051602061109a83398151915290565b6104bc61092a565b6104c66000610984565b565b600054610100900460ff16158080156104e85750600054600160ff909116105b806105025750303b158015610502575060005460ff166001145b6105655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610291565b6000805460ff191660011790558015610588576000805461ff0019166101001790555b6105906109d6565b610598610a05565b6105a184610984565b60cb80546001600160a01b038086166001600160a01b03199283161790925560ca8054928516929091169190911790558015610617576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b61062561092a565b6001600160a01b03811661068a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610291565b61032e81610984565b60cb546001600160a01b031633146106c05760405163921f325560e01b8152336004820152602401610291565b60006106ce84860186610c91565b90506106e660ca546001600160a01b031660ff141590565b156107545760ca5460405163020a49e360e51b81526001600160a01b03909116906341493c60906107239089908990899089908990600401610f89565b60006040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050505b600081815260c9602052604090819020805460ff191660011790555181907ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f62906107a1908a815260200190565b60405180910390a250505050505050565b61032e61092a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107f2576107ed83610a2c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561084c575060408051601f3d908101601f1916820190925261084991810190610fc2565b60015b6108af5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610291565b60008051602061109a833981519152811461091e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610291565b506107ed838383610ac8565b6033546001600160a01b031633146104c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610291565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166109fd5760405162461bcd60e51b815260040161029190610fdb565b6104c6610aed565b600054610100900460ff166104c65760405162461bcd60e51b815260040161029190610fdb565b6001600160a01b0381163b610a995760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610291565b60008051602061109a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610ad183610b1d565b600082511180610ade5750805b156107ed576106178383610b5d565b600054610100900460ff16610b145760405162461bcd60e51b815260040161029190610fdb565b6104c633610984565b610b2681610a2c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b610bc55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610291565b600080846001600160a01b031684604051610be0919061104a565b600060405180830381855af49150503d8060008114610c1b576040519150601f19603f3d011682016040523d82523d6000602084013e610c20565b606091505b5091509150610c4882826040518060600160405280602781526020016110ba60279139610c51565b95945050505050565b60608315610c60575081610c8a565b825115610c705782518084602001fd5b8160405162461bcd60e51b81526004016102919190611066565b9392505050565b600060208284031215610ca357600080fd5b5035919050565b80356001600160a01b0381168114610cc157600080fd5b919050565b600060208284031215610cd857600080fd5b610c8a82610caa565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610d0a57600080fd5b610d1383610caa565b9150602083013567ffffffffffffffff80821115610d3057600080fd5b818501915085601f830112610d4457600080fd5b813581811115610d5657610d56610ce1565b604051601f8201601f19908116603f01168101908382118183101715610d7e57610d7e610ce1565b81604052828152886020848701011115610d9757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610dce57600080fd5b610dd784610caa565b9250610de560208501610caa565b9150610df360408501610caa565b90509250925092565b60008083601f840112610e0e57600080fd5b50813567ffffffffffffffff811115610e2657600080fd5b602083019150836020828501011115610e3e57600080fd5b9250929050565b60008060008060008060808789031215610e5e57600080fd5b8635955060208701359450604087013567ffffffffffffffff80821115610e8457600080fd5b610e908a838b01610dfc565b90965094506060890135915080821115610ea957600080fd5b50610eb689828a01610dfc565b979a9699509497509295939492505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000610fa3606083018688610f60565b8281036040840152610fb6818587610f60565b98975050505050505050565b600060208284031215610fd457600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611041578181015183820152602001611029565b50506000910152565b6000825161105c818460208701611026565b9190910192915050565b6020815260008251806020840152611085816040850160208701611026565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ef3ac35a93e0bc422c32ddc5626edbb3121458d2f45c80dcb960589ffea6d6b764736f6c63430008180033","sourceMap":"506:2562:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;733:48;;;;;;;;;;-1:-1:-1;733:48:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:12;;357:22;339:41;;327:2;312:18;733:48:10;;;;;;;;1171:33;;;;;;;;;;-1:-1:-1;1171:33:10;;;;-1:-1:-1;;;;;1171:33:10;;;;;;-1:-1:-1;;;;;555:32:12;;;537:51;;525:2;510:18;1171:33:10;391:203:12;3315:197:5;;;;;;;;;;-1:-1:-1;3315:197:5;;;;;:::i;:::-;;:::i;:::-;;1298:39:10;;;;;;;;;;-1:-1:-1;1298:39:10;;;;-1:-1:-1;;;;;1298:39:10;;;3761:222:5;;;;;;:::i;:::-;;:::i;3004:131::-;;;;;;;;;;;;;:::i;:::-;;;2246:25:12;;;2234:2;2219:18;3004:131:5;2100:177:12;2071:101:0;;;;;;;;;;;;;:::i;1480:61:10:-;;;;;;;;;;;;1536:4;1480:61;;1441:85:0;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;1607:358:10;;;;;;;;;;-1:-1:-1;1607:358:10;;;;;:::i;:::-;;:::i;2321:198:0:-;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;1971:621:10:-;;;;;;;;;;-1:-1:-1;1971:621:10;;;;;:::i;:::-;;:::i;3315:197:5:-;-1:-1:-1;;;;;1898:6:5;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:5;;;;;;;:::i;:::-;;;;;;;;;1995:6;-1:-1:-1;;;;;1971:30:5;:20;-1:-1:-1;;;;;;;;;;;1642:65:2;-1:-1:-1;;;;;1642:65:2;;1563:151;1971:20:5;-1:-1:-1;;;;;1971:30:5;;1963:87;;;;-1:-1:-1;;;1963:87:5;;;;;;;:::i;:::-;3398:36:::1;3416:17;3398;:36::i;:::-;3485:12;::::0;;3495:1:::1;3485:12:::0;;;::::1;::::0;::::1;::::0;;;3444:61:::1;::::0;3466:17;;3485:12;3444:21:::1;:61::i;:::-;3315:197:::0;:::o;3761:222::-;-1:-1:-1;;;;;1898:6:5;1881:23;1889:4;1881:23;1873:80;;;;-1:-1:-1;;;1873:80:5;;;;;;;:::i;:::-;1995:6;-1:-1:-1;;;;;1971:30:5;:20;-1:-1:-1;;;;;;;;;;;1642:65:2;-1:-1:-1;;;;;1642:65:2;;1563:151;1971:20:5;-1:-1:-1;;;;;1971:30:5;;1963:87;;;;-1:-1:-1;;;1963:87:5;;;;;;;:::i;:::-;3878:36:::1;3896:17;3878;:36::i;:::-;3924:52;3946:17;3965:4;3971;3924:21;:52::i;:::-;3761:222:::0;;:::o;3004:131::-;3082:7;2324:4;-1:-1:-1;;;;;2333:6:5;2316:23;;2308:92;;;;-1:-1:-1;;;2308:92:5;;4860:2:12;2308:92:5;;;4842:21:12;4899:2;4879:18;;;4872:30;4938:34;4918:18;;;4911:62;5009:26;4989:18;;;4982:54;5053:19;;2308:92:5;4658:420:12;2308:92:5;-1:-1:-1;;;;;;;;;;;;3004:131:5;:::o;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;1607:358:10:-;3111:19:4;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:4;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:4;1476:19:6;:23;;;3219:66:4;;-1:-1:-1;3268:12:4;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:4;;5285:2:12;3157:201:4;;;5267:21:12;5324:2;5304:18;;;5297:30;5363:34;5343:18;;;5336:62;-1:-1:-1;;;5414:18:12;;;5407:44;5468:19;;3157:201:4;5083:410:12;3157:201:4;3368:12;:16;;-1:-1:-1;;3368:16:4;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:4;;;;;3394:65;1758:16:10::1;:14;:16::i;:::-;1784:24;:22;:24::i;:::-;1818:28;1837:8;1818:18;:28::i;:::-;1856:24;:52:::0;;-1:-1:-1;;;;;1856:52:10;;::::1;-1:-1:-1::0;;;;;;1856:52:10;;::::1;;::::0;;;1918:18:::1;:40:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3479:99:4;;;;3529:5;3513:21;;-1:-1:-1;;3513:21:4;;;3553:14;;-1:-1:-1;5650:36:12;;3553:14:4;;5638:2:12;5623:18;3553:14:4;;;;;;;3479:99;3101:483;1607:358:10;;;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;5899:2:12;2401:73:0::1;::::0;::::1;5881:21:12::0;5938:2;5918:18;;;5911:30;5977:34;5957:18;;;5950:62;-1:-1:-1;;;6028:18:12;;;6021:36;6074:19;;2401:73:0::1;5697:402:12::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;1971:621:10:-:0;2958:24;;-1:-1:-1;;;;;2958:24:10;2944:10;:38;2940:109;;3005:33;;-1:-1:-1;;;3005:33:10;;3027:10;3005:33;;;537:51:12;510:18;;3005:33:10;391:203:12;2940:109:10;2178:18:::1;2200:38;::::0;;::::1;2211:15:::0;2200:38:::1;:::i;:::-;2177:61;;2328:24;2678:18:::0;;-1:-1:-1;;;;;2678:18:10;1536:4;2678:43;;;2598:130;2328:24:::1;2324:147;;;2381:18;::::0;2368:92:::1;::::0;-1:-1:-1;;;2368:92:10;;-1:-1:-1;;;;;2381:18:10;;::::1;::::0;2368:44:::1;::::0;:92:::1;::::0;2413:14;;2429:15;;;;2446:13;;;;2368:92:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2324:147;2481:28;::::0;;;:16:::1;:28;::::0;;;;;;:35;;-1:-1:-1;;2481:35:10::1;2512:4;2481:35;::::0;;2531:54;2498:10;;2531:54:::1;::::0;::::1;::::0;2567:17;2246:25:12;;2234:2;2219:18;;2100:177;2531:54:10::1;;;;;;;;2167:425;1971:621:::0;;;;;;:::o;2734:157::-;1334:13:0;:11;:13::i;2938:974:2:-;951:66;3384:59;;;3380:526;;;3459:37;3478:17;3459:18;:37::i;:::-;2938:974;;;:::o;3380:526::-;3560:17;-1:-1:-1;;;;;3531:61:2;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3531:63:2;;;;;;;;-1:-1:-1;;3531:63:2;;;;;;;;;;;;:::i;:::-;;;3527:302;;3758:56;;-1:-1:-1;;;3758:56:2;;7273:2:12;3758:56:2;;;7255:21:12;7312:2;7292:18;;;7285:30;7351:34;7331:18;;;7324:62;-1:-1:-1;;;7402:18:12;;;7395:44;7456:19;;3758:56:2;7071:410:12;3527:302:2;-1:-1:-1;;;;;;;;;;;3644:28:2;;3636:82;;;;-1:-1:-1;;;3636:82:2;;7688:2:12;3636:82:2;;;7670:21:12;7727:2;7707:18;;;7700:30;7766:34;7746:18;;;7739:62;-1:-1:-1;;;7817:18:12;;;7810:39;7866:19;;3636:82:2;7486:405:12;3636:82:2;3595:138;3842:53;3860:17;3879:4;3885:9;3842:17;:53::i;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:7;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;8098:2:12;1654:68:0;;;8080:21:12;;;8117:18;;;8110:30;8176:34;8156:18;;;8149:62;8228:18;;1654:68:0;7896:356:12;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1003:95::-;4910:13:4;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:4;;;;;;;:::i;:::-;1065:26:0::1;:24;:26::i;1042:67:5:-:0;4910:13:4;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:4;;;;;;;:::i;1805:281:2:-;-1:-1:-1;;;;;1476:19:6;;;1878:106:2;;;;-1:-1:-1;;;1878:106:2;;8871:2:12;1878:106:2;;;8853:21:12;8910:2;8890:18;;;8883:30;8949:34;8929:18;;;8922:62;-1:-1:-1;;;9000:18:12;;;8993:43;9053:19;;1878:106:2;8669:409:12;1878:106:2;-1:-1:-1;;;;;;;;;;;1994:85:2;;-1:-1:-1;;;;;;1994:85:2;-1:-1:-1;;;;;1994:85:2;;;;;;;;;;1805:281::o;2478:288::-;2616:29;2627:17;2616:10;:29::i;:::-;2673:1;2659:4;:11;:15;:28;;;;2678:9;2659:28;2655:105;;;2703:46;2725:17;2744:4;2703:21;:46::i;1104:111:0:-;4910:13:4;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:4;;;;;;;:::i;:::-;1176:32:0::1;929:10:7::0;1176:18:0::1;:32::i;2192:152:2:-:0;2258:37;2277:17;2258:18;:37::i;:::-;2310:27;;-1:-1:-1;;;;;2310:27:2;;;;;;;;2192:152;:::o;7088:455::-;7171:12;-1:-1:-1;;;;;1476:19:6;;;7195:88:2;;;;-1:-1:-1;;;7195:88:2;;9285:2:12;7195:88:2;;;9267:21:12;9324:2;9304:18;;;9297:30;9363:34;9343:18;;;9336:62;-1:-1:-1;;;9414:18:12;;;9407:36;9460:19;;7195:88:2;9083:402:12;7195:88:2;7354:12;7368:23;7395:6;-1:-1:-1;;;;;7395:19:2;7415:4;7395:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7353:67;;;;7437:99;7473:7;7482:10;7437:99;;;;;;;;;;;;;;;;;:35;:99::i;:::-;7430:106;7088:455;-1:-1:-1;;;;;7088:455:2:o;6622:742:6:-;6768:12;6796:7;6792:566;;;-1:-1:-1;6826:10:6;6819:17;;6792:566;6937:17;;:21;6933:415;;7181:10;7175:17;7241:15;7228:10;7224:2;7220:19;7213:44;6933:415;7320:12;7313:20;;-1:-1:-1;;;7313:20:6;;;;;;;;:::i;6933:415::-;6622:742;;;;;:::o;14:180:12:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:12;;14:180;-1:-1:-1;14:180:12:o;599:173::-;667:20;;-1:-1:-1;;;;;716:31:12;;706:42;;696:70;;762:1;759;752:12;696:70;599:173;;;:::o;777:186::-;836:6;889:2;877:9;868:7;864:23;860:32;857:52;;;905:1;902;895:12;857:52;928:29;947:9;928:29;:::i;968:127::-;1029:10;1024:3;1020:20;1017:1;1010:31;1060:4;1057:1;1050:15;1084:4;1081:1;1074:15;1100:995;1177:6;1185;1238:2;1226:9;1217:7;1213:23;1209:32;1206:52;;;1254:1;1251;1244:12;1206:52;1277:29;1296:9;1277:29;:::i;:::-;1267:39;;1357:2;1346:9;1342:18;1329:32;1380:18;1421:2;1413:6;1410:14;1407:34;;;1437:1;1434;1427:12;1407:34;1475:6;1464:9;1460:22;1450:32;;1520:7;1513:4;1509:2;1505:13;1501:27;1491:55;;1542:1;1539;1532:12;1491:55;1578:2;1565:16;1600:2;1596;1593:10;1590:36;;;1606:18;;:::i;:::-;1681:2;1675:9;1649:2;1735:13;;-1:-1:-1;;1731:22:12;;;1755:2;1727:31;1723:40;1711:53;;;1779:18;;;1799:22;;;1776:46;1773:72;;;1825:18;;:::i;:::-;1865:10;1861:2;1854:22;1900:2;1892:6;1885:18;1940:7;1935:2;1930;1926;1922:11;1918:20;1915:33;1912:53;;;1961:1;1958;1951:12;1912:53;2017:2;2012;2008;2004:11;1999:2;1991:6;1987:15;1974:46;2062:1;2057:2;2052;2044:6;2040:15;2036:24;2029:35;2083:6;2073:16;;;;;;;1100:995;;;;;:::o;2282:334::-;2359:6;2367;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;2467:29;2486:9;2467:29;:::i;:::-;2457:39;;2515:38;2549:2;2538:9;2534:18;2515:38;:::i;:::-;2505:48;;2572:38;2606:2;2595:9;2591:18;2572:38;:::i;:::-;2562:48;;2282:334;;;;;:::o;2621:347::-;2672:8;2682:6;2736:3;2729:4;2721:6;2717:17;2713:27;2703:55;;2754:1;2751;2744:12;2703:55;-1:-1:-1;2777:20:12;;2820:18;2809:30;;2806:50;;;2852:1;2849;2842:12;2806:50;2889:4;2881:6;2877:17;2865:29;;2941:3;2934:4;2925:6;2917;2913:19;2909:30;2906:39;2903:59;;;2958:1;2955;2948:12;2903:59;2621:347;;;;;:::o;2973:854::-;3081:6;3089;3097;3105;3113;3121;3174:3;3162:9;3153:7;3149:23;3145:33;3142:53;;;3191:1;3188;3181:12;3142:53;3227:9;3214:23;3204:33;;3284:2;3273:9;3269:18;3256:32;3246:42;;3339:2;3328:9;3324:18;3311:32;3362:18;3403:2;3395:6;3392:14;3389:34;;;3419:1;3416;3409:12;3389:34;3458:58;3508:7;3499:6;3488:9;3484:22;3458:58;:::i;:::-;3535:8;;-1:-1:-1;3432:84:12;-1:-1:-1;3623:2:12;3608:18;;3595:32;;-1:-1:-1;3639:16:12;;;3636:36;;;3668:1;3665;3658:12;3636:36;;3707:60;3759:7;3748:8;3737:9;3733:24;3707:60;:::i;:::-;2973:854;;;;-1:-1:-1;2973:854:12;;-1:-1:-1;2973:854:12;;3786:8;;2973:854;-1:-1:-1;;;2973:854:12:o;3832:408::-;4034:2;4016:21;;;4073:2;4053:18;;;4046:30;4112:34;4107:2;4092:18;;4085:62;-1:-1:-1;;;4178:2:12;4163:18;;4156:42;4230:3;4215:19;;3832:408::o;4245:::-;4447:2;4429:21;;;4486:2;4466:18;;;4459:30;4525:34;4520:2;4505:18;;4498:62;-1:-1:-1;;;4591:2:12;4576:18;;4569:42;4643:3;4628:19;;4245:408::o;6104:266::-;6192:6;6187:3;6180:19;6244:6;6237:5;6230:4;6225:3;6221:14;6208:43;-1:-1:-1;6296:1:12;6271:16;;;6289:4;6267:27;;;6260:38;;;;6352:2;6331:15;;;-1:-1:-1;;6327:29:12;6318:39;;;6314:50;;6104:266::o;6375:502::-;6616:6;6605:9;6598:25;6659:2;6654;6643:9;6639:18;6632:30;6579:4;6685:61;6742:2;6731:9;6727:18;6719:6;6711;6685:61;:::i;:::-;6794:9;6786:6;6782:22;6777:2;6766:9;6762:18;6755:50;6822:49;6864:6;6856;6848;6822:49;:::i;:::-;6814:57;6375:502;-1:-1:-1;;;;;;;;6375:502:12:o;6882:184::-;6952:6;7005:2;6993:9;6984:7;6980:23;6976:32;6973:52;;;7021:1;7018;7011:12;6973:52;-1:-1:-1;7044:16:12;;6882:184;-1:-1:-1;6882:184:12:o;8257:407::-;8459:2;8441:21;;;8498:2;8478:18;;;8471:30;8537:34;8532:2;8517:18;;8510:62;-1:-1:-1;;;8603:2:12;8588:18;;8581:41;8654:3;8639:19;;8257:407::o;9490:250::-;9575:1;9585:113;9599:6;9596:1;9593:13;9585:113;;;9675:11;;;9669:18;9656:11;;;9649:39;9621:2;9614:10;9585:113;;;-1:-1:-1;;9732:1:12;9714:16;;9707:27;9490:250::o;9745:287::-;9874:3;9912:6;9906:13;9928:66;9987:6;9982:3;9975:4;9967:6;9963:17;9928:66;:::i;:::-;10010:16;;;;;9745:287;-1:-1:-1;;9745:287:12:o;10037:396::-;10186:2;10175:9;10168:21;10149:4;10218:6;10212:13;10261:6;10256:2;10245:9;10241:18;10234:34;10277:79;10349:6;10344:2;10333:9;10329:18;10324:2;10316:6;10312:15;10277:79;:::i;:::-;10417:2;10396:15;-1:-1:-1;;10392:29:12;10377:45;;;;10424:2;10373:54;;10037:396;-1:-1:-1;;10037:396:12:o","linkReferences":{},"immutableReferences":{"702":[{"start":595,"length":32},{"start":668,"length":32},{"start":827,"length":32},{"start":891,"length":32},{"start":1038,"length":32}]}},"methodIdentifiers":{"VERIFIER_MOCK_ADDRESS()":"83501b21","aggregatedProofs(bytes32)":"27d3bc9a","alignedAggregatorAddress()":"4c46688c","initialize(address,address,address)":"c0c53b8b","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","sp1VerifierAddress()":"294e3ccb","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286","verify(bytes32,bytes32,bytes,bytes)":"fc2b4271"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"OnlyAlignedAggregator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"}],\"name\":\"AggregatedProofVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERIFIER_MOCK_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"aggregatedProofs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"alignedAggregatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_alignedAggregatorAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sp1VerifierAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sp1VerifierAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sp1ProgramVKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sp1PublicValues\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sp1ProofBytes\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is upgraded.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"verify(bytes32,bytes32,bytes,bytes)\":{\"details\":\"This function is called by the aligned proof aggregator after collecting the proofs and aggregating them to be verified on-chain. We expect the blobTransactionHash to be called before\",\"params\":{\"blobVersionedHash\":\"the versioned hash of the blob transaction that contains the leaves that compose the merkle root.\",\"sp1ProgramVKey\":\"Public verifying key\",\"sp1ProofBytes\":\"Groth16 proof\",\"sp1PublicValues\":\"Values used to perform the execution\"}}},\"stateVariables\":{\"sp1VerifierAddress\":{\"details\":\"This can either be a specific SP1Verifier for a specific version, or the SP1VerifierGateway which can be used to verify proofs for any version of SP1. For the list of supported verifiers on each chain, see: https://docs.succinct.xyz/onchain-verification/contract-addresses\"}},\"version\":1},\"userdoc\":{\"events\":{\"AggregatedProofVerified(bytes32,bytes32)\":{\"notice\":\"event that gets emitted after a successful aggregated proof verification\"}},\"kind\":\"user\",\"methods\":{\"VERIFIER_MOCK_ADDRESS()\":{\"notice\":\"whether we are in dev mode or not if the sp1 verifier address is set to this address, then we skip verification\"},\"aggregatedProofs(bytes32)\":{\"notice\":\"Map the merkle root to a boolean to indicate it was verified\"},\"alignedAggregatorAddress()\":{\"notice\":\"The address of the Wallet that is allowed to call the verify function.\"},\"sp1VerifierAddress()\":{\"notice\":\"The address of the SP1 verifier contract.\"},\"verify(bytes32,bytes32,bytes,bytes)\":{\"notice\":\"Method to verify an aggregated proof from aligned\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/AlignedProofAggregationService.sol\":\"AlignedProofAggregationService\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/\",\":@sp1-contracts/=lib/sp1-contracts/contracts/src/\",\":ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/\",\":eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/src/\",\":eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\",\":sp1-contracts/=lib/sp1-contracts/contracts/\"]},\"sources\":{\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2\",\"dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://abfa467c53a0d60b4d09bf04aa952b1d1d44e5766fcc053aace078d7859b8419\",\"dweb:/ipfs/QmebVTZpyNxYfKYTuLMywzEJTdc1Ca8ME4xm3kR9gQgToG\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3\",\"dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo\"]},\"lib/sp1-contracts/contracts/src/ISP1Verifier.sol\":{\"keccak256\":\"0x9e3ba64860bea920772dcf16be7946de2a2900d80bd51e9c0771184138f4f4d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ec7230ca1fdd74edc6ab597d80bb345282aed3f0db4788ed96b4cc373ff46a3\",\"dweb:/ipfs/QmXPuSS5gzxMhFKWr1gsxBVu6WHh53ZZEvWkGgzrkM6Y7Q\"]},\"src/core/AlignedProofAggregationService.sol\":{\"keccak256\":\"0xb717bca806e3531be8d4512ab3bd9b699865defec9e40dcc197076d0359fac3a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://db696a7b65946c85726906e36c7cb359b7f5af9bf819a29a34d26b99037e8f04\",\"dweb:/ipfs/QmPpeDLMYqVWdHEuU3yfGbJ4WUSJyb1bcQnYABFc1LaEbD\"]},\"src/core/IAlignedProofAggregationService.sol\":{\"keccak256\":\"0xe589d4753957ea2e224148fc01869d4ef08555ee39c78c33a0b896ef19e5c14a\",\"urls\":[\"bzz-raw://e05672de9007e7df6aecc70dff6d96dda5ae80a31aa48eb409552447785dc3a2\",\"dweb:/ipfs/QmQZoVcpcFGdA2vFBxB9Eg5aAKja37qs2fUBUNtLkR9Nuo\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"OnlyAlignedAggregator"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32","indexed":false}],"type":"event","name":"AggregatedProofVerified","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"VERIFIER_MOCK_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"aggregatedProofs","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"alignedAggregatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"address","name":"_alignedAggregatorAddress","type":"address"},{"internalType":"address","name":"_sp1VerifierAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"sp1VerifierAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"bytes32","name":"blobVersionedHash","type":"bytes32"},{"internalType":"bytes32","name":"sp1ProgramVKey","type":"bytes32"},{"internalType":"bytes","name":"sp1PublicValues","type":"bytes"},{"internalType":"bytes","name":"sp1ProofBytes","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"verify"}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"verify(bytes32,bytes32,bytes,bytes)":{"details":"This function is called by the aligned proof aggregator after collecting the proofs and aggregating them to be verified on-chain. We expect the blobTransactionHash to be called before","params":{"blobVersionedHash":"the versioned hash of the blob transaction that contains the leaves that compose the merkle root.","sp1ProgramVKey":"Public verifying key","sp1ProofBytes":"Groth16 proof","sp1PublicValues":"Values used to perform the execution"}}},"version":1},"userdoc":{"kind":"user","methods":{"VERIFIER_MOCK_ADDRESS()":{"notice":"whether we are in dev mode or not if the sp1 verifier address is set to this address, then we skip verification"},"aggregatedProofs(bytes32)":{"notice":"Map the merkle root to a boolean to indicate it was verified"},"alignedAggregatorAddress()":{"notice":"The address of the Wallet that is allowed to call the verify function."},"sp1VerifierAddress()":{"notice":"The address of the SP1 verifier contract."},"verify(bytes32,bytes32,bytes,bytes)":{"notice":"Method to verify an aggregated proof from aligned"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/contracts/","@sp1-contracts/=lib/sp1-contracts/contracts/src/","ds-test/=lib/eigenlayer-middleware/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-core-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/core/","eigenlayer-core/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","eigenlayer-middleware/=lib/eigenlayer-middleware/src/","eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/","sp1-contracts/=lib/sp1-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/core/AlignedProofAggregationService.sol":"AlignedProofAggregationService"},"evmVersion":"paris","libraries":{}},"sources":{"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823","urls":["bzz-raw://29dda00da6d269685b555e710e4abf1c3eb6d00c15b888a7880a2f8dd3c4fdc2","dweb:/ipfs/QmSqcjtdECygtT1Gy7uEo42x8542srpgGEeKKHfcnQqXgn"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x6e36e9b4b71de699c2f3f0d4e4d1aa0b35da99a26e8d5b91ef09ba234b4ef270","urls":["bzz-raw://abfa467c53a0d60b4d09bf04aa952b1d1d44e5766fcc053aace078d7859b8419","dweb:/ipfs/QmebVTZpyNxYfKYTuLMywzEJTdc1Ca8ME4xm3kR9gQgToG"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a","urls":["bzz-raw://aedb48081190fa828d243529ce25c708202c7d4ccfe99f0e4ecd6bc0cfcd03f3","dweb:/ipfs/QmWyiDQHPZA56iqsAwTmiJoxvNeRQLUVr4gTfzpdpXivpo"],"license":"MIT"},"lib/sp1-contracts/contracts/src/ISP1Verifier.sol":{"keccak256":"0x9e3ba64860bea920772dcf16be7946de2a2900d80bd51e9c0771184138f4f4d3","urls":["bzz-raw://0ec7230ca1fdd74edc6ab597d80bb345282aed3f0db4788ed96b4cc373ff46a3","dweb:/ipfs/QmXPuSS5gzxMhFKWr1gsxBVu6WHh53ZZEvWkGgzrkM6Y7Q"],"license":"MIT"},"src/core/AlignedProofAggregationService.sol":{"keccak256":"0xb717bca806e3531be8d4512ab3bd9b699865defec9e40dcc197076d0359fac3a","urls":["bzz-raw://db696a7b65946c85726906e36c7cb359b7f5af9bf819a29a34d26b99037e8f04","dweb:/ipfs/QmPpeDLMYqVWdHEuU3yfGbJ4WUSJyb1bcQnYABFc1LaEbD"],"license":"UNLICENSED"},"src/core/IAlignedProofAggregationService.sol":{"keccak256":"0xe589d4753957ea2e224148fc01869d4ef08555ee39c78c33a0b896ef19e5c14a","urls":["bzz-raw://e05672de9007e7df6aecc70dff6d96dda5ae80a31aa48eb409552447785dc3a2","dweb:/ipfs/QmQZoVcpcFGdA2vFBxB9Eg5aAKja37qs2fUBUNtLkR9Nuo"],"license":null}},"version":1},"id":10} \ No newline at end of file diff --git a/explorer/lib/explorer/beacon_client.ex b/explorer/lib/explorer/beacon_client.ex new file mode 100644 index 0000000000..754e5b481e --- /dev/null +++ b/explorer/lib/explorer/beacon_client.ex @@ -0,0 +1,78 @@ +defmodule Explorer.BeaconClient do + require Logger + @beacon_url System.get_env("BEACON_CLIENT") + # See https://eips.ethereum.org/EIPS/eip-4844#parameters + @versioned_hash_version_kzg 0x01 + + def fetch_blob_by_versioned_hash!(slot, blob_versioned_hash) do + {:ok, blobs} = get_block_blobs(slot) + data = Map.get(blobs, "data") + + Enum.find(data, fn blob -> + get_blob_versioned_hash(blob) == blob_versioned_hash + end) + end + + def get_blob_versioned_hash(blob) do + kzg_commitment = String.replace(Map.get(blob, "kzg_commitment"), "0x", "") + kzg_commitment = Base.decode16!(kzg_commitment, case: :mixed) + hash = Explorer.Utils.sha256_hash_raw(kzg_commitment) + # See https://eips.ethereum.org/EIPS/eip-4844#helpers + <<_first::8, rest::binary>> = hash + raw = <<@versioned_hash_version_kzg::8>> <> rest + "0x" <> Base.encode16(raw, case: :lower) + end + + def get_block_slot(beacon_block) do + String.to_integer( + beacon_block + |> Map.get("data") + |> Map.get("header") + |> Map.get("message") + |> Map.get("slot") + ) + end + + def get_block_header_by_hash(block_hash) do + beacon_get("/eth/v1/beacon/headers/#{block_hash}") + end + + def get_block_header_by_parent_hash(parent_block_hash) do + case beacon_get("/eth/v1/beacon/headers?parent_root=#{parent_block_hash}") do + {:ok, header} -> + data = header["data"] |> Enum.at(0) + + {:ok, %{header | "data" => data}} + + other -> + other + end + end + + def get_block_blobs(slot) do + beacon_get("/eth/v1/beacon/blob_sidecars/#{slot}") + end + + defp beacon_get(method) do + headers = [{"Content-Type", "application/json"}] + request = Finch.build(:get, "#{@beacon_url}#{method}", headers) + response = Finch.request(request, Explorer.Finch) + + case response do + {:ok, %Finch.Response{status: 200, body: body}} -> + case Jason.decode(body) do + {:ok, decoded_body} -> + {:ok, decoded_body} + + {:error, _} -> + {:error, :invalid_json} + end + + {:ok, %Finch.Response{status: status}} -> + {:error, status} + + {:error, reason} -> + {:error, reason} + end + end +end diff --git a/explorer/lib/explorer/contract_managers/aligned_layer_service_manager.ex b/explorer/lib/explorer/contract_managers/aligned_layer_service_manager.ex index a3d9d61d92..3aee668ea3 100644 --- a/explorer/lib/explorer/contract_managers/aligned_layer_service_manager.ex +++ b/explorer/lib/explorer/contract_managers/aligned_layer_service_manager.ex @@ -8,6 +8,8 @@ defmodule AlignedLayerServiceManager do "devnet" -> Logger.debug("Running on devnet") "holesky" -> Logger.debug("Running on holesky") "mainnet" -> Logger.debug("Running on mainnet") + "sepolia" -> Logger.debug("Running on sepolia") + "hoodi" -> Logger.debug("Running on hoodi") _ -> Logger.debug("Invalid ENVIRONMENT var in .env") nil -> raise("Invalid ENVIRONMENT var in .env") end @@ -34,13 +36,6 @@ defmodule AlignedLayerServiceManager do |> Map.get("addresses") |> Map.get("alignedLayerServiceManager") - @first_block (case @environment do - "devnet" -> 0 - "holesky" -> 1_728_056 - "mainnet" -> 19_000_000 - _ -> raise("Invalid environment") - end) - use Ethers.Contract, abi_file: "lib/abi/AlignedLayerServiceManager.json", default_address: @aligned_layer_service_manager_address @@ -51,35 +46,45 @@ defmodule AlignedLayerServiceManager do def get_latest_block_number() do {:ok, num} = Ethers.current_block_number() + Logger.info("Latest block number: #{num}") num end def get_new_batch_events(%{fromBlock: fromBlock, toBlock: toBlock}) do + Logger.info("Fetching new batch events from #{fromBlock} to #{toBlock}") events = AlignedLayerServiceManager.EventFilters.new_batch_v3(nil) |> Ethers.get_logs(fromBlock: fromBlock, toBlock: toBlock) case events do {:ok, []} -> + Logger.info("No new batch events found in blocks #{fromBlock}-#{toBlock}") [] {:ok, list} -> + Logger.info("Found #{length(list)} new batch events in blocks #{fromBlock}-#{toBlock}") Enum.map(list, &extract_new_batch_event_info/1) {:error, reason} -> + Logger.error("Error fetching new batch events from #{fromBlock} to #{toBlock}: #{Map.get(reason, "message")}") raise("Error fetching events: #{Map.get(reason, "message")}") end end def extract_new_batch_event_info(event) do + block_number = event |> Map.get(:block_number) + tx_hash = event |> Map.get(:transaction_hash) + Logger.info("Extracting new batch event info for block #{block_number}, tx: #{tx_hash}") + new_batch = parse_new_batch_event(event) + Logger.info("New batch event parsed: #{inspect(new_batch)}") {:ok, %NewBatchInfo{ address: event |> Map.get(:address), - block_number: event |> Map.get(:block_number), - block_timestamp: get_block_timestamp(event |> Map.get(:block_number)), - transaction_hash: event |> Map.get(:transaction_hash), + block_number: block_number, + block_timestamp: get_block_timestamp(block_number), + transaction_hash: tx_hash, new_batch: new_batch }} end @@ -97,29 +102,37 @@ defmodule AlignedLayerServiceManager do } end - def is_batch_responded(merkle_root) do + def is_batch_responded(merkle_root, fromBlock) do event = Utils.string_to_bytes32(merkle_root) |> AlignedLayerServiceManager.EventFilters.batch_verified() - |> Ethers.get_logs(fromBlock: @first_block) + |> Ethers.get_logs(fromBlock: fromBlock) case event do - {:error, reason} -> {:error, reason} - {_, []} -> false - {:ok, _} -> true + {:error, reason} -> + Logger.error("Error checking batch response for #{merkle_root}: #{inspect(reason)}") + {:error, reason} + {_, []} -> + false + {:ok, _events} -> + true end end # for new batches def extract_batch_response({_status, %NewBatchInfo{} = batch_creation}) do created_batch = batch_creation.new_batch - was_batch_responded = is_batch_responded(created_batch.batchMerkleRoot) + was_batch_responded = is_batch_responded(created_batch.batchMerkleRoot, batch_creation.block_number) batch_response = case was_batch_responded do - true -> fetch_batch_response(created_batch.batchMerkleRoot) + true -> + Logger.info("Batch #{created_batch.batchMerkleRoot} was responded, fetching response details") + fetch_batch_response(created_batch.batchMerkleRoot, batch_creation.block_number) # was not verified, fill with nils - false -> %{block_number: nil, transaction_hash: nil, block_timestamp: nil} + false -> + Logger.info("Batch #{created_batch.batchMerkleRoot} was not responded yet") + %{block_number: nil, transaction_hash: nil, block_timestamp: nil} end %BatchDB{ @@ -134,7 +147,7 @@ defmodule AlignedLayerServiceManager do response_timestamp: batch_response.block_timestamp, amount_of_proofs: nil, proof_hashes: nil, - fee_per_proof: BatcherPaymentServiceManager.get_fee_per_proof(%{merkle_root: created_batch.batchMerkleRoot}), + fee_per_proof: BatcherPaymentServiceManager.get_fee_per_proof(%{merkle_root: created_batch.batchMerkleRoot, fromBlock: batch_creation.block_number}), sender_address: Utils.string_to_bytes32(created_batch.senderAddress), max_aggregator_fee: created_batch.maxAggregatorFee, is_valid: true # set to false later if a process determines it is invalid @@ -143,15 +156,17 @@ defmodule AlignedLayerServiceManager do # for existing but unverified batches def extract_batch_response(%Batches{} = unverified_batch) do - was_batch_responded = is_batch_responded(unverified_batch.merkle_root) + was_batch_responded = is_batch_responded(unverified_batch.merkle_root, unverified_batch.submission_block_number) case was_batch_responded do # Do nothing since unverified batch was not yet verified false -> + Logger.info("Unverified batch #{unverified_batch.merkle_root} still not responded") nil true -> - batch_response = fetch_batch_response(unverified_batch.merkle_root) + Logger.info("Unverified batch #{unverified_batch.merkle_root} now responded, updating status") + batch_response = fetch_batch_response(unverified_batch.merkle_root, unverified_batch.submission_block_number) %BatchDB{ merkle_root: unverified_batch.merkle_root, @@ -173,45 +188,59 @@ defmodule AlignedLayerServiceManager do end end - def fetch_batch_response(merkle_root) do - case get_batch_verified_events(%{merkle_root: merkle_root}) do - {:ok, batch_verified_info} -> batch_verified_info - {:empty, _} -> nil - {:error, error} -> raise("Error fetching batch response: #{error}") + def fetch_batch_response(merkle_root, fromBlock) do + case get_batch_verified_events(%{merkle_root: merkle_root, fromBlock: fromBlock}) do + {:ok, batch_verified_info} -> + Logger.info("Successfully fetched batch response for #{merkle_root}") + batch_verified_info + {:empty, _} -> + Logger.info("No batch verified events found for #{merkle_root}") + nil + {:error, error} -> + Logger.error("Error fetching batch response for #{merkle_root}: #{error}") + raise("Error fetching batch response: #{error}") end end - def get_batch_verified_events(%{merkle_root: merkle_root}) do + def get_batch_verified_events(%{merkle_root: merkle_root, fromBlock: fromBlock}) do event = AlignedLayerServiceManager.EventFilters.batch_verified(Utils.string_to_bytes32(merkle_root)) - |> Ethers.get_logs(fromBlock: @first_block) + |> Ethers.get_logs(fromBlock: fromBlock) case event do - {:error, reason} -> {:error, reason} - {_, []} -> {:empty, "No task found"} - {:ok, event} -> extract_batch_verified_event_info(event |> List.first()) + {:error, reason} -> + Logger.error("Error getting batch verified events for #{merkle_root}: #{inspect(reason)}") + {:error, reason} + {_, []} -> + Logger.info("No batch verified events found for #{merkle_root}") + {:empty, "No task found"} + {:ok, events} -> + Logger.info("Found #{length(events)} batch verified events for #{merkle_root}") + extract_batch_verified_event_info(events |> List.first()) end end defp extract_batch_verified_event_info(event) do - batch_merkle_root = event |> Map.get(:topics_raw) |> Enum.at(1) - sender_address = event |> Map.get(:data) |> Enum.at(0) + block_number = event |> Map.get(:block_number) {:ok, %BatchVerifiedInfo{ address: event |> Map.get(:address), - block_number: event |> Map.get(:block_number), - block_timestamp: get_block_timestamp(event |> Map.get(:block_number)), + block_number: block_number, + block_timestamp: get_block_timestamp(block_number), transaction_hash: event |> Map.get(:transaction_hash), - batch_merkle_root: batch_merkle_root, - sender_address: sender_address + batch_merkle_root: event |> Map.get(:topics_raw) |> Enum.at(1), + sender_address: event |> Map.get(:data) |> Enum.at(0) }} end def get_block_timestamp(block_number) do case Ethers.Utils.get_block_timestamp(block_number) do - {:ok, timestamp} -> DateTime.from_unix!(timestamp) - {:error, error} -> raise("Error fetching block timestamp: #{error}") + {:ok, timestamp} -> + DateTime.from_unix!(timestamp) + {:error, error} -> + Logger.error("Error fetching block timestamp for block #{block_number}: #{error}") + raise("Error fetching block timestamp: #{error}") end end @@ -226,8 +255,10 @@ defmodule AlignedLayerServiceManager do end def update_restakeable_strategies() do + Logger.info("Updating restakeable strategies") case AlignedLayerServiceManager.get_restakeable_strategies() |> Ethers.call() do {:ok, restakeable_strategies} -> + Logger.info("Successfully fetched #{length(restakeable_strategies)} restakeable strategies") Strategies.update(restakeable_strategies) {:error, error} -> diff --git a/explorer/lib/explorer/contract_managers/aligned_proof_aggregation_service.ex b/explorer/lib/explorer/contract_managers/aligned_proof_aggregation_service.ex new file mode 100644 index 0000000000..df8141ee97 --- /dev/null +++ b/explorer/lib/explorer/contract_managers/aligned_proof_aggregation_service.ex @@ -0,0 +1,155 @@ +defmodule AlignedProofAggregationService do + require Logger + + @aligned_config_file System.get_env("ALIGNED_PROOF_AGG_CONFIG_FILE") + @verifyRisc0_solidity_signature "0x54687ccf" + @verifySp1_solidity_signature "0xf6e04ac4" + + config_file_path = + case @aligned_config_file do + nil -> raise("ALIGNED_PROOF_AGG_CONFIG_FILE not set in .env") + file -> file + end + + {status, config_json_string} = File.read(config_file_path) + + case status do + :ok -> + Logger.debug("Aligned deployment file read successfully") + + :error -> + raise( + "Config file not read successfully, make sure your .env is correctly created, and make sure Eigenlayer config file is correctly stored" + ) + end + + @contract_address Jason.decode!(config_json_string) + |> Map.get("addresses") + |> Map.get("alignedProofAggregationService") + + use Ethers.Contract, + abi_file: "lib/abi/AlignedProofAggregationService.json", + default_address: @contract_address + + def get_address() do + @contract_address + end + + def get_aggregated_proof_event(%{from_block: fromBlock, to_block: toBlock}) do + events = + AlignedProofAggregationService.EventFilters.aggregated_proof_verified(nil) + |> Ethers.get_logs(fromBlock: fromBlock, toBlock: toBlock) + + case events do + {:ok, []} -> + {:ok, []} + + {:ok, list} -> + {:ok, + Enum.map(list, fn x -> + data = x |> Map.get(:data) + topics_raw = x |> Map.get(:topics_raw) + block_number = x |> Map.get(:block_number) + tx_hash = x |> Map.get(:transaction_hash) + + %{ + merkle_root: + topics_raw + |> Enum.at(1), + blob_versioned_hash: "0x" <> Base.encode16(data |> Enum.at(0), case: :lower), + block_number: block_number, + block_timestamp: get_block_timestamp(block_number), + tx_hash: tx_hash + } + end)} + + {:error, reason} -> + {:error, reason} + end + end + + # From a given aggregated proof event, it fetches the transaction + # and returns the aggregator (:sp1, :risc0) based on the function signature + def get_aggregator!(agg_proof) do + tx_hash = agg_proof.tx_hash + {:ok, tx} = Explorer.EthClient.get_transaction_by_hash(tx_hash) + input = Map.get(tx, "input") + # In solidity, the function signatures are the first 4 bytes of the input + # Note: first two characters are the 0x + function_signature = String.slice(input, 0..9) + + case function_signature do + @verifyRisc0_solidity_signature -> :risc0 + @verifySp1_solidity_signature -> :sp1 + _ -> nil + end + end + + def get_block_timestamp(block_number) do + case Ethers.Utils.get_block_timestamp(block_number) do + {:ok, timestamp} -> DateTime.from_unix!(timestamp) + {:error, error} -> raise("Error fetching block timestamp: #{error}") + end + end + + def get_blob_data!(aggregated_proof) do + {:ok, block} = + Explorer.EthClient.get_block_by_number( + Explorer.Utils.decimal_to_hex(aggregated_proof.block_number) + ) + + parent_beacon_block_hash = Map.get(block, "parentBeaconBlockRoot") + + {:ok, beacon_block} = + Explorer.BeaconClient.get_block_header_by_parent_hash(parent_beacon_block_hash) + + slot = Explorer.BeaconClient.get_block_slot(beacon_block) + + data = + Explorer.BeaconClient.fetch_blob_by_versioned_hash!( + slot, + aggregated_proof.blob_versioned_hash + ) + + Map.get(data, "blob") + end + + @doc """ + Decodes blob data represented as an ASCII charlist. + """ + def decode_blob(blob_data), do: decode_blob(blob_data, [[]], 0, 0, 0) + + defp decode_blob([], acc, _current_count, _total_count, _i), do: acc + + defp decode_blob([head | tail], acc, current_count, total_count, i) do + # Every 64 characters (or 32 bytes) there is a 00 for padding + should_skip = rem(total_count, 64) == 0 + + case should_skip do + true -> + [_head | tail] = tail + decode_blob(tail, acc, current_count, total_count + 2, i) + + false -> + acc = List.update_at(acc, i, fn chunk -> chunk ++ [head] end) + + case current_count + 1 < 64 do + true -> + decode_blob(tail, acc, current_count + 1, total_count + 1, i) + + false -> + current_blob = Enum.at(acc, i) + # 48 is 0 in ascii + is_all_zeroes = Enum.all?(current_blob, fn x -> x == 48 end) + + ## If the hash is all zeroed, then there are no more hashes in the blob + if is_all_zeroes do + # Drop last limiter zeroed element + Enum.drop(acc, -1) + else + decode_blob(tail, acc ++ [[]], 0, total_count + 1, i + 1) + end + end + end + end +end diff --git a/explorer/lib/explorer/contract_managers/batcher_payment_service_manager.ex b/explorer/lib/explorer/contract_managers/batcher_payment_service_manager.ex index 1926310fa2..c2e83e63e2 100644 --- a/explorer/lib/explorer/contract_managers/batcher_payment_service_manager.ex +++ b/explorer/lib/explorer/contract_managers/batcher_payment_service_manager.ex @@ -3,14 +3,6 @@ defmodule BatcherPaymentServiceManager do @aligned_config_file System.get_env("ALIGNED_CONFIG_FILE") - @environment System.get_env("ENVIRONMENT") - @first_block (case @environment do - "devnet" -> 0 - "holesky" -> 1_728_056 - "mainnet" -> 19_000_000 - _ -> raise("Invalid environment") - end) - config_file_path = case @aligned_config_file do nil -> raise("ALIGNED_CONFIG_FILE not set in .env") @@ -41,12 +33,12 @@ defmodule BatcherPaymentServiceManager do @batcher_payment_service_address end - def get_fee_per_proof(%{merkle_root: merkle_root}) do + def get_fee_per_proof(%{merkle_root: merkle_root, fromBlock: fromBlock}) do BatcherPaymentServiceManager.EventFilters.task_created( merkle_root |> Utils.string_to_bytes32() ) - |> Ethers.get_logs(fromBlock: @first_block) + |> Ethers.get_logs(fromBlock: fromBlock) |> case do {:ok, []} -> Logger.warning("No fee per proof events found for merkle root: #{merkle_root}.") @@ -55,7 +47,7 @@ defmodule BatcherPaymentServiceManager do {:ok, events} -> event = events |> hd() fee_per_proof = event.data |> hd() - Logger.debug("Fee per proof of #{merkle_root}: #{fee_per_proof} WEI.") + Logger.info("Fee per proof of #{merkle_root}: #{fee_per_proof} WEI.") fee_per_proof diff --git a/explorer/lib/explorer/contract_managers/delegation_manager.ex b/explorer/lib/explorer/contract_managers/delegation_manager.ex index 0975245ebb..ef0aad9953 100644 --- a/explorer/lib/explorer/contract_managers/delegation_manager.ex +++ b/explorer/lib/explorer/contract_managers/delegation_manager.ex @@ -7,6 +7,8 @@ defmodule DelegationManager do "devnet" -> 0 "holesky" -> 1_210_000 "mainnet" -> 19_000_000 + "sepolia" -> 9_062_616 + "hoodi" -> 1_093_860 _ -> raise("Invalid environment") end) diff --git a/explorer/lib/explorer/eth_client.ex b/explorer/lib/explorer/eth_client.ex new file mode 100644 index 0000000000..4c790374ca --- /dev/null +++ b/explorer/lib/explorer/eth_client.ex @@ -0,0 +1,39 @@ +defmodule Explorer.EthClient do + require Logger + @rpc_url System.get_env("RPC_URL") + + def get_block_by_number(block_number) do + eth_send("eth_getBlockByNumber", [block_number, false]) + end + + def get_transaction_by_hash(tx_hash) do + eth_send("eth_getTransactionByHash", [tx_hash]) + end + + defp eth_send(method, params, id \\ 1) do + headers = [{"Content-Type", "application/json"}] + body = Jason.encode!(%{jsonrpc: "2.0", method: method, params: params, id: id}) + request = Finch.build(:post, @rpc_url, headers, body) + response = Finch.request(request, Explorer.Finch, []) + + case response do + {:ok, %Finch.Response{status: 200, body: body}} -> + case Jason.decode(body) do + {:ok, %{"error" => %{"message" => message}}} -> + {:error, message} + + {:ok, body} -> + {:ok, Map.get(body, "result")} + + {:error, _} -> + {:error, :invalid_json} + end + + {:ok, %Finch.Response{status: status}} -> + {:error, status} + + {:error, reason} -> + {:error, reason} + end + end +end diff --git a/explorer/lib/explorer/models/aggregated_proofs.ex b/explorer/lib/explorer/models/aggregated_proofs.ex new file mode 100644 index 0000000000..df4e87b6c0 --- /dev/null +++ b/explorer/lib/explorer/models/aggregated_proofs.ex @@ -0,0 +1,103 @@ +defmodule AggregatedProofs do + require Logger + use Ecto.Schema + import Ecto.Query + import Ecto.Changeset + + @primary_key {:id, :binary_id, autogenerate: true} + schema "aggregated_proofs" do + field(:merkle_root, :string) + field(:blob_versioned_hash, :string) + field(:block_number, :integer) + field(:block_timestamp, :utc_datetime) + field(:tx_hash, :string) + field(:number_of_proofs, :integer) + field(:aggregator, Ecto.Enum, values: [:sp1, :risc0]) + + has_many(:proofs_agg_mode, AggregationModeProof, + foreign_key: :agg_proof_id, + references: :id + ) + + timestamps() + end + + @doc """ + Creates a changeset based on the given `attrs`. + """ + def changeset(aggregated_proof, attrs) do + aggregated_proof + |> cast(attrs, [ + :id, + :merkle_root, + :blob_versioned_hash, + :block_number, + :block_timestamp, + :tx_hash, + :number_of_proofs, + :aggregator + ]) + |> validate_required([ + :merkle_root, + :blob_versioned_hash, + :block_number, + :block_timestamp, + :tx_hash, + :number_of_proofs + ]) + |> unique_constraint(:id) + end + + def insert_or_update(agg_proof) do + changeset = AggregatedProofs.changeset(%AggregatedProofs{}, agg_proof) + + case Explorer.Repo.get_by(AggregatedProofs, block_number: agg_proof.block_number) do + nil -> + Explorer.Repo.insert(changeset) + + existing_agg_proof -> + "Updating aggregated proof" |> Logger.debug() + + Ecto.Changeset.change(existing_agg_proof, changeset.changes) + |> Explorer.Repo.update() + end + end + + def get_aggregated_proof_by_id(id) do + Explorer.Repo.get_by(AggregatedProofs, id: id) + end + + def get_newest_aggregated_proof_by_merkle_root(merkle_root) do + query = + from(proof in AggregatedProofs, + select: proof, + where: proof.merkle_root == ^merkle_root, + order_by: [desc: proof.block_number], + limit: 1 + ) + + Explorer.Repo.one(query) + end + + def get_paginated_proofs(%{page: page, page_size: size}) do + query = + from(proof in AggregatedProofs, + select: proof, + order_by: [desc: proof.block_number], + limit: ^size, + offset: ^((page - 1) * size) + ) + + Explorer.Repo.all(query) + end + + def get_last_page(page_size) do + total_proofs = Explorer.Repo.aggregate(AggregatedProofs, :count, :id) + last_page = div(total_proofs, page_size) + if rem(total_proofs, page_size) > 0, do: last_page + 1, else: last_page + end + + def get_number_of_agg_proofs() do + Explorer.Repo.aggregate(AggregatedProofs, :count, :id) + end +end diff --git a/explorer/lib/explorer/models/aggregation_mode_proof.ex b/explorer/lib/explorer/models/aggregation_mode_proof.ex new file mode 100644 index 0000000000..07e2ece6e7 --- /dev/null +++ b/explorer/lib/explorer/models/aggregation_mode_proof.ex @@ -0,0 +1,73 @@ +defmodule AggregationModeProof do + require Logger + use Ecto.Schema + import Ecto.Changeset + import Ecto.Query + + # Different from proofs.ex (we could use the same but the hashes are constructed different) + @primary_key {:id, :id, autogenerate: true} + schema "proofs_agg_mode" do + field(:agg_proof_id, :binary_id) + field(:proof_hash, :string) + field(:index, :integer) + + belongs_to(:aggregated_proof, AggregatedProof, + define_field: false, + foreign_key: :agg_proof_id, + references: :id, + type: :binary_id + ) + + timestamps() + end + + def changeset(proof, attrs) do + proof + |> cast(attrs, [:agg_proof_id, :proof_hash, :index]) + |> validate_required([:agg_proof_id, :proof_hash, :index]) + end + + def insert_or_update(proof) do + changeset = + AggregationModeProof.changeset(%AggregationModeProof{}, proof) + + case( + Explorer.Repo.get_by(AggregationModeProof, + agg_proof_id: proof.agg_proof_id, + proof_hash: proof.proof_hash, + index: proof.index + ) + ) do + nil -> + Explorer.Repo.insert(changeset) + + existing_proof -> + "Updating single aggregated proof" |> Logger.debug() + + Ecto.Changeset.change(existing_proof, changeset.changes) + |> Explorer.Repo.update() + end + end + + def get_all_proof_hashes(id) do + query = + from(proof in AggregationModeProof, + select: proof.proof_hash, + where: proof.agg_proof_id == ^id + ) + + Explorer.Repo.all(query) + end + + def get_newest_proof_by_hash(hash) do + query = + from(proof in AggregationModeProof, + select: proof, + where: proof.proof_hash == ^hash, + order_by: [desc: proof.inserted_at], + limit: 1 + ) + + Explorer.Repo.one(query) + end +end diff --git a/explorer/lib/explorer/periodically.ex b/explorer/lib/explorer/periodically.ex index 54f1accc1c..377870e6fa 100644 --- a/explorer/lib/explorer/periodically.ex +++ b/explorer/lib/explorer/periodically.ex @@ -16,9 +16,15 @@ defmodule Explorer.Periodically do one_second = 1000 seconds_in_an_hour = 60 * 60 - :timer.send_interval(one_second * 60, :next_batch_progress) # every minute - :timer.send_interval(one_second * 12, :batches) # every 12 seconds, once per block - :timer.send_interval(one_second * seconds_in_an_hour, :restakings) # every 1 hour + # every minute + :timer.send_interval(one_second * 60, :next_batch_progress) + # every 12 seconds, once per block + :timer.send_interval(one_second * 12, :batches) + # every 1 hour + :timer.send_interval(one_second * seconds_in_an_hour, :restakings) + + # Fetch new aggregated proofs every 1 minute + :timer.send_interval(one_second * 60, :aggregated_proofs) end # Reads and process last blocks for operators and restaking changes @@ -37,13 +43,14 @@ defmodule Explorer.Periodically do def handle_info(:next_batch_progress, state) do Logger.debug("handling block progress timer") - remaining_time = ExplorerWeb.Helpers.get_next_scheduled_batch_remaining_time() + remaining_time = ExplorerWeb.Helpers.get_next_scheduled_batch_remaining_time() + PubSub.broadcast(Explorer.PubSub, "update_views", %{ next_scheduled_batch_remaining_time_percentage: ExplorerWeb.Helpers.get_next_scheduled_batch_remaining_time_percentage(remaining_time), next_scheduled_batch_remaining_time: remaining_time - }) - + }) + {:noreply, state} end @@ -68,6 +75,74 @@ defmodule Explorer.Periodically do {:noreply, %{state | batches_count: new_count}} end + def handle_info(:aggregated_proofs, state) do + # This task runs every hour + # We read a bit more than 300 blocks (1hr) to make sure we don't lose any event + read_block_qty = 310 + latest_block_number = AlignedLayerServiceManager.get_latest_block_number() + read_from_block = max(0, latest_block_number - read_block_qty) + + Task.start(fn -> process_aggregated_proofs(read_from_block, latest_block_number) end) + + {:noreply, state} + end + + def process_aggregated_proofs(from_block, to_block) do + "Processing aggregated proofs from #{from_block} to #{to_block}" |> Logger.debug() + + {:ok, proofs} = + AlignedProofAggregationService.get_aggregated_proof_event(%{ + from_block: from_block, + to_block: to_block + }) + + blob_data = + proofs + |> Enum.map(&AlignedProofAggregationService.get_blob_data!/1) + + proof_hashes = + blob_data + |> Enum.map(fn x -> + AlignedProofAggregationService.decode_blob( + to_charlist(String.replace_prefix(x, "0x", "")) + ) + end) + + # Store aggregated proofs to db + proofs = + proofs + |> Enum.zip(proof_hashes) + |> Enum.map(fn {agg_proof, hashes} -> + aggregator = AlignedProofAggregationService.get_aggregator!(agg_proof) + + agg_proof = + agg_proof + |> Map.merge(%{aggregator: aggregator}) + |> Map.merge(%{number_of_proofs: length(hashes)}) + + {:ok, %{id: id}} = AggregatedProofs.insert_or_update(agg_proof) + + Map.merge(agg_proof, %{id: id}) + end) + + # Store each individual proof + proofs + |> Enum.zip(proof_hashes) + |> Enum.each(fn {agg_proof, hashes} -> + hashes + |> Enum.with_index() + |> Enum.each(fn {hash, index} -> + AggregationModeProof.insert_or_update(%{ + agg_proof_id: agg_proof.id, + proof_hash: "0x" <> List.to_string(hash), + index: index + }) + end) + end) + + "Done processing aggregated proofs from #{from_block} to #{to_block}" |> Logger.debug() + end + def process_batches(fromBlock, toBlock) do "Processing from block #{fromBlock} to block #{toBlock}..." |> Logger.debug() @@ -108,6 +183,7 @@ defmodule Explorer.Periodically do else {:error, reason} -> Logger.error("Error processing batch #{batch.merkle_root}. Error: #{inspect(reason)}") + # no changes in DB nil -> nil diff --git a/explorer/lib/explorer/utils.ex b/explorer/lib/explorer/utils.ex new file mode 100644 index 0000000000..4f3c1fd7db --- /dev/null +++ b/explorer/lib/explorer/utils.ex @@ -0,0 +1,15 @@ +defmodule Explorer.Utils do + def sha256_hash(data) do + ## Base 16 encoder needed as crypto.hash returns raw bytes + :crypto.hash(:sha256, data) |> Base.encode16(case: :lower) + end + + ## Returns hash raw bytes + def sha256_hash_raw(data) do + :crypto.hash(:sha256, data) + end + + def decimal_to_hex(number) do + "0x#{Integer.to_string(number, 16)}" + end +end diff --git a/explorer/lib/explorer_web/components/agg_proofs_table.ex b/explorer/lib/explorer_web/components/agg_proofs_table.ex new file mode 100644 index 0000000000..dede000a55 --- /dev/null +++ b/explorer/lib/explorer_web/components/agg_proofs_table.ex @@ -0,0 +1,61 @@ +defmodule ExplorerWeb.AggProofsTable do + use Phoenix.Component + use ExplorerWeb, :live_component + + attr(:agg_proofs, :list, required: true) + + def agg_proofs_table(assigns) do + ~H""" + <.table id="agg_proofs" rows={@agg_proofs}> + <:col :let={proof} label="Merkle root" class="text-left"> + <.link navigate={~p"/aggregated_proofs/#{proof.id}"}> + + <%= Helpers.shorten_hash(proof.merkle_root, 6) %> + <.right_arrow /> + <.tooltip> + <%= proof.merkle_root %> + + + + + <:col :let={proof} label="Age"> + + <%= proof.age %> + + + <:col :let={proof} label="Block Number"> + <%= proof.block_number |> Helpers.format_number() %> + + + <:col :let={proof} label="Blob versioned hash" class="text-left"> + <.a href={ + "#{Helpers.get_blobscan_url()}/blob/#{proof.blob_versioned_hash}"} + class="inline-flex gap-x-3 items-center group-hover:text-foreground/80 no-underline font-normal" + > + + <%= Helpers.shorten_hash(proof.blob_versioned_hash, 6) %> + <.tooltip> + <%= proof.blob_versioned_hash %> + + + + + + <:col :let={proof} label="Number of proofs"> + <%= proof.number_of_proofs |> Helpers.format_number() %> + + + <:col :let={proof} label="Aggregator"> + <%= case proof.aggregator do %> + <% :sp1 -> %> + SP1 + <% :risc0 -> %> + RISC0 + <% _ -> %> + Unknown + <% end %> + + + """ + end +end diff --git a/explorer/lib/explorer_web/components/contracts.ex b/explorer/lib/explorer_web/components/contracts.ex index 48652bf215..358b1e278b 100644 --- a/explorer/lib/explorer_web/components/contracts.ex +++ b/explorer/lib/explorer_web/components/contracts.ex @@ -8,38 +8,54 @@ defmodule ContractsComponent do def mount(socket) do addresses = Helpers.get_aligned_contracts_addresses() + proof_aggregator_service = + case Helpers.is_mainnet() do + true -> + [] + + false -> + [ + %{ + contract_name: "AlignedProofAggregationService", + address: addresses["alignedProofAggregationService"] + } + ] + end + {:ok, assign(socket, - contracts: [ - %{ - contract_name: "AlignedServiceManager", - address: addresses["alignedLayerServiceManager"] - }, - %{ - contract_name: "BatcherPaymentService", - address: addresses["batcherPaymentService"] - }, - %{ - contract_name: "BlsApkRegistry", - address: addresses["blsApkRegistry"] - }, - %{ - contract_name: "IndexRegistry", - address: addresses["indexRegistry"] - }, - %{ - contract_name: "OperatorStateRetriever", - address: addresses["operatorStateRetriever"] - }, - %{ - contract_name: "RegistryCoordinator", - address: addresses["registryCoordinator"] - }, - %{ - contract_name: "StakeRegistry", - address: addresses["stakeRegistry"] - } - ] + contracts: + proof_aggregator_service ++ + [ + %{ + contract_name: "AlignedServiceManager", + address: addresses["alignedLayerServiceManager"] + }, + %{ + contract_name: "BatcherPaymentService", + address: addresses["batcherPaymentService"] + }, + %{ + contract_name: "BlsApkRegistry", + address: addresses["blsApkRegistry"] + }, + %{ + contract_name: "IndexRegistry", + address: addresses["indexRegistry"] + }, + %{ + contract_name: "OperatorStateRetriever", + address: addresses["operatorStateRetriever"] + }, + %{ + contract_name: "RegistryCoordinator", + address: addresses["registryCoordinator"] + }, + %{ + contract_name: "StakeRegistry", + address: addresses["stakeRegistry"] + } + ] )} end diff --git a/explorer/lib/explorer_web/components/core_components.ex b/explorer/lib/explorer_web/components/core_components.ex index e9b93e9c83..d7b6ca29a7 100644 --- a/explorer/lib/explorer_web/components/core_components.ex +++ b/explorer/lib/explorer_web/components/core_components.ex @@ -497,6 +497,39 @@ defmodule ExplorerWeb.CoreComponents do """ end + @doc """ + Renders a dynamic badge component for the batcher. + """ + attr(:class, :string, default: nil) + attr(:status, :integer) + slot(:inner_block, default: nil) + + def dynamic_badge_for_agg_proof(assigns) do + ~H""" + <.badge + variant={ + case @status do + 0 -> "accent" + 1 -> "destructive" + 2 -> "foreground" + end + } + class={ + classes([ + @class + ]) + } + > + <%= case @status do + 0 -> "Verified" + 1 -> "Failed" + 2 -> "Missed" + end %> + <%= render_slot(@inner_block) %> + + """ + end + @doc """ Renders a selector dropdown on hover component with buttons that trigger actions on click. diff --git a/explorer/lib/explorer_web/components/footer.ex b/explorer/lib/explorer_web/components/footer.ex index 44cfac3d9d..57d1eafa12 100644 --- a/explorer/lib/explorer_web/components/footer.ex +++ b/explorer/lib/explorer_web/components/footer.ex @@ -9,6 +9,7 @@ defmodule FooterComponent do {"General", [ {"Batches", "/batches"}, + {"Aggregation", "/aggregated_proofs"}, {"Operators", "/operators"}, {"Restake", "/restaked"} ]}, diff --git a/explorer/lib/explorer_web/components/nav.ex b/explorer/lib/explorer_web/components/nav.ex index ff29adb71a..f613a7ed3b 100644 --- a/explorer/lib/explorer_web/components/nav.ex +++ b/explorer/lib/explorer_web/components/nav.ex @@ -5,9 +5,11 @@ defmodule NavComponent do Helpers.get_aligned_networks() |> Enum.filter(fn {name, _link} -> case current_network do - # Filter dev networks if we are in mainnet or holesky - "Mainnet" -> name in ["Mainnet", "Holesky"] - "Holesky" -> name in ["Mainnet", "Holesky"] + # Filter dev networks if we are in mainnet, holesky, sepolia, or hoodi + "Mainnet" -> name in ["Mainnet", "Holesky", "Sepolia", "Hoodi"] + "Holesky" -> name in ["Mainnet", "Holesky", "Sepolia", "Hoodi"] + "Sepolia" -> name in ["Mainnet", "Holesky", "Sepolia", "Hoodi"] + "Hoodi" -> name in ["Mainnet", "Holesky", "Sepolia", "Hoodi"] _ -> true end end) @@ -27,155 +29,208 @@ defmodule NavComponent do @impl true def render(assigns) do ~H""" - + """ + end + + @doc """ + Renders a dropdown on hover component with links. + """ + attr(:title, :string, doc: "the selector title") + attr(:class, :list, doc: "class for selector") + attr(:links, :list, doc: "the links to render: (name, link, class)") + + def nav_links_dropdown(assigns) do + ~H""" +
+
+

<%= @title %>

+
+ +
+
+ <%= for {name, route, class} <- @links do %> <.link class={ - active_view_class(assigns.socket.view, [ - ExplorerWeb.Restakes.Index, - ExplorerWeb.Restake.Index + classes([ + "group/link text-card-foreground w-full flex items-center justify-between", + class ]) } - navigate={~p"/restaked"} + navigate={route} > - Restaked - - <.link class="hover:text-foreground" target="_blank" href="https://docs.alignedlayer.com"> - Docs + <%= name %> - <.link - class="hover:text-foreground" - target="_blank" - href="https://github.com/yetanotherco/aligned_layer" - > - GitHub - -
+ <% end %>
- - + """ end diff --git a/explorer/lib/explorer_web/components/search.ex b/explorer/lib/explorer_web/components/search.ex index 7babfcbd5d..2b0cdd82b7 100644 --- a/explorer/lib/explorer_web/components/search.ex +++ b/explorer/lib/explorer_web/components/search.ex @@ -1,24 +1,44 @@ defmodule SearchComponent do + require Logger use ExplorerWeb, :live_component @impl true - def handle_event("search_batch", %{"batch" => %{"merkle_root" => input_hash}}, socket) do - input_hash + def handle_event("search_batch", %{"search" => search}, socket) do + search |> (fn hash -> if String.match?(hash, ~r/^0x[a-fA-F0-9]+$/), do: {:ok, hash}, else: :invalid_hash end).() |> case do {:ok, hash} -> - case Proofs.get_number_of_batches_containing_proof(hash) do - 0 -> {:noreply, push_navigate(socket, to: ~p"/batches/#{hash}")} - _ -> {:noreply, push_navigate(socket, to: ~p"/search?q=#{hash}")} + cond do + # See if the hash belongs to a proof in a batch + # If so, redirect to search to show all the batches where this proofs exists + Proofs.get_number_of_batches_containing_proof(hash) > 0 -> + {:noreply, push_navigate(socket, to: ~p"/search?q=#{hash}")} + + # See if the hash belongs to the root of a batch + Batches.get_batch(%{merkle_root: hash}) != nil -> + {:noreply, push_navigate(socket, to: ~p"/batches/#{hash}")} + + # See if the hash belongs to an aggregated proof merkle root + (proof = AggregatedProofs.get_newest_aggregated_proof_by_merkle_root(hash)) != nil -> + {:noreply, push_navigate(socket, to: ~p"/aggregated_proofs/#{proof.id}")} + + # Finally, see if the hash belongs to a proof of an aggregated proof + (proof = AggregationModeProof.get_newest_proof_by_hash(hash)) != nil -> + {:noreply, push_navigate(socket, to: ~p"/aggregated_proofs/#{proof.agg_proof_id}")} + + # Otherwise inform the user nothing was found + true -> + {:noreply, + socket + |> put_flash!(:error, "No batch or proof was found with the provided hash.")} end :invalid_hash -> {:noreply, socket - |> assign(batch_merkle_root: input_hash) - |> put_flash!(:error, "Please enter a valid proof batch hash (0x69...).")} + |> put_flash!(:error, "Please enter a valid hash (0x69...).")} end end @@ -42,8 +62,8 @@ defmodule SearchComponent do id={"input_#{assigns.id}"} class="pr-10 w-full text-foreground rounded-lg border-foreground/20 bg-card focus:border-foreground/20 focus:ring-accent text-sm" type="search" - placeholder="Search batch by batch hash or proof hash" - name="batch[merkle_root]" + placeholder="Search by batch hash or proof hash" + name="search" /> <.icon name="hero-magnifying-glass-solid" class="absolute right-3 text-foreground/20 size-5 hover:text-foreground" /> diff --git a/explorer/lib/explorer_web/live/pages/agg_proof/index.ex b/explorer/lib/explorer_web/live/pages/agg_proof/index.ex new file mode 100644 index 0000000000..73f525036d --- /dev/null +++ b/explorer/lib/explorer_web/live/pages/agg_proof/index.ex @@ -0,0 +1,30 @@ +defmodule ExplorerWeb.AggProof.Index do + require Logger + use ExplorerWeb, :live_view + + @impl true + def mount(%{"id" => id}, _, socket) do + agg_proof = + AggregatedProofs.get_aggregated_proof_by_id(id) + + { + :ok, + assign( + socket, + agg_proof: agg_proof, + proof_hashes: :empty + ) + } + end + + @impl true + def handle_event("show_proofs", _value, socket) do + proofs = AggregationModeProof.get_all_proof_hashes(socket.assigns.agg_proof.id) + {:noreply, assign(socket, proof_hashes: proofs)} + end + + @impl true + def handle_event("hide_proofs", _value, socket) do + {:noreply, assign(socket, proof_hashes: :empty)} + end +end diff --git a/explorer/lib/explorer_web/live/pages/agg_proof/index.html.heex b/explorer/lib/explorer_web/live/pages/agg_proof/index.html.heex new file mode 100644 index 0000000000..a7dceae88c --- /dev/null +++ b/explorer/lib/explorer_web/live/pages/agg_proof/index.html.heex @@ -0,0 +1,141 @@ +
+ <%= if @agg_proof != :empty do %> + <.card_preheding class="text-4xl sm:text-5xl font-bold font-foreground"> + Aggregated proof details + + <.card + class="relative px-4 py-5 min-h-fit flex flex-col" + inner_class="font-semibold inline-flex flex-col text-base gap-y-4 text-muted-foreground [&>div>p]:text-foreground [&>div>a]:text-foreground [&>div>*]:break-all [&>div>*]:font-normal [&>div]:flex [&>div]:flex-col [&>div]:lg:flex-row [&>div>h3]:basis-1/4" + > +
+

+ Merkle root: +

+

+ <%= @agg_proof.merkle_root %> + <.live_component + module={CopyToClipboardButtonComponent} + text_to_copy={@agg_proof.merkle_root} + id={"copy_batch_hash_#{@agg_proof.merkle_root}"} + class="inline-flex" + /> +

+
+ +
+

+ Aggregator: +

+ <%= case @agg_proof.aggregator do %> + <% :sp1 -> %> +

SP1

+ <% :risc0 -> %> +

RISC0

+ <% _ -> %> +

Unknown

+ <% end %> +
+ +
+

+ Number of Proofs included: +

+

<%= @agg_proof.number_of_proofs %>

+
+ +
+

+ Proofs included: +

+ <%= if @proof_hashes != :empty do %> + <%= if @proof_hashes == :nil do %> +

+ Proofs couldn't be shown for this aggregated proof +

+ <% else %> +
+
+

+ <%= proof %> + <.live_component + module={CopyToClipboardButtonComponent} + text_to_copy={proof} + id={"copy_proof_batch_hash_#{proof}_#{Utils.random_id("cp_#{index}")}"} + class="inline-flex" + /> +

+
+ <.button class="w-fit text-foreground" phx-click="hide_proofs"> + <.icon name="hero-eye-slash" class="size-4" /> Hide Proofs + +
+ <% end %> + <% else %> + <.button class="w-fit text-foreground font-semibold" phx-click="show_proofs"> + <.icon name="hero-eye" class="size-4" /> Show Proofs + + <% end %> +
+ <.divider /> +
+

+ Block Number: +

+ <.a + target="_blank" + rel="noopener" + href={ + "#{Helpers.get_etherescan_url()}/block/#{@agg_proof.block_number}" + } + class="hover:text-foreground/80" + > + <%= @agg_proof.block_number |> Helpers.format_number() %> + +
+
+

+ Transaction Hash: +

+ <.a + target="_blank" + rel="noopener" + href={"#{Helpers.get_etherescan_url()}/tx/#{@agg_proof.tx_hash}"} + class="hover:text-foreground/80" + > + <%= @agg_proof.tx_hash %> + +
+ +
+

+ Blob versioned hash: +

+ <.a + target="_blank" + rel="noopener" + href={"#{Helpers.get_blobscan_url()}/blob/#{@agg_proof.blob_versioned_hash}"} + class="hover:text-foreground/80" + > + <%= @agg_proof.blob_versioned_hash %> + +
+ + <% else %> +
+

Oops!

+

+ The aggregated proof you are looking for
doesn't exist. +

+ block not found + <.link navigate={~p"/"}> + <.button> + Go Home + + +
+ <% end %> +
diff --git a/explorer/lib/explorer_web/live/pages/agg_proofs/index.ex b/explorer/lib/explorer_web/live/pages/agg_proofs/index.ex new file mode 100644 index 0000000000..27e1cb6d73 --- /dev/null +++ b/explorer/lib/explorer_web/live/pages/agg_proofs/index.ex @@ -0,0 +1,52 @@ +defmodule ExplorerWeb.AggProofs.Index do + require Logger + import ExplorerWeb.AggProofsTable + use ExplorerWeb, :live_view + + @page_size 15 + + @impl true + def mount(params, _, socket) do + current_page = get_current_page(params) + + proofs = + AggregatedProofs.get_paginated_proofs(%{ + page: current_page, + page_size: @page_size + }) + |> Enum.map(fn proof -> + proof |> Map.merge(%{age: proof.block_timestamp |> Helpers.parse_timeago()}) + end) + + { + :ok, + assign( + socket, + proofs: proofs, + current_page: current_page, + last_page: AggregatedProofs.get_last_page(@page_size) + ) + } + end + + @impl true + def handle_event("change_page", %{"page" => page}, socket) do + {:noreply, push_navigate(socket, to: ~p"/aggregated_proofs?page=#{page}")} + end + + defp get_current_page(params) do + case params |> Map.get("page") do + nil -> + 1 + + page -> + case Integer.parse(page) do + {number, _} -> + if number < 1, do: 1, else: number + + :error -> + 1 + end + end + end +end diff --git a/explorer/lib/explorer_web/live/pages/agg_proofs/index.html.heex b/explorer/lib/explorer_web/live/pages/agg_proofs/index.html.heex new file mode 100644 index 0000000000..3a73b6786c --- /dev/null +++ b/explorer/lib/explorer_web/live/pages/agg_proofs/index.html.heex @@ -0,0 +1,64 @@ +
+ <.card_preheding>Aggregation + <%= if @proofs != :empty and @proofs != [] do %> + <.card_background class="w-full overflow-x-auto sm:col-span-2"> + <.agg_proofs_table agg_proofs={@proofs} /> + + <% else %> + <.empty_card_background text="No aggregated proofs To Display." class="sm:col-span-2" /> + <% end %> +
+ <%= if @current_page >= 2 do %> + <.link navigate={~p"/aggregated_proofs?page=#{1}"}> + <.button class="text-muted-foreground group"> + First + + + <% end %> + <%= if @current_page > 1 do %> + <.link navigate={~p"/aggregated_proofs?page=#{@current_page - 1}"}> + <.button + icon="arrow-right-solid" + icon_class="group-hover:translate-x-1 transition-all duration-150" + class="text-muted-foreground size-10 group rotate-180" + > + Previous Page + + + <% end %> +
+ + +
+ <%= if @current_page != @last_page do %> + <.link navigate={~p"/aggregated_proofs?page=#{@current_page + 1}"}> + <.button + icon="arrow-right-solid" + icon_class="group-hover:translate-x-1 transition-all duration-150" + class="text-muted-foreground size-10 group" + > + Next Page + + + <.link navigate={~p"/aggregated_proofs?page=#{@last_page}"}> + <.button class="text-muted-foreground group"> + Last + + + <% end %> +
+
diff --git a/explorer/lib/explorer_web/live/pages/home/index.ex b/explorer/lib/explorer_web/live/pages/home/index.ex index 727f213d2d..2d3dd56527 100644 --- a/explorer/lib/explorer_web/live/pages/home/index.ex +++ b/explorer/lib/explorer_web/live/pages/home/index.ex @@ -6,6 +6,7 @@ defmodule ExplorerWeb.Home.Index do def get_stats() do verified_batches = Batches.get_amount_of_verified_batches() + aggregated_proofs = AggregatedProofs.get_number_of_agg_proofs() avg_fee_per_proof = Batches.get_avg_fee_per_proof() avg_fee_per_proof_usd = @@ -38,6 +39,21 @@ defmodule ExplorerWeb.Home.Index do operator_latest_release = ReleasesHelper.get_latest_release() + # Only show aggregated proof stat for testnet + aggregated_proof_stat = + if !ExplorerWeb.Helpers.is_mainnet() do + [ + %{ + title: "Aggregated proofs", + value: aggregated_proofs, + tooltip_text: nil, + link: "/aggregated_proofs" + } + ] + else + [] + end + [ %{ title: "Proofs verified", @@ -58,30 +74,33 @@ defmodule ExplorerWeb.Home.Index do _ -> nil end, link: nil - }, - %{ - title: "AVG proof cost", - value: "#{avg_fee_per_proof_usd} USD", - tooltip_text: "~= #{avg_fee_per_proof_eth} ETH", - link: nil - }, - %{ - title: "Operators", - value: operators_registered, - tooltip_text: "Current version #{operator_latest_release}", - link: "/operators" - }, - %{ - title: "Total restaked", - value: "#{restaked_amount_usd_shorthand} USD", - # Using HTML.raw to break paragraph line with
- tooltip_text: - Phoenix.HTML.raw( - "= #{Helpers.format_number(restaked_amount_usd)} USD
~= #{restaked_amount_eth} ETH" - ), - link: "/restaked" } - ] + ] ++ + aggregated_proof_stat ++ + [ + %{ + title: "AVG proof cost", + value: "#{avg_fee_per_proof_usd} USD", + tooltip_text: "~= #{avg_fee_per_proof_eth} ETH", + link: nil + }, + %{ + title: "Operators", + value: operators_registered, + tooltip_text: "Current version #{operator_latest_release}", + link: "/operators" + }, + %{ + title: "Total restaked", + value: "#{restaked_amount_usd_shorthand} USD", + # Using HTML.raw to break paragraph line with
+ tooltip_text: + Phoenix.HTML.raw( + "= #{Helpers.format_number(restaked_amount_usd)} USD
~= #{restaked_amount_eth} ETH" + ), + link: "/restaked" + } + ] end def get_cost_per_proof_chart_data(amount) do diff --git a/explorer/lib/explorer_web/live/pages/search/index.ex b/explorer/lib/explorer_web/live/pages/search/index.ex index ad5abf20a4..37d83cb41a 100644 --- a/explorer/lib/explorer_web/live/pages/search/index.ex +++ b/explorer/lib/explorer_web/live/pages/search/index.ex @@ -52,25 +52,27 @@ defmodule ExplorerWeb.Search.Index do Search Results for "<%= @hash |> Helpers.shorten_hash() %>" <%= if @results != nil or @results != [] do %> - <.table id="results" rows={@results}> - <:col :let={result} label="Batch Hash" class="text-left"> - <.link - navigate={~p"/batches/#{result}"} - class="flex justify-between group group-hover:text-foreground/80" - > - - - <%= result |> Helpers.shorten_hash(12) %> - - <.right_arrow /> - <.tooltip> - <%= result %> - - - - + <.card_background> + <.table id="results" rows={@results}> + <:col :let={result} label="Batch Hash" class="text-left"> + <.link + navigate={~p"/batches/#{result}"} + class="flex justify-between group group-hover:text-foreground/80" + > + + + <%= result |> Helpers.shorten_hash(12) %> + + <.right_arrow /> + <.tooltip> + <%= result %> + + + + +
<%= if @current_page != 1 do %> <.link patch={~p"/search?q=#{@hash}&page=#{@current_page - 1}"}> diff --git a/explorer/lib/explorer_web/live/utils.ex b/explorer/lib/explorer_web/live/utils.ex index c11aae9007..fd0ab8fd2f 100644 --- a/explorer/lib/explorer_web/live/utils.ex +++ b/explorer/lib/explorer_web/live/utils.ex @@ -102,6 +102,15 @@ defmodule ExplorerWeb.Helpers do Integer.to_string(value) |> String.pad_leading(2, "0") end + def is_mainnet() do + prefix = System.get_env("ENVIRONMENT") + + case prefix do + "mainnet" -> true + _ -> false + end + end + @doc """ Get the EigenLayer Explorer URL based on the environment. - `holesky` -> https://holesky.eigenlayer.xyz @@ -114,6 +123,8 @@ defmodule ExplorerWeb.Helpers do case prefix do "holesky" -> "https://holesky.eigenlayer.xyz" "mainnet" -> "https://app.eigenlayer.xyz" + "sepolia" -> "https://sepolia.eigenlayer.xyz" + "hoodi" -> "https://hoodi.eigenlayer.xyz" _ -> "http://localhost:4000" end end @@ -125,6 +136,8 @@ defmodule ExplorerWeb.Helpers do [ {"Mainnet", "https://explorer.alignedlayer.com"}, {"Holesky", "https://holesky.explorer.alignedlayer.com"}, + {"Sepolia", "https://sepolia.explorer.alignedlayer.com"}, + {"Hoodi", "https://hoodi.explorer.alignedlayer.com"}, {"Stage", "https://stage.explorer.alignedlayer.com"}, {"Devnet", "http://localhost:4000/"} ] @@ -134,6 +147,8 @@ defmodule ExplorerWeb.Helpers do case host do "explorer.alignedlayer.com" -> "Mainnet" "holesky.explorer.alignedlayer.com" -> "Holesky" + "sepolia.explorer.alignedlayer.com" -> "Sepolia" + "hoodi.explorer.alignedlayer.com" -> "Hoodi" "stage.explorer.alignedlayer.com" -> "Stage" _ -> "Devnet" end @@ -151,11 +166,41 @@ defmodule ExplorerWeb.Helpers do case prefix do "mainnet" -> "https://etherscan.io" "holesky" -> "https://holesky.etherscan.io" + "sepolia" -> "https://sepolia.etherscan.io" + "hoodi" -> "https://hoodi.etherscan.io" + _ -> "http://localhost:4000" + end + end + + @doc """ + Get the Etherscan URL based on the environment. + - `holesky` -> https://holesky.etherscan.io + - `mainnet` -> https://etherscan.io + - `default` -> http://localhost:4000 + """ + def get_blobscan_url() do + prefix = System.get_env("ENVIRONMENT") + + case prefix do + "mainnet" -> "https://blobscan.com/" + "holesky" -> "https://holesky.blobscan.com/" + "sepolia" -> "https://sepolia.blobscan.com/" + "hoodi" -> "https://hoodi.blobscan.com/" _ -> "http://localhost:4000" end end def get_aligned_contracts_addresses() do + Map.merge(get_verification_layer_addresses(), get_proof_aggregation_addresses()) + end + + defp get_proof_aggregation_addresses() do + proof_agg_config_file = System.get_env("ALIGNED_PROOF_AGG_CONFIG_FILE") + {_, config_json_string} = File.read(proof_agg_config_file) + Jason.decode!(config_json_string) |> Map.get("addresses") + end + + defp get_verification_layer_addresses() do aligned_config_file = System.get_env("ALIGNED_CONFIG_FILE") {_, config_json_string} = File.read(aligned_config_file) Jason.decode!(config_json_string) |> Map.get("addresses") @@ -226,24 +271,40 @@ defmodule Utils do _ -> 268_435_456 end) + @max_batch_urls 5 + @batcher_submission_gas_cost Application.compile_env(:explorer, :batcher_submission_gas_cost) @aggregator_gas_cost Application.compile_env(:explorer, :aggregator_gas_cost) - @aggregator_fee_percentage_multiplier Application.compile_env(:explorer, :aggregator_fee_percentage_multiplier) + @aggregator_fee_percentage_multiplier Application.compile_env( + :explorer, + :aggregator_fee_percentage_multiplier + ) @percentage_divider Application.compile_env(:explorer, :percentage_divider) - @additional_submission_gas_cost_per_proof Application.compile_env(:explorer, :additional_submission_gas_cost_per_proof) + @additional_submission_gas_cost_per_proof Application.compile_env( + :explorer, + :additional_submission_gas_cost_per_proof + ) def scheduled_batch_interval() do default_value = 10 + case System.get_env("SCHEDULED_BATCH_INTERVAL_MINUTES") do nil -> - Logger.warning("SCHEDULED_BATCH_INTERVAL_MINUTES .env var is not set, using default value: #{default_value}") + Logger.warning( + "SCHEDULED_BATCH_INTERVAL_MINUTES .env var is not set, using default value: #{default_value}" + ) + default_value + value -> try do String.to_integer(value) rescue ArgumentError -> - Logger.warning("Invalid SCHEDULED_BATCH_INTERVAL_MINUTES .env var: #{value}, using default value: #{default_value}") + Logger.warning( + "Invalid SCHEDULED_BATCH_INTERVAL_MINUTES .env var: #{value}, using default value: #{default_value}" + ) + default_value end end @@ -286,7 +347,7 @@ defmodule Utils do def calculate_proof_hashes(deserialized_batch) do deserialized_batch |> Enum.map(fn s3_object -> - ExKeccak.hash_256(:erlang.list_to_binary(s3_object["proof"])) + ExKeccak.hash_256(s3_object["proof"].value) end) end @@ -313,6 +374,42 @@ defmodule Utils do end end + # fetch_batch_data_pointer_with_multiple_urls tries multiple comma-separated URLs until first successful response + def fetch_batch_data_pointer_with_multiple_urls(batch_data_pointers) do + # Parse comma-separated URLs and limit to max 5 + urls = parse_batch_urls(batch_data_pointers) + + errors = [] + + # Try each URL until first successful response + try_urls(urls, errors) + end + + # parse_batch_urls parses comma-separated URLs and limits to max 5 + defp parse_batch_urls(batch_data_pointers) do + batch_data_pointers + |> String.split(",") + |> Enum.map(&String.trim/1) + |> Enum.filter(fn url -> url != "" end) + |> Enum.take(@max_batch_urls) + end + + # try_urls attempts to fetch from each URL until success + defp try_urls([], errors) do + # All URLs failed + {:error, {:all_urls_failed, Enum.reverse(errors)}} + end + + defp try_urls([url | remaining_urls], errors) do + case fetch_batch_data_pointer(url) do + {:ok, data} -> + {:ok, data} + {:error, reason} -> + new_errors = ["URL #{url}: #{inspect(reason)}" | errors] + try_urls(remaining_urls, new_errors) + end + end + def fetch_batch_data_pointer(batch_data_pointer) do case Finch.build(:get, batch_data_pointer) |> Finch.stream_while(Explorer.Finch, {"", 0}, &stream_handler(&1, &2)) do @@ -410,7 +507,7 @@ defmodule Utils do nil -> Logger.debug("Fetching from S3") - batch_content = batch.data_pointer |> Utils.fetch_batch_data_pointer() + batch_content = batch.data_pointer |> Utils.fetch_batch_data_pointer_with_multiple_urls() case batch_content do {:ok, batch_content} -> @@ -457,8 +554,8 @@ defmodule Utils do def constant_batch_submission_gas_cost() do trunc( @aggregator_gas_cost * @aggregator_fee_percentage_multiplier / - @percentage_divider + - @batcher_submission_gas_cost + @percentage_divider + + @batcher_submission_gas_cost ) end diff --git a/explorer/lib/explorer_web/router.ex b/explorer/lib/explorer_web/router.ex index ca855d46ca..5a7c5381e7 100644 --- a/explorer/lib/explorer_web/router.ex +++ b/explorer/lib/explorer_web/router.ex @@ -47,6 +47,8 @@ defmodule ExplorerWeb.Router do live "/", Home.Index live "/batches/:merkle_root", Batch.Index live "/batches", Batches.Index + live "/aggregated_proofs", AggProofs.Index + live "/aggregated_proofs/:id", AggProof.Index live "/restaked", Restakes.Index live "/restaked/:address", Restake.Index live "/operators", Operators.Index diff --git a/explorer/mix.lock b/explorer/mix.lock index 17f684b6a1..8a217d3ce0 100644 --- a/explorer/mix.lock +++ b/explorer/mix.lock @@ -4,6 +4,7 @@ "castore": {:hex, :castore, "1.0.8", "dedcf20ea746694647f883590b82d9e96014057aff1d44d03ec90f36a5c0dc6e", [:mix], [], "hexpm", "0b2b66d2ee742cb1d9cb8c8be3b43c3a70ee8651f37b75a8b982e036752983f1"}, "cbor": {:hex, :cbor, "1.0.1", "39511158e8ea5a57c1fcb9639aaa7efde67129678fee49ebbda780f6f24959b0", [:mix], [], "hexpm", "5431acbe7a7908f17f6a9cd43311002836a34a8ab01876918d8cfb709cd8b6a2"}, "certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"}, + "cors_plug": {:hex, :cors_plug, "3.0.3", "7c3ac52b39624bc616db2e937c282f3f623f25f8d550068b6710e58d04a0e330", [:mix], [{:plug, "~> 1.13", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "3f2d759e8c272ed3835fab2ef11b46bddab8c1ab9528167bd463b6452edf830d"}, "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"}, "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"}, diff --git a/explorer/priv/repo/migrations/20250407002009_create_aggregated_proofs.exs b/explorer/priv/repo/migrations/20250407002009_create_aggregated_proofs.exs new file mode 100644 index 0000000000..22a8362881 --- /dev/null +++ b/explorer/priv/repo/migrations/20250407002009_create_aggregated_proofs.exs @@ -0,0 +1,33 @@ +defmodule Explorer.Repo.Migrations.CreateAggregatedProofs do + use Ecto.Migration + + def change do + create table(:aggregated_proofs, primary_key: false) do + add(:id, :binary_id, primary_key: true) + add(:merkle_root, :string) + add(:tx_hash, :string) + add(:blob_versioned_hash, :string) + add(:number_of_proofs, :integer) + add(:block_number, :integer) + add(:block_timestamp, :utc_datetime) + + timestamps() + end + + create table(:proofs_agg_mode) do + add( + :agg_proof_id, + references(:aggregated_proofs, + column: :id, + type: :binary_id, + on_delete: :delete_all + ) + ) + + add(:proof_hash, :string) + add(:index, :integer) + + timestamps() + end + end +end diff --git a/explorer/priv/repo/migrations/20250428144500_add_aggegator_to_agg_proofs.exs b/explorer/priv/repo/migrations/20250428144500_add_aggegator_to_agg_proofs.exs new file mode 100644 index 0000000000..c9f49aa18e --- /dev/null +++ b/explorer/priv/repo/migrations/20250428144500_add_aggegator_to_agg_proofs.exs @@ -0,0 +1,9 @@ +defmodule Explorer.Repo.Migrations.AddAggregatorToAggProofs do + use Ecto.Migration + + def change do + alter table(:aggregated_proofs) do + add(:aggregator, :string, default: nil) + end + end +end diff --git a/explorer/start.sh b/explorer/start.sh index 91469d1a45..d2cd8206b7 100755 --- a/explorer/start.sh +++ b/explorer/start.sh @@ -18,6 +18,8 @@ env_vars=( "BATCH_TTL_MINUTES" "SCHEDULED_BATCH_INTERVAL_MINUTES" "LATEST_RELEASE" + "ALIGNED_PROOF_AGG_CONFIG_FILE" + "BEACON_CLIENT" ) for var in "${env_vars[@]}"; do diff --git a/go.mod b/go.mod index 8583be5e31..277c6841d5 100644 --- a/go.mod +++ b/go.mod @@ -1,21 +1,37 @@ module github.com/yetanotherco/aligned_layer -go 1.22.2 +go 1.22.3 + +toolchain go1.23.4 + +// Replace with fork that exposes VerifyRaw function for raw byte public inputs. +// The official iden3/go-rapidsnark only provides VerifyGroth16 which expects JSON string +// public inputs, but we need to commit to the raw bytes and VerifyRaw simplifies this work. +replace github.com/iden3/go-rapidsnark => github.com/yetanotherco/go-rapidsnark v0.0.0-20250829135025-99f9f6b11ecc + +replace github.com/iden3/go-rapidsnark/types => github.com/yetanotherco/go-rapidsnark/types v0.0.0-20250829135025-99f9f6b11ecc + +replace github.com/iden3/go-rapidsnark/verifier => github.com/yetanotherco/go-rapidsnark/verifier v0.0.0-20250829135025-99f9f6b11ecc + +replace github.com/consensys/gnark-crypto => github.com/yetanotherco/gnark-crypto v0.0.0-20251017181549-3ba17da18479 require ( - github.com/Layr-Labs/eigensdk-go v0.1.13 + github.com/Layr-Labs/eigensdk-go v0.2.0-beta.1 github.com/ethereum/go-ethereum v1.14.0 github.com/prometheus/client_golang v1.19.1 github.com/urfave/cli/v2 v2.27.5 - golang.org/x/crypto v0.22.0 + golang.org/x/crypto v0.33.0 ) require ( github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 github.com/cenkalti/backoff/v4 v4.3.0 - github.com/consensys/gnark v0.10.0 - github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e + github.com/consensys/gnark v0.12.0 + github.com/consensys/gnark-crypto v0.17.0 github.com/fxamacker/cbor/v2 v2.7.0 + github.com/iden3/go-rapidsnark/types v0.0.3 + github.com/iden3/go-rapidsnark/verifier v0.0.5 + github.com/rs/zerolog v1.33.0 github.com/ugorji/go/codec v1.2.12 gopkg.in/yaml.v3 v3.0.1 ) @@ -39,13 +55,13 @@ require ( github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect github.com/aws/smithy-go v1.20.2 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/bavard v0.1.30 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect - github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect @@ -53,12 +69,12 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect - github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect + github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/holiman/uint256 v1.2.4 // indirect - github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71 // indirect - github.com/ingonyama-zk/iciclegnark v0.1.0 // indirect + github.com/iden3/go-iden3-crypto v0.0.17 // indirect + github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b // indirect github.com/klauspost/compress v1.17.7 // indirect github.com/lmittmann/tint v1.0.4 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -70,12 +86,11 @@ require ( github.com/prometheus/common v0.52.2 // indirect github.com/prometheus/procfs v0.13.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect + github.com/ronanh/intcomp v1.1.0 // indirect github.com/rs/cors v1.8.3 // indirect - github.com/rs/zerolog v1.32.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.6+incompatible // indirect github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 // indirect - github.com/stretchr/testify v1.9.0 // indirect github.com/supranational/blst v0.3.11 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect @@ -84,10 +99,9 @@ require ( github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect golang.org/x/net v0.24.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.19.0 // indirect + golang.org/x/sync v0.11.0 // indirect + golang.org/x/sys v0.30.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect google.golang.org/protobuf v1.34.2 // indirect rsc.io/tmplfunc v0.0.3 // indirect diff --git a/go.sum b/go.sum index 35a91de3e7..f3aeb9ea13 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOEl github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Layr-Labs/eigensdk-go v0.1.13 h1:llaDZW52AgrezJUpfqCzzgYuf47DK1HUOQLnI3jcVrA= -github.com/Layr-Labs/eigensdk-go v0.1.13/go.mod h1:aYdNURUhaqeYOS+Cq12TfSdPbjFfiLaHkxPdR4Exq/s= +github.com/Layr-Labs/eigensdk-go v0.2.0-beta.1 h1:vW7AKcvt7fGlIeOMl2Ft9Au/ib8Z9ush8fSrpFSVr10= +github.com/Layr-Labs/eigensdk-go v0.2.0-beta.1/go.mod h1:G4yqiK+5NfUuEMVGGncOEm7QskuGRPmKA7bKxpPzPT4= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= @@ -46,8 +46,8 @@ github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= 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/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/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= +github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= @@ -73,12 +73,10 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP 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/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark v0.10.0 h1:yhi6ThoeFP7WrH8zQDaO56WVXe9iJEBSkfrZ9PZxabw= -github.com/consensys/gnark v0.10.0/go.mod h1:VJU5JrrhZorbfDH+EUjcuFWr2c5z19tHPh8D6KVQksU= -github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e h1:MKdOuCiy2DAX1tMp2YsmtNDaqdigpY6B5cZQDJ9BvEo= -github.com/consensys/gnark-crypto v0.12.2-0.20240215234832-d72fcb379d3e/go.mod h1:wKqwsieaKPThcFkHe0d0zMsbHEUWFmZcG7KBCse210o= +github.com/consensys/bavard v0.1.30 h1:wwAj9lSnMLFXjEclKwyhf7Oslg8EoaFz9u1QGgt0bsk= +github.com/consensys/bavard v0.1.30/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark v0.12.0 h1:XgQ1kh2R6fHuf5fBYl+i7TxR+QTbGQuZaaqqkk5nLO0= +github.com/consensys/gnark v0.12.0/go.mod h1:WDvuIQ8qrRvWT9NhTrib84WeLVBSGhSTrbQBXs1yR5w= github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= @@ -86,14 +84,12 @@ github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3 github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= -github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= +github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -173,8 +169,8 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN 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/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo= -github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= 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= @@ -192,10 +188,10 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71 h1:YxI1RTPzpFJ3MBmxPl3Bo0F7ume7CmQEC1M9jL6CT94= -github.com/ingonyama-zk/icicle v0.0.0-20230928131117-97f0079e5c71/go.mod h1:kAK8/EoN7fUEmakzgZIYdWy1a2rBnpCaZLqSHwZWxEk= -github.com/ingonyama-zk/iciclegnark v0.1.0 h1:88MkEghzjQBMjrYRJFxZ9oR9CTIpB8NG2zLeCJSvXKQ= -github.com/ingonyama-zk/iciclegnark v0.1.0/go.mod h1:wz6+IpyHKs6UhMMoQpNqz1VY+ddfKqC/gRwR/64W6WU= +github.com/iden3/go-iden3-crypto v0.0.17 h1:NdkceRLJo/pI4UpcjVah4lN/a3yzxRUGXqxbWcYh9mY= +github.com/iden3/go-iden3-crypto v0.0.17/go.mod h1:dLpM4vEPJ3nDHzhWFXDjzkn1qHoBeOT/3UEhXsEsP3E= +github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b h1:AvQTK7l0PTHODD06PVQX1Tn2o29sRIaKIDOvTJmKurY= +github.com/ingonyama-zk/icicle/v3 v3.1.1-0.20241118092657-fccdb2f0921b/go.mod h1:e0JHb27/P6WorCJS3YolbY5XffS4PGBuoW38OthLkDs= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= @@ -206,8 +202,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= +github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= github.com/lmittmann/tint v1.0.4 h1:LeYihpJ9hyGvE0w+K2okPTGUdVLfng1+nDNVR4vWISc= github.com/lmittmann/tint v1.0.4/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= @@ -273,13 +269,15 @@ github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGK github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -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.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/ronanh/intcomp v1.1.0 h1:i54kxmpmSoOZFcWPMWryuakN0vLxLswASsGa07zkvLU= +github.com/ronanh/intcomp v1.1.0/go.mod h1:7FOLy3P3Zj3er/kVrU/pl+Ql7JFZj7bwliMGketo0IU= 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/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= @@ -297,8 +295,8 @@ github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -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/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= @@ -313,16 +311,18 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= -github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= +github.com/yetanotherco/gnark-crypto v0.0.0-20251017181549-3ba17da18479 h1:ub1gPwChjJVt7Sw8zkxlVp2ES2cxLylrp+pjRnePkYk= +github.com/yetanotherco/gnark-crypto v0.0.0-20251017181549-3ba17da18479/go.mod h1:A2URlMHUT81ifJ0UlLzSlm7TmnE3t7VxEThApdMukJw= +github.com/yetanotherco/go-rapidsnark/types v0.0.0-20250829135025-99f9f6b11ecc h1:9d0e1bmYz6pv0p1V8zrx7jALDdgAIZ8bZWSCDxemgE4= +github.com/yetanotherco/go-rapidsnark/types v0.0.0-20250829135025-99f9f6b11ecc/go.mod h1:ApgcaUxKIgSRA6fAeFxK7p+lgXXfG4oA2HN5DhFlfF4= +github.com/yetanotherco/go-rapidsnark/verifier v0.0.0-20250829135025-99f9f6b11ecc h1:JLSkcXpSuKb4fzYMF1qNM0nO2oysvOkpNeCSQunTtUA= +github.com/yetanotherco/go-rapidsnark/verifier v0.0.0-20250829135025-99f9f6b11ecc/go.mod h1:KgL3Yr9NehlFDI4EIWVLE3UDUi8ulyjbp7HcXSBfiGI= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= @@ -345,10 +345,10 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA= +golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -363,8 +363,8 @@ golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -388,16 +388,16 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.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/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= 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-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/grafana/provisioning/dashboards/aligned/aggregator_batcher.json b/grafana/provisioning/dashboards/aligned/aggregator_batcher.json index 098a4c837d..a43cc3d5bc 100644 --- a/grafana/provisioning/dashboards/aligned/aggregator_batcher.json +++ b/grafana/provisioning/dashboards/aligned/aggregator_batcher.json @@ -18,7 +18,7 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 2, + "id": 4, "links": [], "liveNow": false, "panels": [ @@ -1786,6 +1786,84 @@ "title": "Total Batcher Restarts", "type": "stat" }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 2, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 0 + }, + { + "color": "orange", + "value": 1 + }, + { + "color": "green", + "value": 2 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 17, + "y": 25 + }, + "id": 64, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "10.1.10", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "available_data_services{job=\"aligned-batcher\"}", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Available Data Services", + "type": "stat" + }, { "datasource": { "type": "prometheus", @@ -3858,6 +3936,176 @@ ], "type": "timeseries" }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 84 + }, + "id": 65, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "10.1.10", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "floor(increase(message_handler_batch_lock_timeouts_count{job=\"aligned-batcher\"}[$__range]))", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "floor(increase(message_handler_user_lock_timeouts_count{job=\"aligned-batcher\"}[$__range]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": " floor(increase(message_handler_user_states_lock_timeouts_count{job=\"aligned-batcher\"}[$__range]))", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "C", + "useBackend": false + } + ], + "title": "Message Handler - (Batch | User | User State Map) Lock Timeout", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 5, + "x": 0, + "y": 92 + }, + "id": 66, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "10.1.10", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "floor(increase(unlocked_event_polling_batch_lock_timeouts_count{job=\"aligned-batcher\"}[$__range]))", + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Unlocked Events - Batch Lock Timeout", + "type": "stat" + }, { "datasource": { "type": "prometheus", @@ -3867,7 +4115,7 @@ "h": 2, "w": 24, "x": 0, - "y": 84 + "y": 98 }, "id": 46, "options": { @@ -3929,7 +4177,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null } ] }, @@ -3941,7 +4190,7 @@ "h": 8, "w": 12, "x": 0, - "y": 86 + "y": 100 }, "id": 47, "options": { @@ -4024,7 +4273,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4040,7 +4290,7 @@ "h": 8, "w": 12, "x": 12, - "y": 86 + "y": 100 }, "id": 43, "interval": "1s", @@ -4120,7 +4370,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4136,7 +4387,7 @@ "h": 8, "w": 12, "x": 0, - "y": 94 + "y": 108 }, "id": 45, "options": { @@ -4251,7 +4502,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4266,7 +4518,7 @@ "h": 8, "w": 12, "x": 12, - "y": 94 + "y": 108 }, "id": 44, "interval": "1s", @@ -4301,7 +4553,7 @@ "type": "timeseries" } ], - "refresh": "", + "refresh": "5s", "schemaVersion": 38, "style": "dark", "tags": [], @@ -4309,13 +4561,13 @@ "list": [] }, "time": { - "from": "now-1h", + "from": "now-15m", "to": "now" }, "timepicker": {}, "timezone": "browser", "title": "System Data", "uid": "aggregator", - "version": 6, + "version": 30, "weekStart": "" -} +} \ No newline at end of file diff --git a/infra/aggregation_mode/README.md b/infra/aggregation_mode/README.md new file mode 100644 index 0000000000..8183bff8a5 --- /dev/null +++ b/infra/aggregation_mode/README.md @@ -0,0 +1,39 @@ +# Aggregation Mode Setup + +## Setup on Server with GPU + +To setup the server with GPU, follow the steps in [aggregation_mode.sh](aggregation_mode.sh). + +After running all the steps, `aggregation_mode.timer` will execute every 24hs the `aggregation_mode.service` + +## Check Service Status + +To check the status of the timer, run: + +```bash +systemctl status aggregation_mode.timer --user +``` + +To check the status of the service, run: + +```bash +systemctl status aggregation_mode.service --user +``` + +## Start Service manually + +If you need to start the service manually, without waiting for the timer, run: + +```bash +systemctl start aggregation_mode.service --user +``` + +## Check Logs + +To check the logs of the service, run: + +```bash +journalctl -xfeu aggregation_mode.service --user +``` + +Note: You can add `-n ` to limit the number of lines to show. diff --git a/infra/aggregation_mode/aggregation_mode.service b/infra/aggregation_mode/aggregation_mode.service new file mode 100644 index 0000000000..203977394d --- /dev/null +++ b/infra/aggregation_mode/aggregation_mode.service @@ -0,0 +1,12 @@ +[Unit] +Description=AggregationMode +After=network.target + +[Service] +Type=oneshot +WorkingDirectory=/home/user +ExecStartPre=sleep 60 +ExecStart=/home/user/run.sh + +[Install] +WantedBy=multi-user.target diff --git a/infra/aggregation_mode/aggregation_mode.sh b/infra/aggregation_mode/aggregation_mode.sh new file mode 100755 index 0000000000..f69a91ed29 --- /dev/null +++ b/infra/aggregation_mode/aggregation_mode.sh @@ -0,0 +1,133 @@ +#!/bin/bash + +# This guide assumes you already clone the github repository +# You have to cd to the repository + +# Set new server name +while :; do + echo -e "\nEnter new server name:" + read -p "> " new_server_name + + if [[ ! "$new_server_name" =~ ^[a-zA-Z0-9-]+$ ]]; then + echo "Invalid characters used in the server name. Please use only alphanumeric characters and hyphens (-)." + else + echo -e "\nSetting new server name to '$new_server_name'..." + echo "Old server name: $old_server_name" + sudo hostnamectl set-hostname "$new_server_name" + sudo sed -i "s/$old_server_name/$new_server_name/g" /etc/hosts + echo "Please reconnect to the server to see the name change." + break + fi +done + +# Enable linger +sudo loginctl enable-linger user + +# Install other dependencies +sudo apt install -y gcc pkg-config libssl-dev build-essential apt-transport-https ca-certificates curl software-properties-common nvtop + +# Install docker +sudo apt-get update +sudo apt-get install ca-certificates curl +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +sudo groupadd docker +sudo usermod -aG docker $USER +newgrp docker + +# Install tailscale +curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null +curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list +sudo apt-get update +sudo apt-get install tailscale +sudo tailscale up --ssh --advertise-tags=tag:server && sudo tailscale set --auto-update + +# Install CUDA +sudo add-apt-repository ppa:graphics-drivers/ppa +sudo apt update +sudo apt install nvidia-driver-570 + +# If see errors +sudo apt-mark unhold cuda-drivers cuda-toolkit-12-6 nvidia-dkms-565-server nvidia-fabricmanager-565 nvidia-headless-565-server nvidia-utils-565-server +sudo apt update +sudo apt install nvidia-driver-570 +sudo apt autoremove +sudo apt autoclean +sudo reboot +nvidia-smi # To check if the driver is installed correctly + +# Setup Docker and CUDA +curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg +curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ + sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ + sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list +sudo apt-get update +sudo apt-get install -y nvidia-container-toolkit +sudo nvidia-ctk runtime configure --runtime=docker +sudo systemctl restart docker + +# Install Rust +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +. "$HOME/.cargo/env" + +# Install SP1 +curl -L https://sp1.succinct.xyz | bash +source $HOME/.bashrc +sp1up + +# Install Risc0 +curl -L https://risczero.com/install | bash +source $HOME/.bashrc +rzup install + +# Install cast +curl -L https://foundry.paradigm.xyz | bash +source $HOME/.bashrc +foundryup + +# Create directories +mkdir -p ~/config +mkdir -p ~/.config/systemd/user +mkdir -p ~/.keystores + +# Create keystore +cast wallet import proof_aggregation.keystore -k $HOME/.keystores -i + +# Create config file for SP1 +./infra/aggregation_mode/config_file.sh ./infra/aggregation_mode/config-proof-aggregator-sp1.template.yaml $HOME/config/config-proof-aggregator-sp1.yaml +read -p "Enter a block number for SP1 (last_aggregated_block): " num && echo "{\"last_aggregated_block\":$num}" > $HOME/config/proof-aggregator-sp1.last_aggregated_block.json + +# Create config file for Risc0 +./infra/aggregation_mode/config_file.sh ./infra/aggregation_mode/config-proof-aggregator-risc0.template.yaml $HOME/config/config-proof-aggregator-risc0.yaml +read -p "Enter a block number for Risc0 (last_aggregated_block): " num && echo "{\"last_aggregated_block\":$num}" > $HOME/config/proof-aggregator-risc0.last_aggregated_block.json + +# Build the proof_aggregator +make proof_aggregator_install + +# Copy run script +cp ./infra/aggregation_mode/run.sh $HOME/run.sh +chmod 744 $HOME/run.sh + +# Setup systemd service +cp ./infra/aggregation_mode/aggregation_mode.service $HOME/.config/systemd/user/aggregation_mode.service +cp ./infra/aggregation_mode/aggregation_mode.timer $HOME/.config/systemd/user/aggregation_mode.timer + +#sudo systemctl enable aggregation_mode.service +systemctl --user enable aggregation_mode.timer +systemctl --user start aggregation_mode.timer + +# Run the proof_aggregator manually if you want +systemctl --user start aggregation_mode.service + +# Check timer status +systemctl --user status aggregation_mode.timer + +# Check logs +journalctl -xfeu aggregation_mode.service --user -n10 diff --git a/infra/aggregation_mode/aggregation_mode.timer b/infra/aggregation_mode/aggregation_mode.timer new file mode 100644 index 0000000000..a8b4d65a5f --- /dev/null +++ b/infra/aggregation_mode/aggregation_mode.timer @@ -0,0 +1,12 @@ +[Unit] +Description=AggregationMode Timer +Requires=aggregation_mode.service + +[Timer] +Unit=aggregation_mode.service +AccuracySec=1s +# Run at 15:00 UTC (12:00 UTC-3) every day +OnCalendar=15:00 + +[Install] +WantedBy=timers.target diff --git a/infra/aggregation_mode/config-proof-aggregator-risc0.template.yaml b/infra/aggregation_mode/config-proof-aggregator-risc0.template.yaml new file mode 100644 index 0000000000..929124059d --- /dev/null +++ b/infra/aggregation_mode/config-proof-aggregator-risc0.template.yaml @@ -0,0 +1,18 @@ +aligned_service_manager_address: +proof_aggregation_service_address: +eth_rpc_url: +eth_ws_url: +max_proofs_in_queue: 1000 +last_aggregated_block_filepath: /home/user/config/proof-aggregator-risc0.last_aggregated_block.json +proofs_per_chunk: 512 # Amount of proofs to process per chunk +# This number comes from the blob data limit +# Since each blob has a capacity of (4096 * 32) = 131.072 bytes +# But to not surpass the field modulus we pad with a 0xo byte so we have (4096 * 31) = 126.976 bytes +# of usable data +# Since each proof commitments takes 32 bytes hash +# We can aggregate as much proofs as 126.976 / 32 = 3968 per blob +total_proofs_limit: 3968 + +ecdsa: + private_key_store_path: + private_key_store_password: diff --git a/infra/aggregation_mode/config-proof-aggregator-sp1.template.yaml b/infra/aggregation_mode/config-proof-aggregator-sp1.template.yaml new file mode 100644 index 0000000000..d55f7e28f6 --- /dev/null +++ b/infra/aggregation_mode/config-proof-aggregator-sp1.template.yaml @@ -0,0 +1,18 @@ +aligned_service_manager_address: +proof_aggregation_service_address: +eth_rpc_url: +eth_ws_url: +max_proofs_in_queue: 1000 +last_aggregated_block_filepath: /home/user/config/proof-aggregator-sp1.last_aggregated_block.json +proofs_per_chunk: 512 # Amount of proofs to process per chunk +# This number comes from the blob data limit +# Since each blob has a capacity of (4096 * 32) = 131.072 bytes +# But to not surpass the field modulus we pad with a 0xo byte so we have (4096 * 31) = 126.976 bytes +# of usable data +# Since each proof commitments takes 32 bytes hash +# We can aggregate as much proofs as 126.976 / 32 = 3968 per blob +total_proofs_limit: 3968 + +ecdsa: + private_key_store_path: + private_key_store_password: diff --git a/infra/aggregation_mode/config_file.sh b/infra/aggregation_mode/config_file.sh new file mode 100755 index 0000000000..b32b24c10c --- /dev/null +++ b/infra/aggregation_mode/config_file.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# This script creates a configuration file for the proof aggregator + +# PARAMETERS +# +# TEMPLATE_FILE: Path to the template file +# - SP1: ./infra/aggregation_mode/config-proof-aggregator-sp1.template.yaml +# - Risc0: ./infra/aggregation_mode/config-proof-aggregator-risc0.template.yaml +# +# OUTPUT_FILE: Path to the output file +# - SP1: $HOME/config/config-proof-aggregator-sp1.yaml +# - Risc0: $HOME/config/config-proof-aggregator-risc0.yaml + +# Check if template file path is provided as argument +if [ $# -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +TEMPLATE_FILE="$1" +OUTPUT_FILE="$2" + +# Verify template file exists +if [ ! -f "$TEMPLATE_FILE" ]; then + echo "Error: Template file '$TEMPLATE_FILE' not found" + exit 1 +fi + +# Create temporary file by copying the template +TEMP_FILE=$(mktemp) +cp "$TEMPLATE_FILE" "$TEMP_FILE" + +# Function to prompt for input and replace placeholder +prompt_and_replace() { + local placeholder=$1 + local description=$2 + + read -p "Enter $description: " value + sed -i "s|$placeholder|$value|g" "$TEMP_FILE" +} + +# Prompt for each placeholder found in the template +prompt_and_replace "" "Aligned Service Manager Address" +prompt_and_replace "" "Proof Aggregation Service Address" +prompt_and_replace "" "Ethereum RPC URL" +prompt_and_replace "" "Ethereum WebSocket URL" +prompt_and_replace "" "ECDSA Private Key Store Path (~/.keystores/proof_aggregation.keystore)" +prompt_and_replace "" "ECDSA Private Key Store Password" + +# Create destination directory if it doesn't exist +mkdir -p $HOME/config + +# Copy the completed file to destination +cp "$TEMP_FILE" "$OUTPUT_FILE" + +# Clean up temporary file +rm "$TEMP_FILE" + +echo "Configuration file has been created and copied to $OUTPUT_FILE" diff --git a/infra/aggregation_mode/remote_management/.env.aggregation_mode_start b/infra/aggregation_mode/remote_management/.env.aggregation_mode_start new file mode 100644 index 0000000000..c4f5ba4900 --- /dev/null +++ b/infra/aggregation_mode/remote_management/.env.aggregation_mode_start @@ -0,0 +1,2 @@ +API_KEY= +INSTANCE_ID= diff --git a/infra/aggregation_mode/remote_management/README.md b/infra/aggregation_mode/remote_management/README.md new file mode 100644 index 0000000000..eed54a3572 --- /dev/null +++ b/infra/aggregation_mode/remote_management/README.md @@ -0,0 +1,5 @@ +This files are supposed to be used in case we want to manage the process using a second server who starts the GPU server using a timer. + +It is useful to avoid being charged for the time the GPU server is not used. + +As the GPU stock is limited we are keeping the GPU server running all the time, but in case we want to use it only when needed, we can use this scripts to start and stop the GPU server using a timer. diff --git a/infra/aggregation_mode/remote_management/aggregation_mode_shutdown.sh b/infra/aggregation_mode/remote_management/aggregation_mode_shutdown.sh new file mode 100755 index 0000000000..2869afb411 --- /dev/null +++ b/infra/aggregation_mode/remote_management/aggregation_mode_shutdown.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +BASE_URL=https://dashboard.tensordock.com/api/v2 + +echo "Stopping GPU Server..." + +sleep 120 + +curl -X POST "$BASE_URL/instances/$INSTANCE_ID/stop" \ + -H "Authorization: Bearer $API_KEY" \ + -H "Content-Type: application/json" \ + -H "Accept: application/json" \ + --data-urlencode 'disassociate_resources=true' \ + --max-time 60 + +echo "GPU Server stopped successfully." diff --git a/infra/aggregation_mode/remote_management/aggregation_mode_start.service b/infra/aggregation_mode/remote_management/aggregation_mode_start.service new file mode 100644 index 0000000000..c000c634b2 --- /dev/null +++ b/infra/aggregation_mode/remote_management/aggregation_mode_start.service @@ -0,0 +1,11 @@ +[Unit] +Description=AggregationMode Start +Wants=aggregation_mode_start.timer + +[Service] +Type=oneshot +ExecStart=/home/app/repos/aggregation_mode/aligned_layer/infra/aggregation_mode/aggregation_mode_start.sh +EnvironmentFile=/home/app/config/.env.aggregation_mode_start + +[Install] +WantedBy=default.target diff --git a/infra/aggregation_mode/remote_management/aggregation_mode_start.sh b/infra/aggregation_mode/remote_management/aggregation_mode_start.sh new file mode 100755 index 0000000000..a45c6f26a7 --- /dev/null +++ b/infra/aggregation_mode/remote_management/aggregation_mode_start.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +BASE_URL=https://dashboard.tensordock.com/api/v2 + +echo "Starting GPU Server..." + +curl -X POST "$BASE_URL/instances/$INSTANCE_ID/start" \ + -H "Authorization: Bearer $API_KEY" \ + -H "Content-Type: application/json" \ + -H "Accept: application/json" \ + --max-time 60 + +echo "GPU Server started successfully." diff --git a/infra/aggregation_mode/remote_management/aggregation_mode_start.timer b/infra/aggregation_mode/remote_management/aggregation_mode_start.timer new file mode 100644 index 0000000000..22392e6cb2 --- /dev/null +++ b/infra/aggregation_mode/remote_management/aggregation_mode_start.timer @@ -0,0 +1,11 @@ +[Unit] +Description=AggregationMode Start Timer +Requires=aggregation_mode_start.service + +[Timer] +Unit=aggregation_mode_start.service +AccuracySec=1s +OnCalendar=16:55 + +[Install] +WantedBy=timers.target diff --git a/infra/aggregation_mode/remote_management/aggregation_mode_start_setup.sh b/infra/aggregation_mode/remote_management/aggregation_mode_start_setup.sh new file mode 100755 index 0000000000..e83721d273 --- /dev/null +++ b/infra/aggregation_mode/remote_management/aggregation_mode_start_setup.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# This script is for setting up a server that manages the GPU Server startup process. + +# Create directories +mkdir -p repos/aggregation_mode +mkdir -p config +mkdir -p .config/systemd/user + +# Clone repository +cd $HOME/repos/aggregation_mode +git clone https://github.com/yetanotherco/aligned_layer.git +cd aligned_layer +git checkout staging +cd $HOME/ + +# Copy systemd service file +cp $HOME/repos/aggregation_mode/aligned_layer/infra/aggregation_mode/aggregation_mode_start.service $HOME/.config/systemd/user/aggregation_mode_start.service +cp $HOME/repos/aggregation_mode/aligned_layer/infra/aggregation_mode/aggregation_mode_start.timer $HOME/.config/systemd/user/aggregation_mode_start.timer + +# Copy configuration file +cp $HOME/repos/aggregation_mode/aligned_layer/infra/aggregation_mode/.env.aggregation_mode_start $HOME/config/ + +# Enable and start the systemd timer +systemctl --user enable aggregation_mode_start.timer +systemctl --user start aggregation_mode_start.timer + +# Check status +systemctl --user status aggregation_mode_start.timer + + diff --git a/infra/aggregation_mode/run.sh b/infra/aggregation_mode/run.sh new file mode 100644 index 0000000000..6034e18c42 --- /dev/null +++ b/infra/aggregation_mode/run.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +SLEEP=5 + +echo "Starting Aggregation Mode in $SLEEP seconds..." +sleep $SLEEP + +echo "Starting SP1 Aggregation Mode..." +AGGREGATOR=sp1 SP1_PROVER=cuda /home/user/.cargo/bin/proof_aggregator_gpu /home/user/config/config-proof-aggregator-sp1.yaml +docker stop $(docker ps -a -q) ## stop all containers +echo "SP1 Aggregation Mode finished" + +echo "Starting Risc0 Aggregation Mode..." +AGGREGATOR=risc0 /home/user/.cargo/bin/proof_aggregator_gpu /home/user/config/config-proof-aggregator-risc0.yaml +echo "Risc0 Aggregation Mode finished" diff --git a/infra/ansible/README.md b/infra/ansible/README.md index 86ed5f859a..b57a2f552d 100644 --- a/infra/ansible/README.md +++ b/infra/ansible/README.md @@ -57,7 +57,7 @@ The `caddy-batcher.ini` contains the following variables: Deploy the Batcher: ```shell -make ansible_batcher_deploy INVENTORY= KEYSTORE= +make ansible_batcher_deploy INVENTORY= ``` ## Operator @@ -160,10 +160,8 @@ The `config-aggregator.ini` contains the variables to run the Operator in Aligne Deploy the Aggregator: ```shell -make ansible_aggregator_deploy INVENTORY= ECDSA_KEYSTORE= BLS_KEYSTORE= +make ansible_aggregator_deploy INVENTORY= ``` -> [!Note] -> ECDSA_KEYSTORE and BLS_KEYSTORE are the paths of the keystores in your machine. ## Telemetry To deploy the Telemetry Services you need to set some variables and then run the Telemetry playbook diff --git a/infra/ansible/hoodi-inventory.yaml b/infra/ansible/hoodi-inventory.yaml new file mode 100644 index 0000000000..108431df77 --- /dev/null +++ b/infra/ansible/hoodi-inventory.yaml @@ -0,0 +1,39 @@ +aggregator: + hosts: + aligned-hoodi-aggregator: + ansible_host: aligned-hoodi-aggregator + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +batcher: + hosts: + aligned-hoodi-batcher: + ansible_host: aligned-hoodi-batcher + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +explorer: + hosts: + aligned-hoodi-explorer: + ansible_host: aligned-hoodi-explorer + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +telemetry: + hosts: + aligned-hoodi-telemetry: + ansible_host: aligned-hoodi-telemetry + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +operator: + hosts: + aligned-hoodi-operator-1: + ansible_host: aligned-hoodi-operator-1 + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 \ No newline at end of file diff --git a/infra/ansible/mainnet-inventory.yaml b/infra/ansible/mainnet-inventory.yaml new file mode 100644 index 0000000000..5e6e7f400e --- /dev/null +++ b/infra/ansible/mainnet-inventory.yaml @@ -0,0 +1,23 @@ +aggregator: + hosts: + aligned-mainnet-aggregator: + ansible_host: aligned-mainnet-aggregator + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +batcher: + hosts: + aligned-mainnet-batcher: + ansible_host: aligned-mainnet-batcher + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +explorer: + hosts: + aligned-mainnet-explorer: + ansible_host: aligned-mainnet-explorer + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 diff --git a/infra/ansible/mainnet-stage-inventory.yaml b/infra/ansible/mainnet-stage-inventory.yaml new file mode 100644 index 0000000000..9d69634ac1 --- /dev/null +++ b/infra/ansible/mainnet-stage-inventory.yaml @@ -0,0 +1,31 @@ +aggregator: + hosts: + aligned-mainnet-stage-aggregator: + ansible_host: aligned-mainnet-stage-aggregator + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +batcher: + hosts: + aligned-mainnet-stage-batcher: + ansible_host: aligned-mainnet-stage-batcher + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +explorer: + hosts: + aligned-mainnet-stage-explorer: + ansible_host: aligned-mainnet-stage-explorer + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +telemetry: + hosts: + aligned-mainnet-stage-telemetry: + ansible_host: aligned-mainnet-stage-telemetry + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 diff --git a/infra/ansible/playbooks/aggregator.yaml b/infra/ansible/playbooks/aggregator.yaml index 0cd8306869..1a25de0b0c 100644 --- a/infra/ansible/playbooks/aggregator.yaml +++ b/infra/ansible/playbooks/aggregator.yaml @@ -38,7 +38,7 @@ git: repo: https://github.com/yetanotherco/aligned_layer.git dest: /home/{{ ansible_user }}/repos/{{ service }}/aligned_layer - version: v0.10.2 + version: 2075-feat-hoodi-deployment loop: - aggregator @@ -50,20 +50,6 @@ group: '{{ ansible_user }}' recurse: yes - - name: Copy ECDSA keystore to server - copy: - src: '{{ ecdsa_keystore_path }}' - dest: /home/{{ ansible_user }}/.keystores/aggregator.ecdsa - owner: '{{ ansible_user }}' - group: '{{ ansible_user }}' - - - name: Copy BLS keystore to server - copy: - src: '{{ bls_keystore_path }}' - dest: /home/{{ ansible_user }}/.keystores/aggregator.bls - owner: '{{ ansible_user }}' - group: '{{ ansible_user }}' - - name: Build aggregator shell: chdir: /home/{{ ansible_user }}/repos/aggregator/aligned_layer/ @@ -114,8 +100,3 @@ state: started enabled: true scope: user - - - name: Run node_exporter playbook - ansible.builtin.import_playbook: node_exporter.yaml - vars: - host: aggregator diff --git a/infra/ansible/playbooks/batcher.yaml b/infra/ansible/playbooks/batcher.yaml index 2926c1bdba..75cd6a492d 100644 --- a/infra/ansible/playbooks/batcher.yaml +++ b/infra/ansible/playbooks/batcher.yaml @@ -52,7 +52,7 @@ ansible.builtin.git: repo: https://github.com/yetanotherco/aligned_layer.git dest: /home/{{ ansible_user }}/repos/batcher/aligned_layer - version: v0.10.2 + version: 2075-feat-hoodi-deployment recursive: false # Build the batcher @@ -66,7 +66,7 @@ - name: Install batcher make: chdir: /home/{{ ansible_user }}/repos/batcher/aligned_layer - target: install_batcher + target: batcher_install environment: PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin:/home/{{ ansible_user }}/.cargo/bin" @@ -92,7 +92,7 @@ eth_rpc_url_fallback: "{{ lookup('ini', 'eth_rpc_url_fallback', file='ini/config-batcher.ini') }}" eth_ws_url: "{{ lookup('ini', 'eth_ws_url', file='ini/config-batcher.ini') }}" eth_ws_url_fallback: "{{ lookup('ini', 'eth_ws_url_fallback', file='ini/config-batcher.ini') }}" - ecdsa_private_key_store_path: "/home/{{ ansible_user }}/.keystores/batcher" + ecdsa_private_key_store_path: "{{ lookup('ini', 'ecdsa_private_key_store_path', file='ini/config-batcher.ini') }}" ecdsa_private_key_store_password: "{{ lookup('ini', 'ecdsa_private_key_store_password', file='ini/config-batcher.ini') }}" telemetry_ip_port_address: "{{ lookup('ini', 'telemetry_ip_port_address', file='ini/config-batcher.ini') }}" batcher_replacement_private_key: "{{ lookup('ini', 'batcher_replacement_private_key', file='ini/config-batcher.ini') }}" @@ -107,6 +107,7 @@ access_key_id: "{{ lookup('ini', 'access_key_id', file='ini/env-batcher.ini') }}" bucket_name: "{{ lookup('ini', 'bucket_name', file='ini/env-batcher.ini') }}" download_endpoint: "{{ lookup('ini', 'download_endpoint', file='ini/env-batcher.ini') }}" + upload_endpoint: "{{ lookup('ini', 'upload_endpoint', file='ini/env-batcher.ini') }}" log_level: "{{ lookup('ini', 'log_level', file='ini/env-batcher.ini') }}" - name: Add reverse proxy to Caddy @@ -118,13 +119,6 @@ ansible_ssh_user: "{{ admin_user }}" batcher_domain: "{{ lookup('ini', 'batcher_domain', file='ini/caddy-batcher.ini') }}" - - name: Copy keystore to server - ansible.builtin.copy: - src: '{{ keystore_path }}' - dest: /home/{{ ansible_user }}/.keystores/batcher - owner: '{{ ansible_user }}' - group: '{{ ansible_user }}' - - name: Start Batcher service ansible.builtin.systemd_service: name: batcher @@ -139,8 +133,3 @@ state: restarted vars: ansible_ssh_user: "{{ admin_user }}" - - - name: Run node_exporter playbook - ansible.builtin.import_playbook: node_exporter.yaml - vars: - host: batcher diff --git a/infra/ansible/playbooks/caddy.yaml b/infra/ansible/playbooks/caddy.yaml new file mode 100644 index 0000000000..c5205953df --- /dev/null +++ b/infra/ansible/playbooks/caddy.yaml @@ -0,0 +1,87 @@ +- name: Caddy Setup + hosts: "{{ host }}" + + tasks: + - name: Allow http/https traffic on UFW + become: true + ufw: + rule: allow + state: enabled + port: '{{ item }}' + loop: + - http + - https + vars: + ansible_ssh_user: "{{ admin_user }}" + + - name: Install dependencies for Caddy + become: true + apt: + name: + - debian-keyring + - debian-archive-keyring + - apt-transport-https + - curl + state: present + update_cache: yes + vars: + ansible_ssh_user: "{{ admin_user }}" + + - name: Download and install Caddy GPG key + shell: + cmd: curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg + creates: /usr/share/keyrings/caddy-stable-archive-keyring.gpg + vars: + ansible_ssh_user: "{{ admin_user }}" + + - name: Add Caddy repository + shell: + cmd: curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list + creates: /etc/apt/sources.list.d/caddy-stable.list + vars: + ansible_ssh_user: "{{ admin_user }}" + + - name: Download and install XCaddy GPG key + shell: + cmd: curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-xcaddy-archive-keyring.gpg + creates: /usr/share/keyrings/caddy-xcaddy-archive-keyring.gpg + vars: + ansible_ssh_user: "{{ admin_user }}" + + - name: Add XCaddy repository + shell: + cmd: curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-xcaddy.list + creates: /etc/apt/sources.list.d/caddy-xcaddy.list + vars: + ansible_ssh_user: "{{ admin_user }}" + + - name: Install Caddy and XCaddy + become: true + apt: + update_cache: yes + name: + - caddy + - xcaddy + state: present + vars: + ansible_ssh_user: "{{ admin_user }}" + + - name: Build Cloudflare DNS module for caddy + shell: + cmd: | + xcaddy build --with github.com/caddy-dns/cloudflare + sudo mv /home/{{ ansible_ssh_user }}/caddy /usr/bin/caddy + chdir: /home/{{ ansible_ssh_user }}/ + vars: + ansible_ssh_user: "{{ admin_user }}" + environment: + PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin" + + - name: Enable caddy + become: true + systemd_service: + name: caddy + enabled: true + state: started + vars: + ansible_ssh_user: "{{ admin_user }}" diff --git a/infra/ansible/playbooks/explorer.yaml b/infra/ansible/playbooks/explorer.yaml index dec8cb265b..6adcc5a41f 100644 --- a/infra/ansible/playbooks/explorer.yaml +++ b/infra/ansible/playbooks/explorer.yaml @@ -45,7 +45,8 @@ ansible.builtin.git: repo: https://github.com/yetanotherco/aligned_layer dest: "/home/{{ ansible_user }}/repos/explorer/aligned_layer" - update: yes + version: 2075-feat-hoodi-deployment + recursive: false - name: Create .ssl directory file: @@ -86,6 +87,8 @@ BATCH_TTL_MINUTES: "{{ lookup('ini', 'BATCH_TTL_MINUTES file=ini/config-explorer.ini') }}" SCHEDULED_BATCH_INTERVAL_MINUTES: "{{ lookup('ini', 'SCHEDULED_BATCH_INTERVAL_MINUTES file=ini/config-explorer.ini') }}" LATEST_RELEASE: "{{ lookup('ini', 'LATEST_RELEASE file=ini/config-explorer.ini') }}" + BEACON_CLIENT: "{{ lookup('ini', 'BEACON_CLIENT file=ini/config-explorer.ini') }}" + ALIGNED_PROOF_AGG_CONFIG_FILE: "{{ lookup('ini', 'ALIGNED_PROOF_AGG_CONFIG_FILE file=ini/config-explorer.ini') }}" - name: Build the explorer release args: diff --git a/infra/ansible/playbooks/grafana.yaml b/infra/ansible/playbooks/grafana.yaml index 7f7e55cd3c..cb4ac5ddaf 100644 --- a/infra/ansible/playbooks/grafana.yaml +++ b/infra/ansible/playbooks/grafana.yaml @@ -63,7 +63,7 @@ git: repo: https://github.com/yetanotherco/aligned_layer.git dest: /home/{{ ansible_user }}/repos/telemetry/aligned_layer - version: v0.12.1 + version: 2075-feat-hoodi-deployment recursive: false - name: Ensure /etc/grafana/provisioning directory exists diff --git a/infra/ansible/playbooks/ini/caddy-batcher.ini.example b/infra/ansible/playbooks/ini/caddy-batcher.ini.example new file mode 100644 index 0000000000..0d202f5277 --- /dev/null +++ b/infra/ansible/playbooks/ini/caddy-batcher.ini.example @@ -0,0 +1,2 @@ +[global] +batcher_domain= diff --git a/infra/ansible/playbooks/ini/config-explorer.ini.example b/infra/ansible/playbooks/ini/config-explorer.ini.example index 2d2d3a1f2c..eb175a53ca 100644 --- a/infra/ansible/playbooks/ini/config-explorer.ini.example +++ b/infra/ansible/playbooks/ini/config-explorer.ini.example @@ -15,3 +15,5 @@ CERTFILE_PATH= BATCH_TTL_MINUTES= SCHEDULED_BATCH_INTERVAL_MINUTES= LATEST_RELEASE= +BEACON_CLIENT= +ALIGNED_PROOF_AGG_CONFIG_FILE= diff --git a/infra/ansible/playbooks/ini/config-telemetry.ini.example b/infra/ansible/playbooks/ini/config-telemetry.ini.example index dd857dfd1a..bf5c9b732d 100644 --- a/infra/ansible/playbooks/ini/config-telemetry.ini.example +++ b/infra/ansible/playbooks/ini/config-telemetry.ini.example @@ -20,9 +20,15 @@ postgresql_telemetry_pass= cassandra_telemetry_user= cassandra_telemetry_pass= +telemetry_environment= +telemetry_aligned_config_file= telemetry_aligned_rpc= telemetry_api_phx_host= telemetry_api_elixir_hostname= telemetry_api_secret_key_base= pagerduty_routing_key= + +caddy_metrics_url= +caddy_telemetry_url= +caddy_jaeger_url= diff --git a/infra/ansible/playbooks/metrics.yaml b/infra/ansible/playbooks/metrics.yaml index 955055a6ae..6f5457c106 100644 --- a/infra/ansible/playbooks/metrics.yaml +++ b/infra/ansible/playbooks/metrics.yaml @@ -32,7 +32,7 @@ ansible.builtin.git: repo: https://github.com/yetanotherco/aligned_layer.git dest: /home/{{ user }}/repos/{{ item }}/aligned_layer - version: v0.10.2 + version: 2075-feat-hoodi-deployment become_user: "{{ user }}" loop: - metrics diff --git a/infra/ansible/playbooks/telemetry.yaml b/infra/ansible/playbooks/telemetry.yaml index 32fdb5f830..3df25cb9b1 100644 --- a/infra/ansible/playbooks/telemetry.yaml +++ b/infra/ansible/playbooks/telemetry.yaml @@ -34,7 +34,7 @@ vars: host: telemetry ini_file: ini/config-telemetry.ini - cassandra_version: 5.0.2 + cassandra_version: 5.0.5 - name: Run Jaeger playbook ansible.builtin.import_playbook: jaeger.yaml @@ -59,11 +59,44 @@ vars: host: telemetry +- name: Run webserver playbook + ansible.builtin.import_playbook: webserver.yaml + vars: + host: telemetry + - name: Setup Telemetry hosts: telemetry tasks: + - name: Add reverse proxy configuration to Caddyfile + become: true + blockinfile: + path: /etc/caddy/Caddyfile + block: | + {{ caddy_metrics_url }} { + reverse_proxy localhost:{{ caddy_metrics_port }} + } + {{ caddy_telemetry_url }} { + @whitelisted { + path /versions* + } + reverse_proxy @whitelisted localhost:{{ caddy_telemetry_port }} + } + {{ caddy_jaeger_url }} { + reverse_proxy localhost:{{ caddy_jaeger_port }} + } + create: yes + prepend_newline: true + vars: + ansible_ssh_user: "{{ admin_user }}" + caddy_metrics_url: "{{ lookup('ini', 'caddy_metrics_url file=ini/config-telemetry.ini') }}" + caddy_metrics_port: 3000 + caddy_telemetry_url: "{{ lookup('ini', 'caddy_telemetry_url file=ini/config-telemetry.ini') }}" + caddy_telemetry_port: 4001 + caddy_jaeger_url: "{{ lookup('ini', 'caddy_jaeger_url file=ini/config-telemetry.ini') }}" + caddy_jaeger_port: 16686 + - name: Make sure /etc/default/tailscaled exists become: true file: @@ -72,11 +105,23 @@ vars: ansible_ssh_user: "{{ admin_user }}" + - name: Add permit to tailscale for caddy + become: true + lineinfile: + path: /etc/default/tailscaled + line: TS_PERMIT_CERT_UID=caddy + state: present + vars: + ansible_ssh_user: "{{ admin_user }}" + notify: + - Restart caddy + - Restart tailscale + - name: Clone Aligned repository ansible.builtin.git: repo: https://github.com/yetanotherco/aligned_layer.git dest: /home/{{ ansible_user }}/repos/telemetry/aligned_layer - version: v0.12.1 + version: 2075-feat-hoodi-deployment recursive: false - name: Run telemetry_compile_bls_verifier target @@ -94,7 +139,9 @@ postgresql_telemetry_db_name: "{{ lookup('ini', 'postgresql_telemetry_db_name file=ini/config-telemetry.ini') }}" postgresql_telemetry_user: "{{ lookup('ini', 'postgresql_telemetry_user file=ini/config-telemetry.ini') }}" postgresql_telemetry_pass: "{{ lookup('ini', 'postgresql_telemetry_pass file=ini/config-telemetry.ini') }}" + telemetry_environment: "{{ lookup('ini', 'telemetry_environment file=ini/config-telemetry.ini') }}" telemetry_aligned_rpc: "{{ lookup('ini', 'telemetry_aligned_rpc file=ini/config-telemetry.ini') }}" + telemetry_aligned_config_file: "{{ lookup('ini', 'telemetry_aligned_config_file file=ini/config-telemetry.ini') }}" telemetry_api_phx_host: "{{ lookup('ini', 'telemetry_api_phx_host file=ini/config-telemetry.ini') }}" telemetry_api_elixir_hostname: "{{ lookup('ini', 'telemetry_api_elixir_hostname file=ini/config-telemetry.ini') }}" telemetry_api_secret_key_base: "{{ lookup('ini', 'telemetry_api_secret_key_base file=ini/config-telemetry.ini') }}" @@ -147,6 +194,14 @@ scope: user handlers: + - name: Restart caddy + become: true + systemd_service: + name: caddy + state: restarted + vars: + ansible_ssh_user: "{{ admin_user }}" + - name: Restart tailscale become: true systemd_service: diff --git a/infra/ansible/playbooks/templates/caddy/Caddyfile.batcher.j2 b/infra/ansible/playbooks/templates/caddy/Caddyfile.batcher.j2 new file mode 100644 index 0000000000..282a865130 --- /dev/null +++ b/infra/ansible/playbooks/templates/caddy/Caddyfile.batcher.j2 @@ -0,0 +1,13 @@ +# The Caddyfile is an easy way to configure your Caddy web server. + +# To use your own domain name (with automatic HTTPS), first make +# sure your domain's A/AAAA DNS records are properly pointed to +# this machine's public IP, then replace ":80" below with your +# domain name. + +# Refer to the Caddy docs for more information: +# https://caddyserver.com/docs/caddyfile + +{{ batcher_domain }} { + reverse_proxy localhost:8080 +} diff --git a/infra/ansible/playbooks/templates/config-files/config-aggregator.yaml.j2 b/infra/ansible/playbooks/templates/config-files/config-aggregator.yaml.j2 index 49bb8a3c4d..3c567f5e2e 100644 --- a/infra/ansible/playbooks/templates/config-files/config-aggregator.yaml.j2 +++ b/infra/ansible/playbooks/templates/config-files/config-aggregator.yaml.j2 @@ -21,12 +21,20 @@ bls: ## Aggregator Configurations aggregator: - server_ip_port_address: localhost:8090 + server_ip_port_address: 0.0.0.0:8090 bls_public_key_compendium_address: avs_service_manager_address: enable_metrics: {{ enable_metrics }} metrics_ip_port_address: "{{ metrics_ip_port_address }}" telemetry_ip_port_address: "{{ telemetry_ip_port_address }}" - garbage_collector_period: 2m #The period of the GC process. Suggested value for Prod: '168h' (7 days) - garbage_collector_tasks_age: 20 #The age of tasks that will be removed by the GC, in blocks. Suggested value for prod: '216000' (30 days) - garbage_collector_tasks_interval: 10 #The interval of queried blocks to get an old batch. Suggested value for prod: '900' (3 hours) + garbage_collector_period: 168h #The period of the GC process. Suggested value for Prod: '168h' (7 days) + garbage_collector_tasks_age: 216000 #The age of tasks that will be removed by the GC, in blocks. Suggested value for prod: '216000' (30 days) + garbage_collector_tasks_interval: 900 #The interval of queried blocks to get an old batch. Suggested value for prod: '900' (3 hours) + bls_service_task_timeout: 168h # The timeout of bls aggregation service tasks. Suggested value for prod '168h' (7 days) + gas_base_bump_percentage: 25 # Percentage to overestimate gas price when sending a task + gas_bump_incremental_percentage: 20 # An extra percentage to overestimate in each bump of respond to task. This is additive between tries + # Gas used formula = est_gas_by_node * (gas_base_bump_percentage + gas_bum_incremental_percentage * i) / 100, where i is the iteration number. + gas_bump_percentage_limit: 150 # The max percentage to bump the gas price. + # The Gas formula is percentage (gas_base_bump_percentage + gas_bump_incremental_percentage * i) / 100) is checked against this value + # If it is higher, it will default to `gas_bump_percentage_limit` + time_to_wait_before_bump: 72s # The time to wait for the receipt when responding to task. Suggested value 72 seconds (6 blocks) diff --git a/infra/ansible/playbooks/templates/config-files/config-batcher.yaml.j2 b/infra/ansible/playbooks/templates/config-files/config-batcher.yaml.j2 index e6f81bc202..b2a5f28879 100644 --- a/infra/ansible/playbooks/templates/config-files/config-batcher.yaml.j2 +++ b/infra/ansible/playbooks/templates/config-files/config-batcher.yaml.j2 @@ -22,7 +22,9 @@ batcher: batch_size_interval: 10 transaction_wait_timeout: 36000 # 3 blocks max_proof_size: 67108864 # 64 MiB - max_batch_size: 268435456 # 256 MiB + max_batch_byte_size: 268435456 # 256 MiB + max_batch_proof_qty: 3000 # 3000 proofs in a batch + max_queue_size: 10000 pre_verification_is_enabled: true eth_ws_reconnects: 99999999999999 metrics_port: 9093 @@ -30,3 +32,11 @@ batcher: non_paying: address: 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 # Anvil address 9 replacement_private_key: {{ batcher_replacement_private_key }} + # When validating if the msg covers the minimum max fee + # A batch of how many proofs should it cover + amount_of_proofs_for_min_max_fee: 128 + # When replacing the message, how much higher should the max fee in comparison to the original one + # The calculation is replacement_max_fee >= original_max_fee + original_max_fee * min_bump_percentage / 100 + min_bump_percentage: 10 + # How often to poll for BalanceUnlocked events in seconds (default: 600 seconds = 10 minutes) + balance_unlock_polling_interval_seconds: 600 diff --git a/infra/ansible/playbooks/templates/config-files/env-batcher.j2 b/infra/ansible/playbooks/templates/config-files/env-batcher.j2 index c79ad635d2..f974bb6e90 100644 --- a/infra/ansible/playbooks/templates/config-files/env-batcher.j2 +++ b/infra/ansible/playbooks/templates/config-files/env-batcher.j2 @@ -3,4 +3,5 @@ AWS_REGION={{ region }} AWS_ACCESS_KEY_ID={{ access_key_id }} AWS_BUCKET_NAME={{ bucket_name }} DOWNLOAD_ENDPOINT={{ download_endpoint }} +UPLOAD_ENDPOINT={{ upload_endpoint }} RUST_LOG={{ log_level }} # info, debug, error, warn, etc. diff --git a/infra/ansible/playbooks/templates/explorer/explorer_env.j2 b/infra/ansible/playbooks/templates/explorer/explorer_env.j2 index 27ab0fb36a..9c00692d4d 100644 --- a/infra/ansible/playbooks/templates/explorer/explorer_env.j2 +++ b/infra/ansible/playbooks/templates/explorer/explorer_env.j2 @@ -18,3 +18,8 @@ export CERTFILE_PATH={{ CERTFILE_PATH }} export BATCH_TTL_MINUTES={{ BATCH_TTL_MINUTES }} export SCHEDULED_BATCH_INTERVAL_MINUTES={{ SCHEDULED_BATCH_INTERVAL_MINUTES }} + +export BEACON_CLIENT={{ BEACON_CLIENT }} +export ALIGNED_PROOF_AGG_CONFIG_FILE={{ ALIGNED_PROOF_AGG_CONFIG_FILE }} + +export LATEST_RELEASE={{ LATEST_RELEASE }} diff --git a/infra/ansible/playbooks/templates/prometheus/prometheus.yaml.j2 b/infra/ansible/playbooks/templates/prometheus/prometheus.yaml.j2 index b6b8201626..3a55f4bfcf 100644 --- a/infra/ansible/playbooks/templates/prometheus/prometheus.yaml.j2 +++ b/infra/ansible/playbooks/templates/prometheus/prometheus.yaml.j2 @@ -14,28 +14,28 @@ alerting: # A scrape configuration containing exactly one endpoint to scrape. scrape_configs: - job_name: "aligned-aggregator" - scrape_interval: 1s + scrape_interval: 15s static_configs: - targets: [ "{{ prometheus_aggregator_ip }}" ] labels: bot: "aggregator" - job_name: "aligned-operator" - scrape_interval: 1s + scrape_interval: 15s static_configs: - targets: [ "{{ prometheus_operator_ip }}" ] labels: bot: "operator" - job_name: "aligned-batcher" - scrape_interval: 1s + scrape_interval: 15s static_configs: - targets: [ "{{ prometheus_batcher_ip }}" ] labels: bot: "batcher" - job_name: "aligned-tracker" - scrape_interval: 1s + scrape_interval: 15s static_configs: - targets: [ "{{ prometheus_tracker_ip }}" ] labels: diff --git a/infra/ansible/playbooks/templates/services/batcher.service.j2 b/infra/ansible/playbooks/templates/services/batcher.service.j2 index 231e319633..106abd538c 100644 --- a/infra/ansible/playbooks/templates/services/batcher.service.j2 +++ b/infra/ansible/playbooks/templates/services/batcher.service.j2 @@ -4,7 +4,7 @@ After=network.target [Service] Type=simple -WorkingDirectory=/home/{{ ansible_user }}/repos/batcher/aligned_layer/batcher +WorkingDirectory=/home/{{ ansible_user }}/repos/batcher/aligned_layer/crates ExecStart=/home/{{ ansible_user }}/.cargo/bin/aligned-batcher --config /home/{{ ansible_user }}/config/config-batcher.yaml --env-file /home/{{ ansible_user }}/config/.env.batcher Restart=always RestartSec=1 diff --git a/infra/ansible/playbooks/templates/telemetry_api/telemetry_env.j2 b/infra/ansible/playbooks/templates/telemetry_api/telemetry_env.j2 index d8a812d15b..4775dcbaa4 100644 --- a/infra/ansible/playbooks/templates/telemetry_api/telemetry_env.j2 +++ b/infra/ansible/playbooks/templates/telemetry_api/telemetry_env.j2 @@ -1,7 +1,7 @@ # Network export RPC_URL="{{ telemetry_aligned_rpc }}" -export ENVIRONMENT=holesky -export ALIGNED_CONFIG_FILE="/home/{{ ansible_user }}/repos/telemetry/aligned_layer/contracts/script/output/mainnet/alignedlayer_deployment_output.json" +export ENVIRONMENT="{{ telemetry_environment }}" +export ALIGNED_CONFIG_FILE="{{ telemetry_aligned_config_file }}" # Elixir export PHX_HOST="{{ telemetry_api_phx_host }}" export ELIXIR_HOSTNAME="{{ telemetry_api_elixir_hostname }}" diff --git a/infra/ansible/sepolia-inventory.yaml b/infra/ansible/sepolia-inventory.yaml new file mode 100644 index 0000000000..422f21e655 --- /dev/null +++ b/infra/ansible/sepolia-inventory.yaml @@ -0,0 +1,39 @@ +aggregator: + hosts: + aligned-sepolia-aggregator: + ansible_host: aligned-sepolia-aggregator + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +batcher: + hosts: + aligned-sepolia-batcher: + ansible_host: aligned-sepolia-batcher + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +explorer: + hosts: + aligned-sepolia-explorer: + ansible_host: aligned-sepolia-explorer + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +telemetry: + hosts: + aligned-sepolia-telemetry: + ansible_host: aligned-sepolia-telemetry + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +operator: + hosts: + aligned-sepolia-operator-1: + ansible_host: aligned-sepolia-operator-1 + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 diff --git a/infra/ansible/testnet-inventory.yaml b/infra/ansible/testnet-inventory.yaml new file mode 100644 index 0000000000..664774aa16 --- /dev/null +++ b/infra/ansible/testnet-inventory.yaml @@ -0,0 +1,15 @@ +aggregator: + hosts: + aligned-holesky-aggregator: + ansible_host: aligned-holesky-aggregator + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 + +batcher: + hosts: + aligned-holesky-batcher: + ansible_host: aligned-holesky-batcher + admin_user: admin + ansible_user: app + ansible_python_interpreter: /usr/bin/python3 diff --git a/infra/services/batcher.service b/infra/services/batcher.service index 0b27ddef6a..324bd6b4fa 100644 --- a/infra/services/batcher.service +++ b/infra/services/batcher.service @@ -4,7 +4,7 @@ After=network.target [Service] Type=simple -WorkingDirectory=/home/{{ ansible_user }}/repos/batcher/aligned_layer/batcher +WorkingDirectory=/home/{{ ansible_user }}/repos/batcher/aligned_layer/crates ExecStart=/home/{{ ansible_user }}/.cargo/bin/aligned-batcher --config /home/{{ ansible_user }}/config/config-batcher-holesky.yaml --env-file /home/{{ ansible_user }}/config/.env.batcher Restart=always RestartSec=1 diff --git a/network_params.yaml b/network_params.yaml index 7b57fe7001..d1ba74a799 100644 --- a/network_params.yaml +++ b/network_params.yaml @@ -1,26 +1,32 @@ participants: - - el_type: geth + - el_type: reth cl_type: lighthouse - count: 2 + count: 3 validator_count: 32 ethereum_metrics_exporter_enabled: true additional_services: - - assertoor - dora - - el_forkmon + - assertoor - prometheus_grafana port_publisher: el: enabled: true - public_port_start: 8543 + public_port_start: 8542 + cl: + enabled: true + public_port_start: 58800 + +ethereum_genesis_generator_params: + # The image to use for ethereum genesis generator + image: ethpandaops/ethereum-genesis-generator:4.1.19 # Default configuration parameters for the network network_params: # The address of the staking contract address on the Eth1 chain - deposit_contract_address: "0x4242424242424242424242424242424242424242" + deposit_contract_address: "0x00000000219ab540356cBB839Cbe05303d7705Fa" network_id: "31337" @@ -29,8 +35,9 @@ network_params: # How long you want the network to wait before starting up genesis_delay: 20 + # The gas limit of the network set at genesis - genesis_gaslimit: 30000000 + genesis_gaslimit: 36000000 # The number of data column sidecar subnets used in the gossipsub protocol data_column_sidecar_subnet_count: 128 @@ -40,492 +47,503 @@ network_params: custody_requirement: 4 # Maximum number of blobs per block # max_blobs_per_block: 6 - preset: "mainnet" + + preset: "minimal" devnet_repo: ethpandaops - prefunded_accounts: { - # Got this accounts from anvil. - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { "balance": "100000000000000ETH" }, # Private key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { "balance": "100000000000000ETH" }, # Private key: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d - "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { "balance": "100000000000000ETH" }, # Private key: 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a - "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { "balance": "100000000000000ETH" }, # Private key: 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6 - "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { "balance": "100000000000000ETH" }, # Private key: 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a - "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { "balance": "100000000000000ETH" }, # Private key: 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba - "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { "balance": "100000000000000ETH" }, # Private key: 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e - "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { "balance": "100000000000000ETH" }, # Private key: 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356 - "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { "balance": "100000000000000ETH" }, # Private key: 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97 - "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { "balance": "100000000000000ETH" }, # Private key: 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6 - } + # Prefunded Accounts + # Accounts from anvil: + # Address --> Private Keys + # (0) 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --> (0) 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + # (1) 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 --> (1) 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d + # (2) 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC --> (2) 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a + # (3) 0x90F79bf6EB2c4f870365E785982E1f101E93b906 --> (3) 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6 + # (4) 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 --> (4) 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a + # (5) 0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc --> (5) 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba + # (6) 0x976EA74026E726554dB657fA54763abd0C3a0aa9 --> (6) 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e + # (7) 0x14dC79964da2C08b23698B3D3cc7Ca32193d9955 --> (7) 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356 + # (8) 0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f --> (8) 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97 + # (9) 0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 --> (9) 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6 + # + # Note: The json can not contain any comments + prefunded_accounts: + '{ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { "balance": "100000000000000ETH" }, + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { "balance": "100000000000000ETH" }, + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { "balance": "100000000000000ETH" }, + "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { "balance": "100000000000000ETH" }, + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { "balance": "100000000000000ETH" }, + "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { "balance": "100000000000000ETH" }, + "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { "balance": "100000000000000ETH" }, + "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { "balance": "100000000000000ETH" }, + "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { "balance": "100000000000000ETH" }, + "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { "balance": "100000000000000ETH" }, + }' + # Preloaded contracts for the chain additional_preloaded_contracts: - { - "0x0165878a594ca255338adfa4d48449f69242eb8f": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x94af000f6f71feb2b8401e668d95fd208038580e89d240930f90ba827aa34858", - "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0x09635f643e140090a9a8dcd712ed6285858cebef": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100cf57806370a08231146100e4578063a9059cbb1461010d578063dd62ed3e1461012057600080fd5b8063095ea7b31461008257806318160ddd146100aa57806323b872dd146100bc575b600080fd5b610095610090366004610416565b610159565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a1565b6100956100ca366004610440565b610162565b6100e26100dd366004610416565b610179565b005b6100ae6100f236600461047d565b6001600160a01b031660009081526020819052604090205490565b61009561011b366004610416565b610187565b6100ae61012e36600461049f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60015b92915050565b600061016f848484610191565b5060019392505050565b610183828261033b565b5050565b60003361016f8185855b6001600160a01b0383166101fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b03821661025c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101f1565b6001600160a01b0383166000908152602081905260409020548111156102d35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101f1565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166103915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f1565b80600260008282546103a391906104d2565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461041157600080fd5b919050565b6000806040838503121561042957600080fd5b610432836103fa565b946020939093013593505050565b60008060006060848603121561045557600080fd5b61045e846103fa565b925061046c602085016103fa565b929592945050506040919091013590565b60006020828403121561048f57600080fd5b610498826103fa565b9392505050565b600080604083850312156104b257600080fd5b6104bb836103fa565b91506104c9602084016103fa565b90509250929050565b8082018082111561015c57634e487b7160e01b600052601160045260246000fdfea264697066735822122000060ee7d13b3da20ea88c1a32f5ce15f717474f00274010613f0e6e91a6871b64736f6c634300081b0033", - "storage": {}, - }, - "0x0b306bf915c4d645ff596e518faf3f9669b97016": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106102895760003560e01c80636d21117e1161015c578063bf21a8aa116100ce578063f2fde38b11610087578063f2fde38b1461070e578063f698da2514610721578063f8cd844814610729578063fabc1cbc1461073c578063fbf1e2c11461074f578063fce36c7d1461076257600080fd5b8063bf21a8aa14610659578063c46db60614610680578063d4540a55146106ae578063e221b245146106c1578063e810ce21146106d4578063ea4d3c9b146106e757600080fd5b8063886f119511610120578063886f1195146105c05780638da5cb5b146105d35780639104c319146105e45780639d45c281146105ff578063a0169ddd14610626578063bb7e451f1461063957600080fd5b80636d21117e14610544578063715018a6146105725780637b8f8b051461057a578063863cb9a914610582578063865c69531461059557600080fd5b806337838ed01161020057806358baaa3e116101b957806358baaa3e146104b6578063595c6a67146104c95780635971b3f8146104d15780635ac86ab7146105065780635c975abb146105295780635e9d83481461053157600080fd5b806337838ed01461041457806339b70e381461043b5780633a8c0786146104625780633ccc861d146104795780633efe1db61461048c5780634d18cc351461049f57600080fd5b8063131433b411610252578063131433b414610352578063136439dd14610379578063149bc8721461038c57806322f19a64146103ad5780632b9f64a4146103c057806336af41fa1461040157600080fd5b806218572c1461028e57806304a0c502146102c6578063092db007146103025780630eb383451461032a57806310d67a2f1461033f575b600080fd5b6102b161029c3660046130f0565b60d16020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ed7f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016102bd565b60cb5461031790600160e01b900461ffff1681565b60405161ffff90911681526020016102bd565b61033d61033836600461311b565b610775565b005b61033d61034d3660046130f0565b6107f7565b6102ed7f0000000000000000000000000000000000000000000000000000000065fb788081565b61033d610387366004613154565b6108b3565b61039f61039a366004613185565b6109f2565b6040519081526020016102bd565b6103176103bb3660046131a1565b610a68565b6103e96103ce3660046130f0565b60cc602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61033d61040f3660046131cf565b610a7d565b6102ed7f000000000000000000000000000000000000000000000000000000000076a70081565b6103e97f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb546102ed90600160a01b900463ffffffff1681565b61033d610487366004613259565b610caa565b61033d61049a3660046132b9565b611052565b60cb546102ed90600160c01b900463ffffffff1681565b61033d6104c43660046132e5565b611351565b61033d611362565b6104e46104df366004613154565b611429565b6040805193845263ffffffff92831660208501529116908201526060016102bd565b6102b1610514366004613300565b606654600160ff9092169190911b9081161490565b60665461039f565b6102b161053f366004613323565b611469565b6102b1610552366004613358565b60cf60209081526000928352604080842090915290825290205460ff1681565b61033d6114e7565b60ca5461039f565b61033d6105903660046130f0565b6114fb565b61039f6105a33660046131a1565b60cd60209081526000928352604080842090915290825290205481565b6065546103e9906001600160a01b031681565b6033546001600160a01b03166103e9565b6103e973beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102ed7f0000000000000000000000000000000000000000000000000000000000093a8081565b61033d6106343660046130f0565b61150c565b61039f6106473660046130f0565b60ce6020526000908152604090205481565b6102ed7f00000000000000000000000000000000000000000000000000000000005c490081565b6102b161068e366004613358565b60d060209081526000928352604080842090915290825290205460ff1681565b61033d6106bc3660046133a1565b61156b565b61033d6106cf366004613414565b6116b3565b6102ed6106e2366004613154565b6116c4565b6103e97f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61033d61071c3660046130f0565b6117a5565b61039f61181b565b61039f610737366004613185565b611858565b61033d61074a366004613154565b611869565b60cb546103e9906001600160a01b031681565b61033d6107703660046131cf565b6119c5565b61077d611b37565b6001600160a01b038216600081815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b0391909116600090815260d160205260409020805460ff1916911515919091179055565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061342f565b6001600160a01b0316336001600160a01b0316146108a75760405162461bcd60e51b815260040161089e9061344c565b60405180910390fd5b6108b081611b91565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091f9190613496565b61093b5760405162461bcd60e51b815260040161089e906134b3565b606654818116146109b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600080610a0260208401846130f0565b8360200135604051602001610a4b9392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b60cb54600160e01b900461ffff165b92915050565b606654600190600290811603610aa55760405162461bcd60e51b815260040161089e906134fb565b33600090815260d1602052604090205460ff16610b445760405162461bcd60e51b815260206004820152605160248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f60448201527f7420612076616c69642063726561746552657761726473466f72416c6c53756260648201527036b4b9b9b4b7b71039bab136b4ba3a32b960791b608482015260a40161089e565b600260975403610b665760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110610b8957610b89613569565b9050602002810190610b9b919061357f565b33600081815260ce60209081526040808320549051949550939192610bc692909185918791016136c4565b604051602081830303815290604052805190602001209050610be783611c88565b33600090815260d0602090815260408083208484529091529020805460ff19166001908117909155610c1a90839061370a565b33600081815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf27048290610c6290889061371d565b60405180910390a4610c94333060408601803590610c8390602089016130f0565b6001600160a01b0316929190612458565b505050600101610b6e565b505060016097555050565b606654600290600490811603610cd25760405162461bcd60e51b815260040161089e906134fb565b600260975403610cf45760405162461bcd60e51b815260040161089e90613532565b6002609755600060ca610d0a60208601866132e5565b63ffffffff1681548110610d2057610d20613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091529050610d7284826124c9565b6000610d8460808601606087016130f0565b6001600160a01b03808216600090815260cc60205260409020549192501680610daa5750805b336001600160a01b03821614610e285760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063616c6c6572206973206e6f742076616c696420636c61696d657200000000606482015260840161089e565b60005b610e3860a0880188613730565b90508110156110445736610e4f60e0890189613781565b83818110610e5f57610e5f613569565b6001600160a01b038716600090815260cd602090815260408083209302949094019450929091508290610e94908501856130f0565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905080826020013511610f4e5760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e70726f63657373436c61696d3a60448201527f2063756d756c61746976654561726e696e6773206d75737420626520677420746064820152741a185b8818dd5b5d5b185d1a5d9950db185a5b5959605a1b608482015260a40161089e565b6000610f5e8260208501356137cb565b6001600160a01b038716600090815260cd60209081526040822092935085018035929190610f8c90876130f0565b6001600160a01b0316815260208082019290925260400160002091909155610fce908a908390610fbe908701876130f0565b6001600160a01b0316919061276a565b86516001600160a01b03808b1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce319061101260208901896130f0565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101610e2b565b505060016097555050505050565b60665460039060089081160361107a5760405162461bcd60e51b815260040161089e906134fb565b60cb546001600160a01b031633146110f15760405162461bcd60e51b815260206004820152603460248201527f52657761726473436f6f7264696e61746f723a2063616c6c6572206973206e6f6044820152733a103a3432903932bbb0b93239aab83230ba32b960611b606482015260840161089e565b60cb5463ffffffff600160c01b90910481169083161161118d5760405162461bcd60e51b815260206004820152604b60248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a206e60448201527f657720726f6f74206d75737420626520666f72206e657765722063616c63756c60648201526a185d1959081c195c9a5bd960aa1b608482015260a40161089e565b428263ffffffff16106112265760405162461bcd60e51b815260206004820152605560248201527f52657761726473436f6f7264696e61746f722e7375626d6974526f6f743a207260448201527f65776172647343616c63756c6174696f6e456e6454696d657374616d702063616064820152746e6e6f7420626520696e207468652066757475726560581b608482015260a40161089e565b60ca5460cb5460009061124690600160a01b900463ffffffff16426137de565b6040805160608101825287815263ffffffff878116602080840182815286841685870181815260ca805460018101825560009190915296517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029098029788015591517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee29096018054925196861667ffffffffffffffff19909316929092176401000000009686169690960295909517905560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b611359611b37565b6108b08161279a565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156113aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ce9190613496565b6113ea5760405162461bcd60e51b815260040161089e906134b3565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60ca818154811061143957600080fd5b60009182526020909120600290910201805460019091015490915063ffffffff8082169164010000000090041683565b60006114df8260ca61147e60208301836132e5565b63ffffffff168154811061149457611494613569565b6000918252602091829020604080516060810182526002909302909101805483526001015463ffffffff808216948401949094526401000000009004909216918101919091526124c9565b506001919050565b6114ef611b37565b6114f9600061280b565b565b611503611b37565b6108b08161285d565b33600081815260cc602052604080822080546001600160a01b031981166001600160a01b038781169182179093559251911692839185917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca31291a4505050565b600054610100900460ff161580801561158b5750600054600160ff909116105b806115a55750303b1580156115a5575060005460ff166001145b6116085760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089e565b6000805460ff19166001179055801561162b576000805461ff0019166101001790555b6116336128b9565b60c9556116408686612950565b6116498761280b565b6116528461285d565b61165b8361279a565b61166482612a3a565b80156116aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6116bb611b37565b6108b081612a3a565b60ca546000905b63ffffffff811615611736578260ca6116e56001846137fa565b63ffffffff16815481106116fb576116fb613569565b906000526020600020906002020160000154036117245761171d6001826137fa565b9392505050565b8061172e81613816565b9150506116cb565b5060405162461bcd60e51b815260206004820152603760248201527f52657761726473436f6f7264696e61746f722e676574526f6f74496e6465784660448201527f726f6d486173683a20726f6f74206e6f7420666f756e64000000000000000000606482015260840161089e565b6117ad611b37565b6001600160a01b0381166118125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089e565b6108b08161280b565b60007f0000000000000000000000000000000000000000000000000000000000007a69460361184b575060c95490565b6118536128b9565b905090565b60006001610a0260208401846130f0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e0919061342f565b6001600160a01b0316336001600160a01b0316146119105760405162461bcd60e51b815260040161089e9061344c565b60665419811960665419161461198e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161089e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109e7565b6066546000906001908116036119ed5760405162461bcd60e51b815260040161089e906134fb565b600260975403611a0f5760405162461bcd60e51b815260040161089e90613532565b600260975560005b82811015610c9f5736848483818110611a3257611a32613569565b9050602002810190611a44919061357f565b33600081815260ce60209081526040808320549051949550939192611a6f92909185918791016136c4565b604051602081830303815290604052805190602001209050611a9083611c88565b33600090815260cf602090815260408083208484529091529020805460ff19166001908117909155611ac390839061370a565b33600081815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e628190611b0b90889061371d565b60405180910390a4611b2c333060408601803590610c8390602089016130f0565b505050600101611a17565b6033546001600160a01b031633146114f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089e565b6001600160a01b038116611c1f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161089e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000611c948280613781565b905011611cf9576040805162461bcd60e51b815260206004820152602481019190915260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206e6f207374726174656769657320736574606482015260840161089e565b6000816040013511611d6b5760405162461bcd60e51b8152602060048201526041602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e742063616e6e6f74206265206064820152600360fc1b608482015260a40161089e565b6f4b3b4ca85a86c47a098a223fffffffff81604001351115611de35760405162461bcd60e51b815260206004820152603f602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20616d6f756e7420746f6f206c6172676500606482015260840161089e565b63ffffffff7f00000000000000000000000000000000000000000000000000000000005c490016611e1a60a08301608084016132e5565b63ffffffff161115611e9f5760405162461bcd60e51b8152602060048201526054602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e20657863656564732060648201527326a0ac2fa922aba0a92229afa22aa920aa24a7a760611b608482015260a40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611ed060a08301608084016132e5565b611eda919061384c565b63ffffffff1615611f7a5760405162461bcd60e51b815260206004820152606a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a206475726174696f6e206d7573742062652060648201527f61206d756c7469706c65206f662043414c43554c4154494f4e5f494e54455256608482015269414c5f5345434f4e445360b01b60a482015260c40161089e565b7f0000000000000000000000000000000000000000000000000000000000093a80611fab60808301606084016132e5565b611fb5919061384c565b63ffffffff161561205b5760405162461bcd60e51b8152602060048201526070602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d70206d7560648201527f73742062652061206d756c7469706c65206f662043414c43554c4154494f4e5f60848201526f494e54455256414c5f5345434f4e445360801b60a482015260c40161089e565b61206b60808201606083016132e5565b63ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426120a391906137cb565b111580156120ec57506120bc60808201606083016132e5565b63ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6121665760405162461bcd60e51b8152602060048201526051602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152701bc819985c881a5b881d1a19481c185cdd607a1b608482015260a40161089e565b61219663ffffffff7f0000000000000000000000000000000000000000000000000000000000278d00164261370a565b6121a660808301606084016132e5565b63ffffffff16111561222a5760405162461bcd60e51b8152602060048201526053602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20737461727454696d657374616d7020746f6064820152726f2066617220696e207468652066757475726560681b608482015260a40161089e565b6000805b6122388380613781565b905081101561245357600061224d8480613781565b8381811061225d5761225d613569565b61227392602060409092020190810191506130f0565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190613496565b8061232957506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61239c5760405162461bcd60e51b815260206004820152604a602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a20696e76616c69642073747261746567792060648201526918dbdb9cda59195c995960b21b608482015260a40161089e565b806001600160a01b0316836001600160a01b0316106124495760405162461bcd60e51b8152602060048201526069602482015260008051602061394d83398151915260448201527f7264735375626d697373696f6e3a2073747261746567696573206d757374206260648201527f6520696e20617363656e64696e67206f7264657220746f2068616e646c65206460848201526875706c69636174657360b81b60a482015260c40161089e565b915060010161222e565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526124c39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612aa5565b50505050565b806040015163ffffffff164210156125425760405162461bcd60e51b815260206004820152603660248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a206044820152751c9bdbdd081b9bdd081858dd1a5d985d1959081e595d60521b606482015260840161089e565b61254f60c0830183613730565b905061255e60a0840184613730565b9050146125e85760405162461bcd60e51b815260206004820152604c60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e496e646963657320616e6420746f6b656e50726f6f6673206c656e60648201526b0cee8d040dad2e6dac2e8c6d60a31b608482015260a40161089e565b6125f560e0830183613781565b905061260460c0840184613730565b90501461268c5760405162461bcd60e51b815260206004820152604a60248201527f52657761726473436f6f7264696e61746f722e5f636865636b436c61696d3a2060448201527f746f6b656e5472656550726f6f667320616e64206c6561766573206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a40161089e565b80516126b8906126a260408501602086016132e5565b6126af6040860186613874565b86606001612b77565b60005b6126c860a0840184613730565b90508110156124535761276260808401356126e660a0860186613730565b848181106126f6576126f6613569565b905060200201602081019061270b91906132e5565b61271860c0870187613730565b8581811061272857612728613569565b905060200281019061273a9190613874565b61274760e0890189613781565b8781811061275757612757613569565b905060400201612ceb565b6001016126bb565b6040516001600160a01b03831660248201526044810182905261245390849063a9059cbb60e01b9060640161248c565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb90600090a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6065546001600160a01b031615801561297157506001600160a01b03821615155b6129f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161089e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2612a3682611b91565b5050565b60cb546040805161ffff600160e01b9093048316815291831660208301527f8cdc428b0431b82d1619763f443a48197db344ba96905f3949643acd1c863a06910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6000612afa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612e3c9092919063ffffffff16565b8051909150156124535780806020019051810190612b189190613496565b6124535760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161089e565b612b826020836138bb565b6001901b8463ffffffff1610612c0c5760405162461bcd60e51b815260206004820152604360248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e65724c656166496e6064820152620c8caf60eb1b608482015260a40161089e565b6000612c17826109f2565b9050612c6284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152604660248201527f52657761726473436f6f7264696e61746f722e5f7665726966794561726e657260448201527f436c61696d50726f6f663a20696e76616c6964206561726e657220636c61696d60648201526510383937b7b360d11b608482015260a40161089e565b505050505050565b612cf66020836138bb565b6001901b8463ffffffff1610612d745760405162461bcd60e51b815260206004820152603c60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e4c656166496e64657800000000606482015260840161089e565b6000612d7f82611858565b9050612dca84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508591505063ffffffff8916612e53565b612ce35760405162461bcd60e51b815260206004820152603f60248201527f52657761726473436f6f7264696e61746f722e5f766572696679546f6b656e4360448201527f6c61696d3a20696e76616c696420746f6b656e20636c61696d2070726f6f6600606482015260840161089e565b6060612e4b8484600085612e6b565b949350505050565b600083612e61868585612f9c565b1495945050505050565b606082471015612ecc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161089e565b6001600160a01b0385163b612f235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161089e565b600080866001600160a01b03168587604051612f3f91906138f3565b60006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f918282866130a2565b979650505050505050565b600060208451612fac9190613905565b156130335760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a40161089e565b8260205b855181116130995761304a600285613905565b60000361306e57816000528086015160205260406000209150600284049350613087565b8086015160005281602052604060002091506002840493505b61309260208261370a565b9050613037565b50949350505050565b606083156130b157508161171d565b8251156130c15782518084602001fd5b8160405162461bcd60e51b815260040161089e9190613919565b6001600160a01b03811681146108b057600080fd5b60006020828403121561310257600080fd5b813561171d816130db565b80151581146108b057600080fd5b6000806040838503121561312e57600080fd5b8235613139816130db565b915060208301356131498161310d565b809150509250929050565b60006020828403121561316657600080fd5b5035919050565b60006040828403121561317f57600080fd5b50919050565b60006040828403121561319757600080fd5b61171d838361316d565b600080604083850312156131b457600080fd5b82356131bf816130db565b91506020830135613149816130db565b600080602083850312156131e257600080fd5b823567ffffffffffffffff8111156131f957600080fd5b8301601f8101851361320a57600080fd5b803567ffffffffffffffff81111561322157600080fd5b8560208260051b840101111561323657600080fd5b6020919091019590945092505050565b6000610100828403121561317f57600080fd5b6000806040838503121561326c57600080fd5b823567ffffffffffffffff81111561328357600080fd5b61328f85828601613246565b9250506020830135613149816130db565b803563ffffffff811681146132b457600080fd5b919050565b600080604083850312156132cc57600080fd5b823591506132dc602084016132a0565b90509250929050565b6000602082840312156132f757600080fd5b61171d826132a0565b60006020828403121561331257600080fd5b813560ff8116811461171d57600080fd5b60006020828403121561333557600080fd5b813567ffffffffffffffff81111561334c57600080fd5b612e4b84828501613246565b6000806040838503121561336b57600080fd5b8235613376816130db565b946020939093013593505050565b80356132b4816130db565b803561ffff811681146132b457600080fd5b60008060008060008060c087890312156133ba57600080fd5b86356133c5816130db565b955060208701356133d5816130db565b94506040870135935060608701356133ec816130db565b92506133fa608088016132a0565b915061340860a0880161338f565b90509295509295509295565b60006020828403121561342657600080fd5b61171d8261338f565b60006020828403121561344157600080fd5b815161171d816130db565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156134a857600080fd5b815161171d8161310d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261359557600080fd5b9190910192915050565b81835260208301925060008160005b848110156136055781356135c1816130db565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146135ec57600080fd5b60208801525060409586019591909101906001016135ae565b5093949350505050565b60008135601e1983360301811261362557600080fd5b820160208101903567ffffffffffffffff81111561364257600080fd5b8060061b360382131561365457600080fd5b60a0855261366660a08601828461359f565b91505061367560208401613384565b6001600160a01b0316602085015260408381013590850152613699606084016132a0565b63ffffffff1660608501526136b0608084016132a0565b63ffffffff81166080860152509392505050565b60018060a01b03841681528260208201526060604082015260006136eb606083018461360f565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a7757610a776136f4565b60208152600061171d602083018461360f565b6000808335601e1984360301811261374757600080fd5b83018035915067ffffffffffffffff82111561376257600080fd5b6020019150600581901b360382131561377a57600080fd5b9250929050565b6000808335601e1984360301811261379857600080fd5b83018035915067ffffffffffffffff8211156137b357600080fd5b6020019150600681901b360382131561377a57600080fd5b81810381811115610a7757610a776136f4565b63ffffffff8181168382160190811115610a7757610a776136f4565b63ffffffff8281168282160390811115610a7757610a776136f4565b600063ffffffff82168061382c5761382c6136f4565b6000190192915050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff83168061386257613862613836565b8063ffffffff84160691505092915050565b6000808335601e1984360301811261388b57600080fd5b83018035915067ffffffffffffffff8211156138a657600080fd5b60200191503681900382131561377a57600080fd5b6000826138ca576138ca613836565b500490565b60005b838110156138ea5781810151838201526020016138d2565b50506000910152565b600082516135958184602087016138cf565b60008261391457613914613836565b500690565b60208152600082518060208401526139388160408501602087016138cf565b601f01601f1916919091016040019291505056fe52657761726473436f6f7264696e61746f722e5f76616c696461746552657761a2646970667358221220a36edf2d3dce7bfba092e6a7f8c98bee38b143e8f924a4f463353379f1a9adae64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063c6656702116100ad578063df5cf7231161007c578063df5cf72314610515578063e7a050aa1461053c578063f2fde38b1461054f578063f698da2514610562578063fabc1cbc1461056a57600080fd5b8063c6656702146104c9578063cbc2bd62146104dc578063cf756fdf146104ef578063df5b35471461050257600080fd5b8063b1344271116100e9578063b134427114610469578063b5d8b5b814610490578063c4623ea1146104a3578063c608c7f3146104b657600080fd5b80638da5cb5b1461040157806394f649dd14610412578063967fc0d2146104335780639b4da03d1461044657600080fd5b80635ac86ab71161019d5780637a7e0d921161016c5780637a7e0d92146103675780637ecebe0014610392578063886f1195146103b25780638b8aac3c146103c55780638c80d4e5146103ee57600080fd5b80635ac86ab7146103015780635c975abb14610334578063663c1de41461033c578063715018a61461035f57600080fd5b80634665bcda116101d95780634665bcda1461028057806348825e94146102bf5780634e5a4263146102e6578063595c6a67146102f957600080fd5b806310d67a2f1461020b578063136439dd1461022057806320606b701461023357806332e89ace1461026d575b600080fd5b61021e6102193660046129e8565b61057d565b005b61021e61022e366004612a05565b610639565b61025a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61025a61027b366004612a34565b610778565b6102a77f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b039091168152602001610264565b61025a7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61021e6102f4366004612b45565b610a64565b61021e610a9c565b61032461030f366004612b7e565b609854600160ff9092169190911b9081161490565b6040519015158152602001610264565b60985461025a565b61032461034a3660046129e8565b60d16020526000908152604090205460ff1681565b61021e610b63565b61025a610375366004612ba1565b60cd60209081526000928352604080842090915290825290205481565b61025a6103a03660046129e8565b60ca6020526000908152604090205481565b6097546102a7906001600160a01b031681565b61025a6103d33660046129e8565b6001600160a01b0316600090815260ce602052604090205490565b61021e6103fc366004612bcf565b610b77565b6033546001600160a01b03166102a7565b6104256104203660046129e8565b610bd0565b604051610264929190612c10565b60cb546102a7906001600160a01b031681565b6103246104543660046129e8565b60d36020526000908152604090205460ff1681565b6102a77f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b61021e61049e366004612ce0565b610d50565b61021e6104b1366004612d22565b610ec4565b61021e6104c4366004612d73565b610f18565b61021e6104d73660046129e8565b610fd0565b6102a76104ea366004612dc6565b610fe1565b61021e6104fd366004612d22565b611019565b61021e610510366004612df2565b61114d565b6102a77f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61025a61054a366004612bcf565b611376565b61021e61055d3660046129e8565b61143d565b61025a6114b3565b61021e610578366004612a05565b6114f0565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f49190612e63565b6001600160a01b0316336001600160a01b03161461062d5760405162461bcd60e51b815260040161062490612e80565b60405180910390fd5b6106368161164c565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a59190612eca565b6106c15760405162461bcd60e51b815260040161062490612ee7565b6098548181161461073a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60985460009081906001908116036107ce5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b6002606554036108205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b60026065556001600160a01b038816600090815260d3602052604090205460ff16156108c75760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a401610624565b428410156109495760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a401610624565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a016114b3565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610a44888288611743565b610a50888c8c8c611902565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610a8e5760405162461bcd60e51b815260040161062490612f2f565b610a988282611ad1565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b089190612eca565b610b245760405162461bcd60e51b815260040161062490612ee7565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610b6b611b3f565b610b756000611b99565b565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610bbf5760405162461bcd60e51b815260040161062490612f99565b610bca838383611beb565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c0857610c08612a1e565b604051908082528060200260200182016040528015610c31578160200160208202803683370190505b50905060005b82811015610cc2576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610c7657610c76612ff7565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610caf57610caf612ff7565b6020908102919091010152600101610c37565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610d3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d20575b50505050509150935093505050915091565b60cb546001600160a01b03163314610d7a5760405162461bcd60e51b815260040161062490612f2f565b8060005b81811015610bca5760d16000858584818110610d9c57610d9c612ff7565b9050602002016020810190610db191906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1615610ebc57600060d16000868685818110610deb57610deb612ff7565b9050602002016020810190610e0091906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610e5b57610e5b612ff7565b9050602002016020810190610e7091906129e8565b6040516001600160a01b03909116815260200160405180910390a1610ebc848483818110610ea057610ea0612ff7565b9050602002016020810190610eb591906129e8565b6000611ad1565b600101610d7e565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f0c5760405162461bcd60e51b815260040161062490612f99565b610bca84848484611d4c565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610f605760405162461bcd60e51b815260040161062490612f99565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b5050505050505050565b610fd8611b3f565b61063681611fe0565b60ce6020528160005260406000208181548110610ffd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff16158080156110395750600054600160ff909116105b806110535750303b158015611053575060005460ff166001145b6110b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610624565b6000805460ff1916600117905580156110d9576000805461ff0019166101001790555b6110e1612049565b60c9556110ee83836120e0565b6110f785611b99565b61110084611fe0565b8015611146576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146111775760405162461bcd60e51b815260040161062490612f2f565b8281146112005760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a401610624565b8260005b8181101561136e5760d1600087878481811061122257611222612ff7565b905060200201602081019061123791906129e8565b6001600160a01b0316815260208101919091526040016000205460ff1661136657600160d1600088888581811061127057611270612ff7565b905060200201602081019061128591906129e8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe8686838181106112e0576112e0612ff7565b90506020020160208101906112f591906129e8565b6040516001600160a01b03909116815260200160405180910390a161136686868381811061132557611325612ff7565b905060200201602081019061133a91906129e8565b85858481811061134c5761134c612ff7565b9050602002016020810190611361919061300d565b611ad1565b600101611204565b505050505050565b60985460009081906001908116036113cc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610624565b60026065540361141e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610624565b600260655561142f33868686611902565b600160655595945050505050565b611445611b3f565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610624565b61063681611b99565b60007f0000000000000000000000000000000000000000000000000000000000007a6946036114e3575060c95490565b6114eb612049565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115679190612e63565b6001600160a01b0316336001600160a01b0316146115975760405162461bcd60e51b815260040161062490612e80565b6098541981196098541916146116155760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610624565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161076d565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610624565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b1561186257604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90611783908690869060040161307a565b602060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c49190613093565b6001600160e01b0319161461185d5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610624565b505050565b826001600160a01b031661187683836121c6565b6001600160a01b03161461185d5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610624565b6001600160a01b038316600090815260d16020526040812054849060ff166119a85760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a401610624565b6119bd6001600160a01b0385163387866121ec565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3091906130bd565b9150611a3e86858785611d4c565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610b755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610624565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081600003611c635760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f2100006064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611cf55760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b6064820152608401610624565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081209184900391829055819003611d3f57611d358585612246565b6001915050611d45565b60009150505b9392505050565b6001600160a01b038416611dc85760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f2061646472657373000000000000006064820152608401610624565b80600003611e375760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b6064820152608401610624565b6001600160a01b03808516600090815260cd602090815260408083209386168352929052908120549003611f4c576001600160a01b038416600090815260ce602090815260409091205410611f0d5760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a401610624565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd6020908152604080832093861683529290529081208054839290611f839084906130ec565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561210157506001600160a01b03821615155b6121835760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610624565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610a988261164c565b60008060006121d58585612436565b915091506121e2816124a4565b5090505b92915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610bca90859061265a565b6001600160a01b038216600090815260ce6020526040812054905b81811015612360576001600160a01b03848116600090815260ce602052604090208054918516918390811061229857612298612ff7565b6000918252602090912001546001600160a01b031603612358576001600160a01b038416600090815260ce6020526040902080546122d8906001906130ff565b815481106122e8576122e8612ff7565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061232557612325612ff7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550612360565b600101612261565b8181036123e75760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a401610624565b6001600160a01b038416600090815260ce6020526040902080548061240e5761240e613112565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b600080825160410361246c5760208301516040840151606085015160001a6124608782858561272c565b9450945050505061249d565b8251604003612495576020830151604084015161248a868383612819565b93509350505061249d565b506000905060025b9250929050565b60008160048111156124b8576124b8613128565b036124c05750565b60018160048111156124d4576124d4613128565b036125215760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610624565b600281600481111561253557612535613128565b036125825760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610624565b600381600481111561259657612596613128565b036125ee5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610624565b600481600481111561260257612602613128565b036106365760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610624565b60006126af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166128529092919063ffffffff16565b80519091501561185d57808060200190518101906126cd9190612eca565b61185d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610624565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156127635750600090506003612810565b8460ff16601b1415801561277b57508460ff16601c14155b1561278c5750600090506004612810565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661280957600060019250925050612810565b9150600090505b94509492505050565b6000806001600160ff1b0383168161283660ff86901c601b6130ec565b90506128448782888561272c565b935093505050935093915050565b60606128618484600085612869565b949350505050565b6060824710156128ca5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610624565b6001600160a01b0385163b6129215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610624565b600080866001600160a01b0316858760405161293d919061313e565b60006040518083038185875af1925050503d806000811461297a576040519150601f19603f3d011682016040523d82523d6000602084013e61297f565b606091505b509150915061298f82828661299a565b979650505050505050565b606083156129a9575081611d45565b8251156129b95782518084602001fd5b8160405162461bcd60e51b8152600401610624919061315a565b6001600160a01b038116811461063657600080fd5b6000602082840312156129fa57600080fd5b8135611d45816129d3565b600060208284031215612a1757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215612a4d57600080fd5b8635612a58816129d3565b95506020870135612a68816129d3565b9450604087013593506060870135612a7f816129d3565b92506080870135915060a087013567ffffffffffffffff811115612aa257600080fd5b8701601f81018913612ab357600080fd5b803567ffffffffffffffff811115612acd57612acd612a1e565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612afc57612afc612a1e565b6040528181528282016020018b1015612b1457600080fd5b816020840160208301376000602083830101528093505050509295509295509295565b801515811461063657600080fd5b60008060408385031215612b5857600080fd5b8235612b63816129d3565b91506020830135612b7381612b37565b809150509250929050565b600060208284031215612b9057600080fd5b813560ff81168114611d4557600080fd5b60008060408385031215612bb457600080fd5b8235612bbf816129d3565b91506020830135612b73816129d3565b600080600060608486031215612be457600080fd5b8335612bef816129d3565b92506020840135612bff816129d3565b929592945050506040919091013590565b6040808252835190820181905260009060208501906060840190835b81811015612c535783516001600160a01b0316835260209384019390920191600101612c2c565b50508381036020808601919091528551808352918101925085019060005b81811015612c8f578251845260209384019390920191600101612c71565b50919695505050505050565b60008083601f840112612cad57600080fd5b50813567ffffffffffffffff811115612cc557600080fd5b6020830191508360208260051b850101111561249d57600080fd5b60008060208385031215612cf357600080fd5b823567ffffffffffffffff811115612d0a57600080fd5b612d1685828601612c9b565b90969095509350505050565b60008060008060808587031215612d3857600080fd5b8435612d43816129d3565b93506020850135612d53816129d3565b92506040850135612d63816129d3565b9396929550929360600135925050565b60008060008060808587031215612d8957600080fd5b8435612d94816129d3565b93506020850135612da4816129d3565b9250604085013591506060850135612dbb816129d3565b939692955090935050565b60008060408385031215612dd957600080fd5b8235612de4816129d3565b946020939093013593505050565b60008060008060408587031215612e0857600080fd5b843567ffffffffffffffff811115612e1f57600080fd5b612e2b87828801612c9b565b909550935050602085013567ffffffffffffffff811115612e4b57600080fd5b612e5787828801612c9b565b95989497509550505050565b600060208284031215612e7557600080fd5b8151611d45816129d3565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612edc57600080fd5b8151611d4581612b37565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561301f57600080fd5b8135611d4581612b37565b60005b8381101561304557818101518382015260200161302d565b50506000910152565b6000815180845261306681602086016020860161302a565b601f01601f19169290920160200192915050565b828152604060208201526000612861604083018461304e565b6000602082840312156130a557600080fd5b81516001600160e01b031981168114611d4557600080fd5b6000602082840312156130cf57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156121e6576121e66130d6565b818103818111156121e6576121e66130d6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000825161315081846020870161302a565b9190910192915050565b602081526000611d45602083018461304e56fea2646970667358221220c44798d4ada1e90848e8d31a2c80c503dc1cf81f9a5671db1af6a45d97d3e5c364736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x0e801d84fa97b50751dbf25036d067dcf18858bf": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639f3ccf651161010f578063c8294c56116100a2578063f2be94ae11610071578063f2be94ae1461054b578063f851e1981461055e578063fa28c62714610571578063ff694a771461058457600080fd5b8063c8294c56146104d6578063d5eccc05146104e9578063dd9846b9146104fc578063df5cf7231461052457600080fd5b8063bc9a40c3116100de578063bc9a40c314610474578063bd29b8cd14610487578063c46778a51461049a578063c601527d146104c357600080fd5b80639f3ccf65146103ee578063ac6bfb0314610401578063adc804da14610421578063b6904b781461046157600080fd5b80634bd26e091161018757806366acfefe1161015657806366acfefe1461034a5780636d14a987146103755780637c172347146103b457806381c07502146103ce57600080fd5b80634bd26e09146102e55780635401ed27146103155780635e5a6775146103285780635f1f2d771461033757600080fd5b806320b66298116101c357806320b662981461026c57806325504777146102815780632cd95940146102a25780633ca5a5f5146102c257600080fd5b80630491b41c146101ea57806308732461146102205780631f9b74e014610241575b600080fd5b61020d6101f8366004612bca565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b61023361022e366004612be5565b610597565b604051610217929190612c0f565b61025461024f366004612c49565b6105e0565b6040516001600160601b039091168152602001610217565b61027f61027a366004612cc4565b610632565b005b61029461028f366004612d85565b610959565b604051610217929190612e25565b6102b56102b0366004612e4a565b610c15565b6040516102179190612e76565b61020d6102d0366004612bca565b60ff1660009081526003602052604090205490565b61020d6102f3366004612e4a565b600091825260026020908152604080842060ff93909316845291905290205490565b610254610323366004612e4a565b610cb4565b61020d670de0b6b3a764000081565b61027f610345366004612f7f565b610ccd565b61035d610358366004612d85565b6110e3565b6040516001600160c01b039091168152602001610217565b61039c7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b039091168152602001610217565b6103bc602081565b60405160ff9091168152602001610217565b6103e16103dc36600461303b565b611240565b604051610217919061308d565b61039c6103fc366004612be5565b6114f5565b61041461040f3660046130cb565b61152d565b60405161021791906130fe565b61043461042f366004612be5565b6115c5565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610217565b61041461046f366004612be5565b61163f565b61027f61048236600461314a565b6116ce565b61027f610495366004613174565b6117c7565b6102546104a8366004612bca565b6000602081905290815260409020546001600160601b031681565b61027f6104d1366004613240565b6118e9565b6102546104e436600461328d565b6119dd565b6102546104f7366004612bca565b611a5b565b61050f61050a3660046132c9565b611aae565b60405163ffffffff9091168152602001610217565b61039c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610254610559366004613305565b611ac3565b61041461056c366004612e4a565b611b58565b61025461057f3660046132c9565b611c41565b61027f610592366004613347565b611ca2565b600360205281600052604060002081815481106105b357600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff8216600090815260016020526040812054839061061a5760405162461bcd60e51b8152600401610611906133a4565b60405180910390fd5b60006106268585611e0d565b509250505b5092915050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b491906133f5565b6001600160a01b0316336001600160a01b0316146106e45760405162461bcd60e51b815260040161061190613412565b846107008160ff16600090815260016020526040902054151590565b61071c5760405162461bcd60e51b8152600401610611906133a4565b8380610792576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152608401610611565b8281146108075760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608401610611565b60ff87166000908152600360205260408120905b8281101561094e578585828181106108355761083561348e565b905060200201602081019061084a91906134a4565b8289898481811061085d5761085d61348e565b90506020020135815481106108745761087461348e565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a858181106108dd576108dd61348e565b90506020020135815481106108f4576108f461348e565b6000918252602090912001546001600160a01b031688888581811061091b5761091b61348e565b905060200201602081019061093091906134a4565b60405161093e929190612c0f565b60405180910390a260010161081b565b505050505050505050565b606080336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146109a45760405162461bcd60e51b8152600401610611906134bf565b6000836001600160401b038111156109be576109be612eee565b6040519080825280602002602001820160405280156109e7578160200160208202803683370190505b5090506000846001600160401b03811115610a0457610a04612eee565b604051908082528060200260200182016040528015610a2d578160200160208202803683370190505b50905060005b85811015610c07576000878783818110610a4f57610a4f61348e565b919091013560f81c60008181526001602052604090205490925015159050610ad75760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608401610611565b600080610ae4838d611e0d565b9150915080610b815760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a401610611565b6000610b8e8c8585612001565b905082878681518110610ba357610ba361348e565b60200260200101906001600160601b031690816001600160601b031681525050610bcd8482612280565b868681518110610bdf57610bdf61348e565b6001600160601b0390921660209283029190910190910152505060019092019150610a339050565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610ca7576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c4e565b5050505090505b92915050565b600080610cc18484611b58565b60400151949350505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f91906133f5565b6001600160a01b0316336001600160a01b031614610d7f5760405162461bcd60e51b815260040161061190613412565b81610d9b8160ff16600090815260016020526040902054151590565b610db75760405162461bcd60e51b8152600401610611906133a4565b815180610e2c5760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608401610611565b60ff841660009081526003602090815260408083206004909252822090915b838110156110da578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e8b57610e8b61348e565b602002602001015181548110610ea357610ea361348e565b600091825260209182902001546040516001600160a01b0390911681520160405180910390a28660ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7584888481518110610f0157610f0161348e565b602002602001015181548110610f1957610f1961348e565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f5990600190613547565b81548110610f6957610f6961348e565b9060005260206000200183878381518110610f8657610f8661348e565b602002602001015181548110610f9e57610f9e61348e565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610ff157610ff161355a565b6000828152602081208201600019908101919091550190558154829061101990600190613547565b815481106110295761102961348e565b9060005260206000200160009054906101000a90046001600160a01b03168287838151811061105a5761105a61348e565b6020026020010151815481106110725761107261348e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806110b0576110b061355a565b600082815260209020810160001990810180546001600160a01b0319169055019055600101610e4b565b50505050505050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461112d5760405162461bcd60e51b8152600401610611906134bf565b6000805b8381101561123657600085858381811061114d5761114d61348e565b919091013560f81c600081815260016020526040902054909250151590506111dd5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608401610611565b6000806111ea838b611e0d565b915091508061120c5760009150600160ff84161b6001600160c01b0386161794505b60006112198a8585612001565b90506112258482612280565b505060019093019250611131915050565b5095945050505050565b60606000826001600160401b0381111561125c5761125c612eee565b604051908082528060200260200182016040528015611285578160200160208202803683370190505b50905060005b838110156114ea5760008585838181106112a7576112a761348e565b919091013560f81c600081815260016020526040902054909250151590506113465760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a401610611565b60ff81166000908152600160205260408120805463ffffffff8a16929061136f5761136f61348e565b60009182526020909120015463ffffffff16111561141b5760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a401610611565b60ff8116600090815260016020526040812054905b818110156114df5760ff8316600090815260016020819052604090912063ffffffff8b169161145f8486613547565b6114699190613547565b815481106114795761147961348e565b60009182526020909120015463ffffffff16116114d757600161149c8284613547565b6114a69190613547565b8585815181106114b8576114b861348e565b602002602001019063ffffffff16908163ffffffff16815250506114df565b600101611430565b50505060010161128b565b5090505b9392505050565b6004602052816000526040600020818154811061151157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60408051606081018252600080825260208083018290528284018290528582526002815283822060ff881683529052919091208054839081106115725761157261348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115fd576115fd61348e565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182526000808252602080830182905282840182905260ff86168252600190529190912080548390811061167c5761167c61348e565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175091906133f5565b6001600160a01b0316336001600160a01b0316146117805760405162461bcd60e51b815260040161061190613412565b8161179c8160ff16600090815260016020526040902054151590565b6117b85760405162461bcd60e51b8152600401610611906133a4565b6117c283836123f7565b505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461180f5760405162461bcd60e51b8152600401610611906134bf565b60005b818110156118e357600083838381811061182e5761182e61348e565b919091013560f81c600081815260016020526040902054909250151590506118be5760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610611565b60006118cc86836000612001565b90506118d88282612280565b505050600101611812565b50505050565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b91906133f5565b6001600160a01b0316336001600160a01b03161461199b5760405162461bcd60e51b815260040161061190613412565b816119b78160ff16600090815260016020526040902054151590565b6119d35760405162461bcd60e51b8152600401610611906133a4565b6117c28383612460565b60ff83166000908152600160205260408120805482919084908110611a0457611a0461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610cc1818561288e565b60ff81166000908152600160208190526040822080549091611a7c91613547565b81548110611a8c57611a8c61348e565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611abb848484612a08565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611af457611af461348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b4b818661288e565b6040015195945050505050565b6040805160608082018352600080835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611bb5579150610cae9050565b600085815260026020908152604080832060ff881684529091529020611bdc600184613547565b81548110611bec57611bec61348e565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610cae915050565b600083815260026020908152604080832060ff861684529091528120611c68858585612a08565b63ffffffff1681548110611c7e57611c7e61348e565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614611cea5760405162461bcd60e51b8152600401610611906134bf565b60ff831660009081526001602052604090205415611d685760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608401610611565b611d728382612460565b611d7c83836123f7565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611e2c8660ff1660009081526003602052604090205490565b604080518082019091526000808252602082015290915060ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91692639004134792611ea1928c9201613570565b600060405180830381865afa158015611ebe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ee691908101906135d1565b905060005b83811015611fcd5760ff89166000908152600360205260409020805482908110611f1757611f1761348e565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611f6557611f6561348e565b60200260200101511115611fc557670de0b6b3a764000083602001516001600160601b0316838381518110611f9c57611f9c61348e565b6020026020010151611fae9190613661565b611fb89190613678565b611fc2908661369a565b94505b600101611eeb565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908082036120c757600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612226565b600086815260026020908152604080832060ff8916845290915281206120ee600184613547565b815481106120fe576120fe61348e565b600091825260209091200180546001600160601b03600160401b909104811694509091508516830361213657600093505050506114ee565b805463ffffffff43811691160361216e578054600160401b600160a01b031916600160401b6001600160601b03871602178155612224565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122768285612b6e565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122a49084613547565b815481106122b4576122b461348e565b906000526020600020019050836000036122e25754600160401b90046001600160601b03169150610cae9050565b805460009061230190600160401b90046001600160601b031686612b86565b825490915063ffffffff43811691160361233c578154600160401b600160a01b031916600160401b6001600160601b038316021782556123ee565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124c55760405162461bcd60e51b8152602060048201526038602482015260008051602061374183398151915260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608401610611565b805160ff8316600090815260036020908152604090912054906124e883836136ba565b11156125585760405162461bcd60e51b8152602060048201526045602482015260008051602061374183398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a401610611565b60005b828110156128875760005b61257082846136ba565b811015612646578482815181106125895761258961348e565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125c8576125c861348e565b6000918252602090912001546001600160a01b03160361263e5760405162461bcd60e51b815260206004820152603d602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608401610611565b600101612566565b50600084828151811061265b5761265b61348e565b6020026020010151602001516001600160601b0316116126e05760405162461bcd60e51b8152602060048201526046602482015260008051602061374183398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a401610611565b60ff8516600090815260036020526040902084518590839081106127065761270661348e565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff871682526004905260409020845185908390811061276b5761276b61348e565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404908690849081106127e2576127e261348e565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061283f5761283f61348e565b60200260200101516000015186848151811061285d5761285d61348e565b602002602001015160200151604051612877929190612c0f565b60405180910390a260010161255b565b5050505050565b816000015163ffffffff168163ffffffff1610156129335760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a401610611565b602082015163ffffffff1615806129595750816020015163ffffffff168163ffffffff16105b612a045760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c401610611565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612aa957600086815260026020908152604080832060ff89168452909152902063ffffffff851690612a5c600184613547565b81548110612a6c57612a6c61348e565b60009182526020909120015463ffffffff1611612a9757612a8e600182613547565b925050506114ee565b80612aa1816136cd565b915050612a27565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e401610611565b60006114ee6001600160601b038085169084166136e4565b600080821215612baa57612b9982613704565b612ba39084613720565b9050610cae565b612ba3828461369a565b803560ff81168114612bc557600080fd5b919050565b600060208284031215612bdc57600080fd5b6114ee82612bb4565b60008060408385031215612bf857600080fd5b612c0183612bb4565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612c4657600080fd5b50565b60008060408385031215612c5c57600080fd5b612c6583612bb4565b91506020830135612c7581612c31565b809150509250929050565b60008083601f840112612c9257600080fd5b5081356001600160401b03811115612ca957600080fd5b6020830191508360208260051b8501011115611ffa57600080fd5b600080600080600060608688031215612cdc57600080fd5b612ce586612bb4565b945060208601356001600160401b0380821115612d0157600080fd5b612d0d89838a01612c80565b90965094506040880135915080821115612d2657600080fd5b50612d3388828901612c80565b969995985093965092949392505050565b60008083601f840112612d5657600080fd5b5081356001600160401b03811115612d6d57600080fd5b602083019150836020828501011115611ffa57600080fd5b60008060008060608587031215612d9b57600080fd5b8435612da681612c31565b93506020850135925060408501356001600160401b03811115612dc857600080fd5b612dd487828801612d44565b95989497509550505050565b60008151808452602080850194506020840160005b83811015612e1a5781516001600160601b031687529582019590820190600101612df5565b509495945050505050565b604081526000612e386040830185612de0565b82810360208401526123ee8185612de0565b60008060408385031215612e5d57600080fd5b82359150612e6d60208401612bb4565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257612ecf83855163ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b9284019260609290920191600101612e92565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f2657612f26612eee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f5457612f54612eee565b604052919050565b60006001600160401b03821115612f7557612f75612eee565b5060051b60200190565b60008060408385031215612f9257600080fd5b612f9b83612bb4565b91506020808401356001600160401b03811115612fb757600080fd5b8401601f81018613612fc857600080fd5b8035612fdb612fd682612f5c565b612f2c565b81815260059190911b82018301908381019088831115612ffa57600080fd5b928401925b8284101561301857833582529284019290840190612fff565b80955050505050509250929050565b803563ffffffff81168114612bc557600080fd5b60008060006040848603121561305057600080fd5b61305984613027565b925060208401356001600160401b0381111561307457600080fd5b61308086828701612d44565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612ee257835163ffffffff16835292840192918401916001016130a9565b6000806000606084860312156130e057600080fd5b6130e984612bb4565b95602085013595506040909401359392505050565b815163ffffffff9081168252602080840151909116908201526040808301516001600160601b03169082015260608101610cae565b80356001600160601b0381168114612bc557600080fd5b6000806040838503121561315d57600080fd5b61316683612bb4565b9150612e6d60208401613133565b60008060006040848603121561318957600080fd5b8335925060208401356001600160401b0381111561307457600080fd5b600082601f8301126131b757600080fd5b813560206131c7612fd683612f5c565b82815260069290921b840181019181810190868411156131e657600080fd5b8286015b8481101561323557604081890312156132035760008081fd5b61320b612f04565b813561321681612c31565b8152613223828601613133565b818601528352918301916040016131ea565b509695505050505050565b6000806040838503121561325357600080fd5b61325c83612bb4565b915060208301356001600160401b0381111561327757600080fd5b613283858286016131a6565b9150509250929050565b6000806000606084860312156132a257600080fd5b6132ab84612bb4565b92506132b960208501613027565b9150604084013590509250925092565b6000806000606084860312156132de57600080fd5b833592506132ee60208501612bb4565b91506132fc60408501613027565b90509250925092565b6000806000806080858703121561331b57600080fd5b61332485612bb4565b935061333260208601613027565b93969395505050506040820135916060013590565b60008060006060848603121561335c57600080fd5b61336584612bb4565b925061337360208501613133565b915060408401356001600160401b0381111561338e57600080fd5b61339a868287016131a6565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b60006020828403121561340757600080fd5b81516114ee81612c31565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156134b657600080fd5b6114ee82613133565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610cae57610cae613531565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b038086168452602060406020860152828654808552606087019150876000526020600020945060005b818110156135c35785548516835260019586019592840192016135a5565b509098975050505050505050565b600060208083850312156135e457600080fd5b82516001600160401b038111156135fa57600080fd5b8301601f8101851361360b57600080fd5b8051613619612fd682612f5c565b81815260059190911b8201830190838101908783111561363857600080fd5b928401925b828410156136565783518252928401929084019061363d565b979650505050505050565b8082028115828204841417610cae57610cae613531565b60008261369557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160601b0381811683821601908082111561062b5761062b613531565b80820180821115610cae57610cae613531565b6000816136dc576136dc613531565b506000190190565b818103600083128015838313168383128216171561062b5761062b613531565b6000600160ff1b820161371957613719613531565b5060000390565b6001600160601b0382811682821603908082111561062b5761062b61353156fe5374616b6552656769737472792e5f6164645374726174656779506172616d73a264697066735822122086a228217be3aa4346ddc514699a0ca7893ec8b64cbf2023e3b1369fe2efcf1164736f6c63430008180033", - "storage": {}, - }, - "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632702747d14610046578063793e1c8e1461006f5780637be6aa6b14610090575b600080fd5b61005961005436600461023e565b6100a3565b6040516100669190610277565b60405180910390f35b61007861dead81565b6040516001600160a01b039091168152602001610066565b61005961009e3660046102c4565b6100fd565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166333cfb7b760e01b1790526060906100f3848261013a565b9150505b92915050565b6040805160048152602481019091526020810180516001600160e01b031663e481af9d60e01b179052606090610133838261013a565b9392505050565b6060600080846001600160a01b03168460405161015791906102e1565b600060405180830381855afa9150503d8060008114610192576040519150601f19603f3d011682016040523d82523d6000602084013e610197565b606091505b50915091508180156101aa575060008151115b156101cc57808060200190518101906101c39190610336565b925050506100f7565b6040805160018082528183019092526000916020808301908036833701905050905061dead81600081518110610204576102046103fb565b6001600160a01b039092166020928302919091019091015292506100f7915050565b6001600160a01b038116811461023b57600080fd5b50565b6000806040838503121561025157600080fd5b823561025c81610226565b9150602083013561026c81610226565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156102b85783516001600160a01b031683529284019291840191600101610293565b50909695505050505050565b6000602082840312156102d657600080fd5b813561013381610226565b6000825160005b8181101561030257602081860181015185830152016102e8565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b805161033181610226565b919050565b6000602080838503121561034957600080fd5b825167ffffffffffffffff8082111561036157600080fd5b818501915085601f83011261037557600080fd5b81518181111561038757610387610310565b8060051b604051601f19603f830116810181811085821117156103ac576103ac610310565b6040529182528482019250838101850191888311156103ca57600080fd5b938501935b828510156103ef576103e085610326565b845293850193928501926103cf565b98975050505050505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d2a1dc3d5b3de166be22fce7e789ceac2302c613380087624652f3f48de1ed0864736f6c63430008180033", - "storage": {}, - }, - "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063bd90df701461003b578063fa534dc01461006b575b600080fd5b60005461004e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61007e6100793660046101b7565b61008e565b6040519015158152602001610062565b60008054604051829182916001600160a01b03909116906100bf908c908c908c908c908c908c908c906024016102ed565b60408051601f198184030181529181526020820180516001600160e01b03166303e94d3760e61b179052516100f4919061035c565b600060405180830381855afa9150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b50915091508161017f5760405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b604482015260640160405180910390fd5b808060200190518101906101939190610378565b9a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a0312156101d257600080fd5b87359650602088013595506040880135945060608801356bffffffffffffffffffffffff198116811461020457600080fd5b93506080880135925060a088013567ffffffffffffffff8082111561022857600080fd5b818a0191508a601f83011261023c57600080fd5b81358181111561024e5761024e6101a1565b604051601f8201601f19908116603f01168101908382118183101715610276576102766101a1565b816040528281528d602084870101111561028f57600080fd5b82602086016020830137600060208483010152809650505050505060c0880135905092959891949750929550565b60005b838110156102d85781810151838201526020016102c0565b838111156102e7576000848401525b50505050565b8781528660208201528560408201526bffffffffffffffffffffffff198516606082015283608082015260e060a0820152600083518060e084015261010061033b82828601602089016102bd565b60c0840194909452601f01601f191691909101909101979650505050505050565b6000825161036e8184602087016102bd565b9190910192915050565b60006020828403121561038a57600080fd5b8151801515811461039a57600080fd5b939250505056fea2646970667358221220355151a18763854f71011cb9636c419bc4393ef5d1924777a929c1e19aaa390964736f6c634300080c0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c", - }, - }, - "0x36c02da8a0983159322a80ffe9f24b1acff8b570": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061035c5760003560e01c80635b0b829f116101d35780639e9923c211610104578063d72d8dd6116100a2578063e65797ad1161007c578063e65797ad14610897578063f2fde38b1461093a578063fabc1cbc1461094d578063fd39105a1461096057600080fd5b8063d72d8dd614610869578063d75b4c8814610871578063dd8283f31461088457600080fd5b8063a96f783e116100de578063a96f783e14610806578063c391425e1461080f578063ca0de8821461082f578063ca4f2d971461085657600080fd5b80639e9923c2146107a55780639feab859146107cc578063a50857bf146107f357600080fd5b8063715018a611610171578063886f11951161014b578063886f1195146107525780638da5cb5b1461076b5780639aa1653d146107735780639b5d177b1461079257600080fd5b8063715018a61461072457806384ca52131461072c578063871ef0491461073f57600080fd5b80636347c900116101ad5780636347c900146106c457806368304835146106d75780636c708904146106fe5780636e3b17db1461071157600080fd5b80635b0b829f146106825780635c975abb146106955780635df459461461069d57600080fd5b8063249a0c42116102ad5780633af32abf1161024b57806353abfad41161022557806353abfad4146106285780635865c60c1461063b578063595c6a671461065b5780635ac86ab71461066357600080fd5b80633af32abf146105c95780633c2a7f4c146105f55780635140a5481461061557600080fd5b8063296bb06411610287578063296bb0641461056957806329d1e0c31461057c5780632cdd1e861461058f5780633998fdd3146105a257600080fd5b8063249a0c421461052357806328f61b311461054357806329092d0e1461055657600080fd5b80630d3f21341161031a57806313542a4e116102f457806313542a4e1461046b578063136439dd146104945780631478851f146104a75780631eb812da146104da57600080fd5b80630d3f21341461042557806310d67a2f14610438578063125e05841461044b57600080fd5b8062cf2ab51461036157806303fd34921461037657806304ec6351146103a9578063054310e6146103d45780630a3b0a4f146103ff5780630cf4b76714610412575b600080fd5b61037461036f366004614613565b61099c565b005b610396610384366004614654565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6103bc6103b736600461467f565b610aaa565b6040516001600160c01b0390911681526020016103a0565b609d546103e7906001600160a01b031681565b6040516001600160a01b0390911681526020016103a0565b61037461040d3660046146dc565b610bba565b6103746104203660046147e0565b610c0e565b610374610433366004614654565b610cb8565b6103746104463660046146dc565b610cc5565b6103966104593660046146dc565b609f6020526000908152604090205481565b6103966104793660046146dc565b6001600160a01b031660009081526099602052604090205490565b6103746104a2366004614654565b610d78565b6104ca6104b5366004614654565b609a6020526000908152604090205460ff1681565b60405190151581526020016103a0565b6104ed6104e8366004614830565b610eb5565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016103a0565b610396610531366004614863565b609b6020526000908152604090205481565b609e546103e7906001600160a01b031681565b6103746105643660046146dc565b610f46565b6103e7610577366004614654565b610f97565b61037461058a3660046146dc565b611023565b61037461059d3660046146dc565b611034565b6103e77f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c81565b6104ca6105d73660046146dc565b6001600160a01b0316600090815260c8602052604090205460ff1690565b6106086106033660046146dc565b611045565b6040516103a0919061487e565b6103746106233660046148d6565b6110c4565b610374610636366004614964565b61149a565b61064e6106493660046146dc565b611560565b6040516103a09190614a3a565b6103746115d4565b6104ca610671366004614863565b6001805460ff9092161b9081161490565b610374610690366004614abf565b6116a0565b600154610396565b6103e77f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b6103e76106d2366004614654565b6116fa565b6103e77f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b61037461070c366004614964565b611724565b61037461071f366004614af3565b6117e6565b61037461193b565b61039661073a366004614b87565b61194f565b6103bc61074d366004614654565b611999565b6000546103e7906201000090046001600160a01b031681565b6103e76119a4565b6096546107809060ff1681565b60405160ff90911681526020016103a0565b6103746107a0366004614d20565b6119bd565b6103e77f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377881565b6103967f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b610374610801366004614e19565b611cd6565b61039660a05481565b61082261081d366004614ec1565b611e3b565b6040516103a09190614f66565b6103967f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b610374610864366004614fb0565b611eea565b609c54610396565b61037461087f366004615096565b611f50565b610374610892366004615253565b611f63565b6109066108a5366004614863565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016103a0565b6103746109483660046146dc565b612223565b61037461095b366004614654565b612299565b61098f61096e3660046146dc565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516103a09190615327565b6001546002906004908116036109cd5760405162461bcd60e51b81526004016109c490615335565b60405180910390fd5b60005b82811015610aa45760008484838181106109ec576109ec61536c565b9050602002016020810190610a0191906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115610a4c57610a4c614a02565b6002811115610a5d57610a5d614a02565b90525080519091506000610a70826123f5565b90506000610a86826001600160c01b0316612460565b9050610a9385858361252c565b5050600190930192506109d0915050565b50505050565b6000838152609860205260408120805482919084908110610acd57610acd61536c565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610b535760405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b60448201526064016109c4565b602081015163ffffffff161580610b795750806020015163ffffffff168463ffffffff16105b610bae5760405162461bcd60e51b81526004016109c49060208082526004908201526331371e1960e11b604082015260600190565b60400151949350505050565b610bc2612619565b6001600160a01b038116600081815260c86020526040808220805460ff19166001179055517f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9190a250565b60013360009081526099602052604090206001015460ff166002811115610c3757610c37614a02565b14610c6c5760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610cad9084906153c8565b60405180910390a250565b610cc0612619565b60a055565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c91906153db565b6001600160a01b0316336001600160a01b031614610d6c5760405162461bcd60e51b81526004016109c4906153f8565b610d7581612678565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190615442565b610e055760405162461bcd60e51b81526004016109c490615464565b60015481811614610e7e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610cad565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610ef257610ef261536c565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b610f4e612619565b6001600160a01b038116600081815260c86020526040808220805460ff19169055517f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9190a250565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316906347b314e890602401602060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4091906153db565b61102b612619565b610d758161277d565b61103c612619565b610d75816127e6565b6040805180820190915260008082526020820152610f406110bf7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6846040516020016110a49291909182526001600160a01b0316602082015260400190565b6040516020818303038152906040528051906020012061284f565b61289d565b6001546002906004908116036110ec5760405162461bcd60e51b81526004016109c490615335565b600061113484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905084831461116e5760405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b60448201526064016109c4565b60005b8381101561149157600085858381811061118d5761118d61536c565b919091013560f81c915036905060008989858181106111ae576111ae61536c565b90506020028101906111c091906154ac565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03169063f341092290602401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154f5565b63ffffffff16811461128f5760405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b60448201526064016109c4565b6000805b828110156114365760008484838181106112af576112af61536c565b90506020020160208101906112c491906146dc565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561130f5761130f614a02565b600281111561132057611320614a02565b90525080519091506000611333826123f5565b905060016001600160c01b03821660ff8b161c8116146113805760405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b60448201526064016109c4565b856001600160a01b0316846001600160a01b0316116113cb5760405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b60448201526064016109c4565b5061142983838f8f8d908e60016113e29190615528565b926113ef9392919061553b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061252c92505050565b5090925050600101611293565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a250505050806001019050611171565b50505050505050565b6114a2612619565b60005b815181101561155c57600060c860008484815181106114c6576114c661536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106115175761151761536c565b60200260200101516001600160a01b03167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc60405160405180910390a26001016114a5565b5050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff1660028111156115ba576115ba614a02565b60028111156115cb576115cb614a02565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116459190615442565b6116615760405162461bcd60e51b81526004016109c490615464565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6116a8612619565b609654829060ff908116908216106116eb5760405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b60448201526064016109c4565b6116f583836129bd565b505050565b609c818154811061170a57600080fd5b6000918252602090912001546001600160a01b0316905081565b61172c612619565b60005b815181101561155c57600160c860008484815181106117505761175061536c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508181815181106117a1576117a161536c565b60200260200101516001600160a01b03167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f60405160405180910390a260010161172f565b609e546001600160a01b0316331461182d5760405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b60448201526064016109c4565b6001600160a01b0383166000908152609f602090815260408083204290556099825280832080548251601f870185900485028101850190935285835290939092909161189a9187908790819084018382808284376000920191909152505060965460ff16915061292c9050565b905060006118a7836123f5565b905060018085015460ff1660028111156118c3576118c3614a02565b1480156118d857506001600160c01b03821615155b80156118f657506118f66001600160c01b0383811690831681161490565b15611491576114918787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611943612619565b61194d6000612df2565b565b600061198f7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a87878787876040516020016110a496959493929190615565565b9695505050505050565b6000610f40826123f5565b60006119b86064546001600160a01b031690565b905090565b60018054600091908116036119e45760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611a355760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b838914611a6d5760405162461bcd60e51b81526004016109c49060208082526004908201526338a632b760e11b604082015260600190565b6000611a793388612e44565b9050611ad933828888808060200260200160405190810160405280939291908181526020016000905b82821015611ace57611abf604083028601368190038101906155ed565b81526020019060010190611aa2565b505050505087612f79565b6000611b2033838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b90506000609760008e8e6000818110611b3b57611b3b61536c565b919091013560f81c825250602080820192909252604090810160009081208251606081018452905463ffffffff811680835261ffff600160201b8304811696840196909652600160301b909104909416928101929092528451805192945091611ba657611ba661536c565b602002602001015163ffffffff161115611cc757611c4b8d8d6000818110611bd057611bd061536c565b9050013560f81c60f81b60f81c8360400151600081518110611bf457611bf461536c565b6020026020010151338560200151600081518110611c1457611c1461536c565b60200260200101518c8c6000818110611c2f57611c2f61536c565b905060400201803603810190611c4591906155ed565b86613519565b611cc788886000818110611c6157611c6161536c565b9050604002016020016020810190611c7991906146dc565b8e8e600090600192611c8d9392919061553b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b50505050505050505050505050565b6001805460009190811603611cfd5760405162461bcd60e51b81526004016109c490615335565b33600090815260c8602052604090205460ff16611d4e5760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016109c4565b6000611d5a3385612e44565b90506000611da333838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613055915050565b51600080805260976020527f683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c754825192935063ffffffff1691839190611deb57611deb61536c565b602002602001015163ffffffff161115611e305760405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b60448201526064016109c4565b505050505050505050565b6060600082516001600160401b03811115611e5857611e586146f9565b604051908082528060200260200182016040528015611e81578160200160208202803683370190505b50905060005b8351811015611ee257611eb385858381518110611ea657611ea661536c565b60200260200101516136e8565b828281518110611ec557611ec561536c565b63ffffffff90921660209283029190910190910152600101611e87565b509392505050565b60018054600290811603611f105760405162461bcd60e51b81526004016109c490615335565b6116f53384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6a92505050565b611f58612619565b6116f58383836137a1565b600054610100900460ff1615808015611f835750600054600160ff909116105b80611f9d5750303b158015611f9d575060005460ff166001145b6120005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109c4565b6000805460ff191660011790558015612023576000805461ff0019166101001790555b82518451148015612035575081518351145b6120665760405162461bcd60e51b8152602060048201526002602482015261494560f01b60448201526064016109c4565b61206f89612df2565b6120798686613983565b6120828861277d565b61208b876127e6565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81166001600160a01b03199283161790925585548085018755850180547f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49841690831617905585549384019095559190920180547f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377890921691909316179091555b84518110156121d2576121ca8582815181106121895761218961536c565b60200260200101518583815181106121a3576121a361536c565b60200260200101518584815181106121bd576121bd61536c565b60200260200101516137a1565b60010161216b565b508015611e30576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61222b612619565b6001600160a01b0381166122905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c4565b610d7581612df2565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231091906153db565b6001600160a01b0316336001600160a01b0316146123405760405162461bcd60e51b81526004016109c4906153f8565b6001541981196001541916146123be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016109c4565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610cad565b6000818152609860205260408120548082036124145750600092915050565b600083815260986020526040902061242d600183615609565b8154811061243d5761243d61536c565b600091825260209091200154600160401b90046001600160c01b03169392505050565b606060008061246e84613a6f565b61ffff166001600160401b03811115612489576124896146f9565b6040519080825280601f01601f1916602001820160405280156124b3576020820181803683370190505b5090506000805b8251821080156124cb575061010081105b15612522576001811b935085841615612512578060f81b8383815181106124f4576124f461536c565b60200101906001600160f81b031916908160001a9053508160010191505b61251b8161561c565b90506124ba565b5090949350505050565b60018260200151600281111561254457612544614a02565b1461254e57505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16906366acfefe906125a390889086908890600401615635565b6020604051808303816000875af11580156125c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e69190615665565b90506001600160c01b03811615612612576126128561260d836001600160c01b0316612460565b612a6a565b5050505050565b336126226119a4565b6001600160a01b03161461194d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109c4565b6001600160a01b0381166127065760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016109c4565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f4061285c613a9a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6040805180820190915260008082526020820152600080806128cd600080516020615b01833981519152866156a4565b90505b6128d981613bc1565b9093509150600080516020615b018339815191528283098303612912576040805180820190915290815260208101919091529392505050565b600080516020615b018339815191526001820890506128d0565b60008061293884613c43565b9050808360ff166001901b116129b65760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016109c4565b9392505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609960205260409020805460018083015460ff166002811115612a9e57612a9e614a02565b14612ad35760405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b60448201526064016109c4565b609654600090612ae790859060ff1661292c565b90506000612af4836123f5565b90506001600160c01b038216612b355760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b612b4c6001600160c01b0383811690831681161490565b612b815760405162461bcd60e51b81526004016109c49060208082526004908201526310a9bab160e11b604082015260600190565b6001600160c01b0382811619821616612b9a8482613dcb565b6001600160c01b038116612c695760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169063a364f4da90602401600060405180830381600087803b158015612c1a57600080fd5b505af1158015612c2e573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49169063f4e24fe590612cb7908a908a906004016156b8565b600060405180830381600087803b158015612cd157600080fd5b505af1158015612ce5573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e16925063bd29b8cd9150612d379087908a906004016156dc565b600060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf611377816925063bd29b8cd9150612db79087908a906004016156dc565b600060405180830381600087803b158015612dd157600080fd5b505af1158015612de5573d6000803e3d6000fd5b5050505050505050505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49909116906313542a4e90602401602060405180830381865afa158015612eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed391906156f5565b90506000819003610f40577f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031663bf79ce588484612f1887611045565b6040518463ffffffff1660e01b8152600401612f369392919061570e565b6020604051808303816000875af1158015612f55573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b691906156f5565b6020808201516000908152609a909152604090205460ff1615612fc75760405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b60448201526064016109c4565b42816040015110156130035760405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b60448201526064016109c4565b602080820180516000908152609a909252604091829020805460ff19166001179055609d54905191830151610aa4926001600160a01b039092169161304e918891889188919061194f565b8351613f8c565b61307960405180606001604052806060815260200160608152602001606081525090565b60006130c186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff16915061292c9050565b905060006130ce886123f5565b90506001600160c01b03821661310f5760405162461bcd60e51b81526004016109c490602080825260049082015263071456d760e41b604082015260600190565b8082166001600160c01b0316156131515760405162461bcd60e51b81526004016109c49060208082526004908201526308509a5d60e21b604082015260600190565b60a0546001600160a01b038a166000908152609f60205260409020546001600160c01b03838116908516179142916131899190615528565b106131be5760405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b60448201526064016109c4565b6131c88982613dcb565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516131f891906153c8565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff16600281111561323257613232614a02565b1461334b576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff19169083600281111561328d5761328d614a02565b021790555050604051639926ee7d60e01b81526001600160a01b037f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c169150639926ee7d906132e2908d90899060040161577e565b600060405180830381600087803b1580156132fc57600080fd5b505af1158015613310573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc491690633fb279529061339b908d908c908c906004016157f2565b600060405180830381600087803b1580156133b557600080fd5b505af11580156133c9573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1692506325504777915061341f908d908d908d908d90600401615817565b6000604051808303816000875af115801561343e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261346691908101906158a7565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778169062bff04d906134c3908c908c908c9060040161590a565b6000604051808303816000875af11580156134e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350a9190810190615924565b84525050509695505050505050565b6020808301516001600160a01b03808216600081815260999094526040909320549192908716036135725760405162461bcd60e51b815260206004820152600360248201526206368360ec1b60448201526064016109c4565b8760ff16846000015160ff16146135b15760405162461bcd60e51b815260206004820152600360248201526263683160e81b60448201526064016109c4565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690635401ed2790604401602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364691906159b2565b90506136528185614146565b6001600160601b0316866001600160601b0316116136985760405162461bcd60e51b815260206004820152600360248201526231b41960e91b60448201526064016109c4565b6136a2888561416a565b6001600160601b0316816001600160601b031610611e305760405162461bcd60e51b815260206004820152600360248201526263683360e81b60448201526064016109c4565b600081815260986020526040812054815b8181101561377057600161370d8284615609565b6137179190615609565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff168154811061374a5761374a61536c565b60009182526020909120015463ffffffff1611613768575050610f40565b6001016136f9565b5060405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b60448201526064016109c4565b60965460ff1660c081106137e05760405162461bcd60e51b81526004016109c4906020808252600490820152630e29ac2f60e31b604082015260600190565b6137eb8160016159cf565b6096805460ff191660ff929092169190911790558061380a81866129bd565b60405160016296b58960e01b031981526001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e169063ff694a779061385d908490889088906004016159e8565b600060405180830381600087803b15801561387757600080fd5b505af115801561388b573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031692506326d941f29150602401600060405180830381600087803b1580156138f357600080fd5b505af1158015613907573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b031692506326d941f29150602401600060405180830381600087803b15801561396f57600080fd5b505af1158015611e30573d6000803e3d6000fd5b6000546201000090046001600160a01b03161580156139aa57506001600160a01b03821615155b613a2c5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016109c4565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261155c82612678565b6000805b8215610f4057613a84600184615609565b9092169180613a9281615a64565b915050613a73565b6000306001600160a01b037f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57016148015613af357507f0000000000000000000000000000000000000000000000000000000000007a6946145b15613b1d57507fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d11828401527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615b018339815191526003600080516020615b0183398151915286600080516020615b01833981519152888909090890506000613c37827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615b01833981519152614184565b91959194509092505050565b600061010082511115613ccc5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016109c4565b8151600003613cdd57506000919050565b60008083600081518110613cf357613cf361536c565b0160200151600160f89190911c81901b92505b8451811015613dc257848181518110613d2157613d2161536c565b0160200151600160f89190911c1b9150828211613db65760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016109c4565b91811791600101613d06565b50909392505050565b60008281526098602052604081205490819003613e73576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609860205260408120613e8c600184615609565b81548110613e9c57613e9c61536c565b6000918252602090912001805490915063ffffffff438116911603613ede5780546001600160401b0316600160401b6001600160c01b03851602178155610aa4565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156140a657604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e90613fcc90869086906004016156dc565b602060405180830381865afa158015613fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400d9190615a85565b6001600160e01b031916146116f55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016109c4565b826001600160a01b03166140ba838361422d565b6001600160a01b0316146116f55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016109c4565b6020810151600090612710906141609061ffff1685615aaf565b6129b69190615ada565b6040810151600090612710906141609061ffff1685615aaf565b60008061418f614593565b6141976145b1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806141d457fe5b50826142225760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016109c4565b505195945050505050565b600080600061423c8585614249565b91509150611ee2816142b7565b600080825160410361427f5760208301516040840151606085015160001a6142738782858561446d565b945094505050506142b0565b82516040036142a8576020830151604084015161429d86838361455a565b9350935050506142b0565b506000905060025b9250929050565b60008160048111156142cb576142cb614a02565b036142d35750565b60018160048111156142e7576142e7614a02565b036143345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109c4565b600281600481111561434857614348614a02565b036143955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109c4565b60038160048111156143a9576143a9614a02565b036144015760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109c4565b600481600481111561441557614415614a02565b03610d755760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016109c4565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144a45750600090506003614551565b8460ff16601b141580156144bc57508460ff16601c14155b156144cd5750600090506004614551565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614521573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661454a57600060019250925050614551565b9150600090505b94509492505050565b6000806001600160ff1b0383168161457760ff86901c601b615528565b90506145858782888561446d565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126145e157600080fd5b5081356001600160401b038111156145f857600080fd5b6020830191508360208260051b85010111156142b057600080fd5b6000806020838503121561462657600080fd5b82356001600160401b0381111561463c57600080fd5b614648858286016145cf565b90969095509350505050565b60006020828403121561466657600080fd5b5035919050565b63ffffffff81168114610d7557600080fd5b60008060006060848603121561469457600080fd5b8335925060208401356146a68161466d565b929592945050506040919091013590565b6001600160a01b0381168114610d7557600080fd5b80356146d7816146b7565b919050565b6000602082840312156146ee57600080fd5b81356129b6816146b7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614731576147316146f9565b60405290565b604080519081016001600160401b0381118282101715614731576147316146f9565b604051601f8201601f191681016001600160401b0381118282101715614781576147816146f9565b604052919050565b60006001600160401b038311156147a2576147a26146f9565b6147b5601f8401601f1916602001614759565b90508281528383830111156147c957600080fd5b828260208301376000602084830101529392505050565b6000602082840312156147f257600080fd5b81356001600160401b0381111561480857600080fd5b8201601f8101841361481957600080fd5b61482884823560208401614789565b949350505050565b6000806040838503121561484357600080fd5b50508035926020909101359150565b803560ff811681146146d757600080fd5b60006020828403121561487557600080fd5b6129b682614852565b815181526020808301519082015260408101610f40565b60008083601f8401126148a757600080fd5b5081356001600160401b038111156148be57600080fd5b6020830191508360208285010111156142b057600080fd5b600080600080604085870312156148ec57600080fd5b84356001600160401b038082111561490357600080fd5b61490f888389016145cf565b9096509450602087013591508082111561492857600080fd5b5061493587828801614895565b95989497509550505050565b60006001600160401b0382111561495a5761495a6146f9565b5060051b60200190565b6000602080838503121561497757600080fd5b82356001600160401b0381111561498d57600080fd5b8301601f8101851361499e57600080fd5b80356149b16149ac82614941565b614759565b81815260059190911b820183019083810190878311156149d057600080fd5b928401925b828410156149f75783356149e8816146b7565b825292840192908401906149d5565b979650505050505050565b634e487b7160e01b600052602160045260246000fd5b60038110614a3657634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614a5590840182614a18565b5092915050565b803561ffff811681146146d757600080fd5b600060608284031215614a8057600080fd5b614a8861470f565b90508135614a958161466d565b8152614aa360208301614a5c565b6020820152614ab460408301614a5c565b604082015292915050565b60008060808385031215614ad257600080fd5b614adb83614852565b9150614aea8460208501614a6e565b90509250929050565b600080600060408486031215614b0857600080fd5b8335614b13816146b7565b925060208401356001600160401b03811115614b2e57600080fd5b614b3a86828701614895565b9497909650939450505050565b600060408284031215614b5957600080fd5b614b61614737565b9050614b6c82614852565b81526020820135614b7c816146b7565b602082015292915050565b600080600080600060a08688031215614b9f57600080fd5b8535614baa816146b7565b945060208681013594506040808801356001600160401b03811115614bce57600080fd5b8801601f81018a13614bdf57600080fd5b8035614bed6149ac82614941565b8082825260208201915060208360061b85010192508c831115614c0f57600080fd5b6020840193505b82841015614c3757614c288d85614b47565b82529284019290850190614c16565b999c989b5098996060810135995060800135979650505050505050565b60006101008284031215614c6757600080fd5b50919050565b60008083601f840112614c7f57600080fd5b5081356001600160401b03811115614c9657600080fd5b6020830191508360208260061b85010111156142b057600080fd5b600060608284031215614cc357600080fd5b614ccb61470f565b905081356001600160401b03811115614ce357600080fd5b8201601f81018413614cf457600080fd5b614d0384823560208401614789565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614d3f57600080fd5b89356001600160401b0380821115614d5657600080fd5b614d628d838e01614895565b909b50995060208c0135915080821115614d7b57600080fd5b614d878d838e01614895565b9099509750879150614d9c8d60408e01614c54565b96506101408c0135915080821115614db357600080fd5b614dbf8d838e01614c6d565b90965094506101608c0135915080821115614dd957600080fd5b614de58d838e01614cb1565b93506101808c0135915080821115614dfc57600080fd5b50614e098c828d01614cb1565b9150509295985092959850929598565b6000806000806000806101608789031215614e3357600080fd5b86356001600160401b0380821115614e4a57600080fd5b614e568a838b01614895565b90985096506020890135915080821115614e6f57600080fd5b614e7b8a838b01614895565b9096509450849150614e908a60408b01614c54565b9350610140890135915080821115614ea757600080fd5b50614eb489828a01614cb1565b9150509295509295509295565b60008060408385031215614ed457600080fd5b8235614edf8161466d565b91506020838101356001600160401b03811115614efb57600080fd5b8401601f81018613614f0c57600080fd5b8035614f1a6149ac82614941565b81815260059190911b82018301908381019088831115614f3957600080fd5b928401925b82841015614f5757833582529284019290840190614f3e565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015614fa457835163ffffffff1683529284019291840191600101614f82565b50909695505050505050565b60008060208385031215614fc357600080fd5b82356001600160401b03811115614fd957600080fd5b61464885828601614895565b6001600160601b0381168114610d7557600080fd5b600082601f83011261500b57600080fd5b8135602061501b6149ac83614941565b82815260069290921b8401810191818101908684111561503a57600080fd5b8286015b8481101561508b57604081890312156150575760008081fd5b61505f614737565b813561506a816146b7565b81528185013561507981614fe5565b8186015283529183019160400161503e565b509695505050505050565b600080600060a084860312156150ab57600080fd5b6150b58585614a6e565b925060608401356150c581614fe5565b915060808401356001600160401b038111156150e057600080fd5b6150ec86828701614ffa565b9150509250925092565b600082601f83011261510757600080fd5b813560206151176149ac83614941565b80838252602082019150606060206060860288010194508785111561513b57600080fd5b602087015b8581101561515f576151528982614a6e565b8452928401928101615140565b5090979650505050505050565b600082601f83011261517d57600080fd5b8135602061518d6149ac83614941565b8083825260208201915060208460051b8701019350868411156151af57600080fd5b602086015b8481101561508b5780356151c781614fe5565b83529183019183016151b4565b600082601f8301126151e557600080fd5b813560206151f56149ac83614941565b82815260059290921b8401810191818101908684111561521457600080fd5b8286015b8481101561508b5780356001600160401b038111156152375760008081fd5b6152458986838b0101614ffa565b845250918301918301615218565b600080600080600080600080610100898b03121561527057600080fd5b615279896146cc565b975061528760208a016146cc565b965061529560408a016146cc565b95506152a360608a016146cc565b94506080890135935060a08901356001600160401b03808211156152c657600080fd5b6152d28c838d016150f6565b945060c08b01359150808211156152e857600080fd5b6152f48c838d0161516c565b935060e08b013591508082111561530a57600080fd5b506153178b828c016151d4565b9150509295985092959890939650565b60208101610f408284614a18565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156153a85760208185018101518683018201520161538c565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006129b66020830184615382565b6000602082840312156153ed57600080fd5b81516129b6816146b7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561545457600080fd5b815180151581146129b657600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126154c357600080fd5b8301803591506001600160401b038211156154dd57600080fd5b6020019150600581901b36038213156142b057600080fd5b60006020828403121561550757600080fd5b81516129b68161466d565b634e487b7160e01b600052601160045260246000fd5b80820180821115610f4057610f40615512565b6000808585111561554b57600080fd5b8386111561555857600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a166020860152604089604087015260c0606087015283895180865260e08801915060208b01955060005b818110156155cd578651805160ff16845286015185168684015295850195918301916001016155a3565b505060808701989098525050505060a09091019190915250949350505050565b6000604082840312156155ff57600080fd5b6129b68383614b47565b81810381811115610f4057610f40615512565b60006001820161562e5761562e615512565b5060010190565b60018060a01b038416815282602082015260606040820152600061565c6060830184615382565b95945050505050565b60006020828403121561567757600080fd5b81516001600160c01b03811681146129b657600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826156b3576156b361568e565b500690565b6001600160a01b038316815260406020820181905260009061482890830184615382565b8281526040602082015260006148286040830184615382565b60006020828403121561570757600080fd5b5051919050565b6001600160a01b03841681526101608101615736602083018580358252602090810135910152565b615750606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614828565b60018060a01b03831681526040602082015260008251606060408401526157a860a0840182615382565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061565c90830184866157c9565b60018060a01b038516815283602082015260606040820152600061198f6060830184866157c9565b600082601f83011261585057600080fd5b815160206158606149ac83614941565b8083825260208201915060208460051b87010193508684111561588257600080fd5b602086015b8481101561508b57805161589a81614fe5565b8352918301918301615887565b600080604083850312156158ba57600080fd5b82516001600160401b03808211156158d157600080fd5b6158dd8683870161583f565b935060208501519150808211156158f357600080fd5b506159008582860161583f565b9150509250929050565b83815260406020820152600061565c6040830184866157c9565b6000602080838503121561593757600080fd5b82516001600160401b0381111561594d57600080fd5b8301601f8101851361595e57600080fd5b805161596c6149ac82614941565b81815260059190911b8201830190838101908783111561598b57600080fd5b928401925b828410156149f75783516159a38161466d565b82529284019290840190615990565b6000602082840312156159c457600080fd5b81516129b681614fe5565b60ff8181168382160190811115610f4057610f40615512565b60006060820160ff8616835260206001600160601b03808716602086015260406060604087015283875180865260808801915060208901955060005b81811015615a5457865180516001600160a01b031684528601518516868401529585019591830191600101615a24565b50909a9950505050505050505050565b600061ffff808316818103615a7b57615a7b615512565b6001019392505050565b600060208284031215615a9757600080fd5b81516001600160e01b0319811681146129b657600080fd5b6001600160601b03818116838216028082169190828114615ad257615ad2615512565b505092915050565b60006001600160601b0380841680615af457615af461568e565b9216919091049291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212207d5f90e3401cb54ad55455b7cbc4f8abf3101a8a6465b53d917fe6ec5da1e0c764736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x4826533b4897376654bb4d4ad88b7fafd0c98528": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610eac565b610268565b6040516100d89190610f28565b60405180910390f35b6100f46100ef366004610f9c565b6103be565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fcf565b610404565b005b6100f4610138366004610fea565b610528565b6101647f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fcf565b6105ae565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610f9c565b6105f5565b6040516100d8919061102d565b61018f6101e1366004610f9c565b610754565b6101286101f4366004610eac565b6107cb565b610201600081565b6040519081526020016100d8565b61024061021d366004611065565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fcf565b6108d5565b6060336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146102bb5760405162461bcd60e51b81526004016102b29061108f565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d6611102565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103b357600085858381811061032157610321611118565b919091013560f81c60008181526003602052604081205491935090915081900361035d5760405162461bcd60e51b81526004016102b29061112e565b6000610368836108f4565b905061037f898461037a600185611199565b6109f1565b8085858151811061039257610392611118565b63ffffffff9290921660209283029190910190910152505050600101610305565b5090505b9392505050565b60408051808201909152600080825260208201526103dc8383610a7b565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36161461044c5760405162461bcd60e51b81526004016102b29061108f565b60ff8116600090815260036020526040902054156104c65760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061057557610575611118565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105cb82610ad3565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b606060006106038484610b15565b905060008163ffffffff1667ffffffffffffffff81111561062657610626611102565b60405190808252806020026020018201604052801561064f578160200160208202803683370190505b50905060005b8263ffffffff1681101561074b5761066e868287610c4a565b82828151811061068057610680611118565b6020026020010181815250506000801b8282815181106106a2576106a2611118565b6020026020010151036107435760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b600101610655565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff841690811061079257610792611118565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146108135760405162461bcd60e51b81526004016102b29061108f565b60005b818110156108cf57600083838381811061083257610832611118565b919091013560f81c60008181526003602052604081205491935090915081900361086e5760405162461bcd60e51b81526004016102b29061112e565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff169061089c84610d21565b905060006108aa8583610d5b565b90508089146108be576108be8186856109f1565b505060019093019250610816915050565b50505050565b60006108e082610ad3565b54600160201b900463ffffffff1692915050565b60008061090083610ad3565b805490915060009061092090600160201b900463ffffffff1660016111bd565b905061092d848383610d85565b60ff841660009081526002602052604081209061094b600184611199565b63ffffffff168152602081019190915260400160009081205490036103b75760ff8416600090815260026020526040812090610988600184611199565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b60006109fd8383610a7b565b9050610a0b83838387610e23565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610aac6001836111da565b81548110610abc57610abc611118565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610af36001836111da565b81548110610b0357610b03611118565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bbd5760ff85166000908152600360205260408120610b4d6001846111da565b81548110610b5d57610b5d611118565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610baa576020015192506103fe915050565b5080610bb5816111ed565b915050610b2a565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d155760ff8616600090815260026020908152604080832063ffffffff891684529091528120610ca46001846111da565b81548110610cb457610cb4611118565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d02576020015192506103b7915050565b5080610d0d816111ed565b915050610c70565b50600095945050505050565b600080610d2d83610ad3565b8054909150600090610d4e90600190600160201b900463ffffffff16611199565b90506103b7848383610d85565b600080610d688484610a7b565b6001810154909150610d7d8585846000610e23565b949350505050565b815463ffffffff438116911603610dba57815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b815463ffffffff438116911603610e4057600182018190556108cf565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610ec157600080fd5b83359250602084013567ffffffffffffffff80821115610ee057600080fd5b818601915086601f830112610ef457600080fd5b813581811115610f0357600080fd5b876020828501011115610f1557600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835163ffffffff1683529284019291840191600101610f44565b50909695505050505050565b803560ff81168114610f8357600080fd5b919050565b803563ffffffff81168114610f8357600080fd5b60008060408385031215610faf57600080fd5b610fb883610f72565b9150610fc660208401610f88565b90509250929050565b600060208284031215610fe157600080fd5b6103b782610f72565b600080600060608486031215610fff57600080fd5b61100884610f72565b925061101660208501610f88565b915061102460408501610f88565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f6657835183529284019291840191600101611049565b6000806040838503121561107857600080fd5b61108183610f72565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156111b6576111b6611183565b5092915050565b63ffffffff8181168382160190808211156111b6576111b6611183565b818103818111156103fe576103fe611183565b6000816111fc576111fc611183565b50600019019056fea2646970667358221220af8de4d3486e0b797de225bb92c1953126cca4d69399c73bf6885ce4485dc52464736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x4c5859f0f772848b2d91f1d83e2fe57935348029": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061028c5760003560e01c8063800fb61f1161015a578063df5cf723116100c1578063f9120af61161007a578063f9120af6146108f3578063fa534dc014610913578063fabc1cbc14610933578063fc299dee14610953578063fce36c7d14610973578063fd4c3b7c1461099357600080fd5b8063df5cf72314610827578063e481af9d1461085b578063ea5ca34b14610870578063f2fde38b14610886578063f474b520146108a6578063f7013ef6146108d357600080fd5b8063a98fb35511610113578063a98fb35514610730578063ab21739a14610750578063b099627e14610770578063b753645e146107da578063b98d0908146107fa578063d66eaabd1461081457600080fd5b8063800fb61f14610672578063886f1195146106925780638da5cb5b146106b257806395c6d604146106d05780639926ee7d146106f0578063a364f4da1461071057600080fd5b80634223d551116101fe5780635df45946116101b75780635df4594614610558578063683048351461058c5780636b3aa72e146105c05780636d14a987146105f357806370a0823114610627578063715018a61461065d57600080fd5b80634223d5511461047b5780634a5bf6321461048e5780634ae07c37146104c6578063595c6a67146104f45780635ac86ab7146105095780635c975abb1461053957600080fd5b806318daeeaf1161025057806318daeeaf146103ae5780632585b25b146103ce5780632e1a7d4d146103ee57806333cfb7b71461040e5780633bc28c8c1461043b578063416c7e5e1461045b57600080fd5b806306045a91146102d357806310d67a2f14610308578063136439dd14610328578063137122b514610348578063171f1d5b1461037757600080fd5b366102ce5760fc546005906020908116036102c25760405162461bcd60e51b81526004016102b990614b81565b60405180910390fd5b6102cc33346109b3565b005b600080fd5b3480156102df57600080fd5b506102f36102ee366004614cf4565b610a43565b60405190151581526020015b60405180910390f35b34801561031457600080fd5b506102cc610323366004614d86565b610b65565b34801561033457600080fd5b506102cc610343366004614da3565b610c18565b34801561035457600080fd5b506102f3610363366004614dcb565b60cc54600160ff9092169190911b16151590565b34801561038357600080fd5b50610397610392366004614ea8565b610d57565b6040805192151583529015156020830152016102ff565b3480156103ba57600080fd5b506102cc6103c9366004614dcb565b610ee1565b3480156103da57600080fd5b506102cc6103e9366004614ef9565b610f29565b3480156103fa57600080fd5b506102cc610409366004614da3565b610fcb565b34801561041a57600080fd5b5061042e610429366004614d86565b6110cc565b6040516102ff9190614f25565b34801561044757600080fd5b506102cc610456366004614d86565b61157f565b34801561046757600080fd5b506102cc610476366004614f80565b611590565b6102cc610489366004614d86565b6116c7565b34801561049a57600080fd5b5060cb546104ae906001600160a01b031681565b6040516001600160a01b0390911681526020016102ff565b3480156104d257600080fd5b506104e66104e136600461525b565b6116fd565b6040516102ff9291906152f6565b34801561050057600080fd5b506102cc612631565b34801561051557600080fd5b506102f3610524366004614dcb565b60fc54600160ff9092169190911b9081161490565b34801561054557600080fd5b5060fc545b6040519081526020016102ff565b34801561056457600080fd5b506104ae7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4981565b34801561059857600080fd5b506104ae7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e81565b3480156105cc57600080fd5b507f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076104ae565b3480156105ff57600080fd5b506104ae7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b34801561063357600080fd5b5061054a610642366004614d86565b6001600160a01b0316600090815260ca602052604090205490565b34801561066957600080fd5b506102cc6126f8565b34801561067e57600080fd5b506102cc61068d366004614d86565b61270c565b34801561069e57600080fd5b5060fb546104ae906001600160a01b031681565b3480156106be57600080fd5b506033546001600160a01b03166104ae565b3480156106dc57600080fd5b506102f36106eb366004615387565b6127ac565b3480156106fc57600080fd5b506102cc61070b3660046153d2565b6127d1565b34801561071c57600080fd5b506102cc61072b366004614d86565b61289d565b34801561073c57600080fd5b506102cc61074b36600461547d565b612964565b34801561075c57600080fd5b506102cc61076b3660046154cd565b6129b8565b34801561077c57600080fd5b506107b861078b366004614da3565b60c9602052600090815260409020805460019091015463ffffffff821691640100000000900460ff169083565b6040805163ffffffff90941684529115156020840152908201526060016102ff565b3480156107e657600080fd5b506102cc6107f5366004614da3565b612d8a565b34801561080657600080fd5b506097546102f39060ff1681565b6102cc6108223660046154f4565b612d97565b34801561083357600080fd5b506104ae7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561086757600080fd5b5061042e612f7a565b34801561087c57600080fd5b5061054a60cc5481565b34801561089257600080fd5b506102cc6108a1366004614d86565b613326565b3480156108b257600080fd5b5061054a6108c1366004614d86565b60ca6020526000908152604090205481565b3480156108df57600080fd5b506102cc6108ee366004615546565b61339c565b3480156108ff57600080fd5b506102cc61090e366004614d86565b613575565b34801561091f57600080fd5b506102f361092e3660046155aa565b61359f565b34801561093f57600080fd5b506102cc61094e366004614da3565b61364a565b34801561095f57600080fd5b506065546104ae906001600160a01b031681565b34801561097f57600080fd5b506102cc61098e366004615627565b6137a6565b34801561099f57600080fd5b506102cc6109ae366004614dcb565b613b55565b806000036109d757604051632097692160e11b8152600481018290526024016102b9565b6001600160a01b038216600090815260ca6020526040812080548392906109ff9084906156b1565b90915550506001600160a01b038216600081815260ca6020908152604091829020549151918252600080516020615dbe833981519152910160405180910390a25050565b60fc54600090600290600490811603610a6e5760405162461bcd60e51b81526004016102b990614b81565b60006001600160a01b038416610a85575085610ab1565b8684604051602001610a989291906156c4565b6040516020818303038152906040528051906020012090505b600081815260c9602052604081205463ffffffff169003610ad6576000925050610b58565b600081815260c96020526040902054640100000000900460ff16610afe576000925050610b58565b60408051602081018d90529081018b9052606081018a90526001600160601b03198916608082015260009060940160408051601f1981840301815291905280516020820120909150610b52888a838a613b9c565b94505050505b5098975050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc91906156df565b6001600160a01b0316336001600160a01b031614610c0c5760405162461bcd60e51b81526004016102b9906156fc565b610c1581613bb4565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c849190615746565b610ca05760405162461bcd60e51b81526004016102b990615763565b60fc5481811614610d195760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016102b9565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610d9f57610d9f6157ab565b60200201518951600160200201518a60200151600060028110610dc457610dc46157ab565b60200201518b60200151600160028110610de057610de06157ab565b602090810291909101518c518d830151604051610e3d9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610e6091906157c1565b9050610ed3610e79610e728884613cab565b8690613d3c565b610e81613dd1565b610ec9610eba85610eb4604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613cab565b610ec38c613e91565b90613d3c565b886201d4c0613f20565b909890975095505050505050565b610ee961413a565b60cc8054600160ff841690811b199091169091556040517f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a90600090a250565b600054600390610100900460ff16158015610f4b575060005460ff8083169116105b610f675760405162461bcd60e51b81526004016102b9906157e3565b6000805461ffff191660ff831617610100179055610f858383614194565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60fc54600390600890811603610ff35760405162461bcd60e51b81526004016102b990614b81565b33600090815260ca60205260409020548211156110445733600081815260ca602052604090819020549051632e2a182f60e11b815260048101929092526024820184905260448201526064016102b9565b33600090815260ca602052604081208054849290611063908490615831565b909155505033600081815260ca6020908152604091829020549151918252600080516020615dbe833981519152910160405180910390a2604051339083156108fc029084906000818181858888f193505050501580156110c7573d6000803e3d6000fd5b505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616906313542a4e90602401602060405180830381865afa158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c9190615844565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36169063871ef04990602401602060405180830381865afa1580156111c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111eb919061585d565b90506001600160c01b038116158061128557507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190615886565b60ff16155b156112a55760408051600080825260208201909252905b50949350505050565b60006112b9826001600160c01b031661427a565b90506000805b8251811015611385577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316633ca5a5f5848381518110611309576113096157ab565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa15801561134d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113719190615844565b61137b90836156b1565b91506001016112bf565b506000816001600160401b038111156113a0576113a0614bd0565b6040519080825280602002602001820160405280156113c9578160200160208202803683370190505b5090506000805b84518110156115725760008582815181106113ed576113ed6157ab565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e1690633ca5a5f590602401602060405180830381865afa158015611462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114869190615844565b905060005b81811015611567576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa158015611500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152491906158b8565b6000015186868151811061153a5761153a6157ab565b6001600160a01b03909216602092830291909101909101528461155c816158f9565b95505060010161148b565b5050506001016113d0565b5090979650505050505050565b61158761413a565b610c158161433c565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161291906156df565b6001600160a01b0316336001600160a01b0316146116be5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4016102b9565b610c15816143a5565b60fc546004906010908116036116ef5760405162461bcd60e51b81526004016102b990614b81565b6116f982346109b3565b5050565b6040805180820190915260608082526020820152600082604001515160405180604001604052806001815260200160008152505114801561175957508260a0015151604051806040016040528060018152602001600081525051145b801561178057508260c0015151604051806040016040528060018152602001600081525051145b80156117a757508260e0015151604051806040016040528060018152602001600081525051145b6118115760405162461bcd60e51b81526020600482015260416024820152600080516020615dde83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a4016102b9565b825151602084015151146118895760405162461bcd60e51b815260206004820152604460248201819052600080516020615dde833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016102b9565b4363ffffffff168463ffffffff16106118f85760405162461bcd60e51b815260206004820152603c6024820152600080516020615dde83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b0000000060648201526084016102b9565b60408051808201825260008082526020808301829052835180850185526060808252818301528451808601865260018082529083019390935284518381528086019095529293919082810190803683370190505060208281019190915260408051808201825260018082526000919093015280518281528082019091529081602001602082028036833701905050815260408051808201909152606080825260208201528560200151516001600160401b038111156119b9576119b9614bd0565b6040519080825280602002602001820160405280156119e2578160200160208202803683370190505b5081526020860151516001600160401b03811115611a0257611a02614bd0565b604051908082528060200260200182016040528015611a2b578160200160208202803683370190505b5081602001819052506000611ad760405180604001604052806001815260200160008152507f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad29190615886565b6143ec565b905060005b876020015151811015611d6857611b2188602001518281518110611b0257611b026157ab565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611b3757611b376157ab565b60209081029190910101528015611bf7576020830151611b58600183615831565b81518110611b6857611b686157ab565b602002602001015160001c83602001518281518110611b8957611b896157ab565b602002602001015160001c11611bf7576040805162461bcd60e51b8152602060048201526024810191909152600080516020615dde83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f7274656460648201526084016102b9565b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03166304ec635184602001518381518110611c3c57611c3c6157ab565b60200260200101518b8b600001518581518110611c5b57611c5b6157ab565b60200260200101516040518463ffffffff1660e01b8152600401611c989392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd9919061585d565b6001600160c01b031683600001518281518110611cf857611cf86157ab565b602002602001018181525050611d5e610e72611d328486600001518581518110611d2457611d246157ab565b60200260200101511661447f565b8a602001518481518110611d4857611d486157ab565b60200260200101516144aa90919063ffffffff16565b9450600101611adc565b5050611d738361458d565b60975490935060ff16600081611d8a576000611e0c565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190615844565b905060005b604051806040016040528060018152602001600081525051811015612502578215611f9d578963ffffffff16827f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031663249a0c4260405180604001604052806001815260200160008152508581518110611e9557611e956157ab565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015611ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efd9190615844565b611f0791906156b1565b11611f9d5760405162461bcd60e51b81526020600482015260666024820152600080516020615dde83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c4016102b9565b7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03166368bccaac60405180604001604052806001815260200160008152508381518110611ff457611ff46157ab565b602001015160f81c60f81b60f81c8c8c60a001518581518110612019576120196157ab565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120999190615912565b6001600160401b0319166120bc8a604001518381518110611b0257611b026157ab565b67ffffffffffffffff1916146121585760405162461bcd60e51b81526020600482015260616024820152600080516020615dde83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c4016102b9565b61218889604001518281518110612171576121716157ab565b602002602001015187613d3c90919063ffffffff16565b95507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663c8294c56604051806040016040528060018152602001600081525083815181106121e1576121e16157ab565b602001015160f81c60f81b60f81c8c8c60c001518581518110612206576122066157ab565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612286919061593d565b8560200151828151811061229c5761229c6157ab565b6001600160601b039092166020928302919091018201528501518051829081106122c8576122c86157ab565b6020026020010151856000015182815181106122e6576122e66157ab565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156124f85761237586600001518281518110612330576123306157ab565b602002602001015160405180604001604052806001815260200160008152508581518110612360576123606157ab565b016020015160f81c60ff161c60019081161490565b156124f0577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031663f2be94ae604051806040016040528060018152602001600081525085815181106123d1576123d16157ab565b602001015160f81c60f81b60f81c8e896020015185815181106123f6576123f66157ab565b60200260200101518f60e001518881518110612414576124146157ab565b6020026020010151878151811061242d5761242d6157ab565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015612491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b5919061593d565b87518051859081106124c9576124c96157ab565b602002602001018181516124dd919061595a565b6001600160601b03169052506001909101905b60010161230a565b5050600101611e11565b50505060008061251c8a868a606001518b60800151610d57565b915091508161258d5760405162461bcd60e51b81526020600482015260436024820152600080516020615dde83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a4016102b9565b806125ee5760405162461bcd60e51b81526020600482015260396024820152600080516020615dde83398151915260448201527f7265733a207369676e617475726520697320696e76616c69640000000000000060648201526084016102b9565b50506000878260200151604051602001612609929190615981565b60408051808303601f1901815291905280516020909101209299929850919650505050505050565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015612679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269d9190615746565b6126b95760405162461bcd60e51b81526004016102b990615763565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61270061413a565b61270a6000614628565b565b600054600290610100900460ff1615801561272e575060005460ff8083169116105b61274a5760405162461bcd60e51b81526004016102b9906157e3565b6000805461ffff191660ff83161761010017905561276782613575565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008184846040516127bf9291906159c9565b60405180910390201490509392505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146128195760405162461bcd60e51b81526004016102b9906159d9565b604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071690639926ee7d906128679085908590600401615a97565b600060405180830381600087803b15801561288157600080fd5b505af1158015612895573d6000803e3d6000fd5b505050505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146128e55760405162461bcd60e51b81526004016102b9906159d9565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a364f4da906024015b600060405180830381600087803b15801561294957600080fd5b505af115801561295d573d6000803e3d6000fd5b5050505050565b61296c61413a565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063a98fb3559061292f908490600401615ae2565b60cb546001600160a01b031633146129f85760cb54604051632cbe419560e01b81523360048201526001600160a01b0390911660248201526044016102b9565b60fc54600190600290811603612a205760405162461bcd60e51b81526004016102b990614b81565b60005a905060008585604051602001612a3a9291906156c4565b60408051601f198184030181529181528151602092830120600081815260c990935290822080549193509163ffffffff9091169003612a8f576040516311cb69a760e11b8152600481018390526024016102b9565b8054640100000000900460ff1615612abd57604051634e78d7f960e11b8152600481018390526024016102b9565b805464ff00000000191664010000000017815560018101546001600160a01b038716600090815260ca60205260409020541015612b405760018101546001600160a01b038716600081815260ca602052604090819020549051632e2a182f60e11b81526004810192909252602482019290925260448101919091526064016102b9565b8054600090612b5790849063ffffffff16886116fd565b509050604360ff168160200151600081518110612b7657612b766157ab565b6020026020010151612b889190615af5565b6001600160601b031660648260000151600081518110612baa57612baa6157ab565b60200260200101516001600160601b0316612bc59190615b18565b1015612c585760648160000151600081518110612be457612be46157ab565b60200260200101516001600160601b0316612bff9190615b18565b604360ff168260200151600081518110612c1b57612c1b6157ab565b6020026020010151612c2d9190615af5565b60405163530f5c4560e11b815260048101929092526001600160601b031660248201526044016102b9565b6040516001600160a01b038816815288907f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e29060200160405180910390a260003a5a612ca49087615831565b612cb190620111706156b1565b612cbb9190615b18565b9050600083600101548210612cd4578360010154612cd6565b815b6001600160a01b038a16600090815260ca6020526040812080549293508392909190612d03908490615831565b90915550506001600160a01b038916600081815260ca6020908152604091829020549151918252600080516020615dbe833981519152910160405180910390a260cb546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612d7d573d6000803e3d6000fd5b5050505050505050505050565b612d9261413a565b60cc55565b60fc54600090600190811603612dbf5760405162461bcd60e51b81526004016102b990614b81565b60008533604051602001612dd49291906156c4565b60408051601f198184030181529181528151602092830120600081815260c990935291205490915063ffffffff1615612e2357604051630c40bc4360e21b8152600481018290526024016102b9565b3415612e805733600090815260ca602052604081208054349290612e489084906156b1565b909155505033600081815260ca6020908152604091829020549151918252600080516020615dbe833981519152910160405180910390a25b33600090815260ca6020526040902054831115612ed15733600081815260ca602052604090819020549051632e2a182f60e11b815260048101929092526024820185905260448201526064016102b9565b604080516060810182526000602080830182815263ffffffff4381811686528587018a815288865260c99094529386902085518154935115156401000000000264ffffffffff1990941692169190911791909117815590516001909101559151909188917f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5591612f69913391908b908b908b90615b2f565b60405180910390a250505050505050565b606060007f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fdc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130009190615886565b60ff1690508060000361302157505060408051600081526020810190915290565b6000805b828110156130cc57604051633ca5a5f560e01b815260ff821660048201527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015613094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b89190615844565b6130c290836156b1565b9150600101613025565b506000816001600160401b038111156130e7576130e7614bd0565b604051908082528060200260200182016040528015613110578160200160208202803683370190505b5090506000805b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131999190615886565b60ff1681101561331c57604051633ca5a5f560e01b815260ff821660048201526000907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690633ca5a5f590602401602060405180830381865afa15801561320d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132319190615844565b905060005b81811015613312576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03169063adc804da906044016040805180830381865afa1580156132ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cf91906158b8565b600001518585815181106132e5576132e56157ab565b6001600160a01b039092166020928302919091019091015283613307816158f9565b945050600101613236565b5050600101613117565b5090949350505050565b61332e61413a565b6001600160a01b0381166133935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b9565b610c1581614628565b600054610100900460ff16158080156133bc5750600054600160ff909116105b806133d65750303b1580156133d6575060005460ff166001145b6133f25760405162461bcd60e51b81526004016102b9906157e3565b6000805460ff191660011790558015613415576000805461ff0019166101001790555b6001600160a01b03861661345b57604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b60448201526064016102b9565b6001600160a01b0385166134a557604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b60448201526064016102b9565b6001600160a01b0384166134f057604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b60448201526064016102b9565b6134fa868661467a565b60cb80546001600160a01b0319166001600160a01b03861617905561351e86614628565b6135288383614194565b8015612895576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b61357d61413a565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60fc546000906002906004908116036135ca5760405162461bcd60e51b81526004016102b990614b81565b6040516306045a9160e01b815230906306045a91906135fc908c908c908c908c908c908c908c90600090600401615b86565b602060405180830381865afa158015613619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363d9190615746565b9998505050505050505050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c191906156df565b6001600160a01b0316336001600160a01b0316146136f15760405162461bcd60e51b81526004016102b9906156fc565b60fc5419811960fc5419161461376f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016102b9565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610d4c565b6065546001600160a01b0316331461383b5760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a4016102b9565b60005b81811015613b0657828282818110613858576138586157ab565b905060200281019061386a9190615be8565b61387b906040810190602001614d86565b6001600160a01b03166323b872dd333086868681811061389d5761389d6157ab565b90506020028101906138af9190615be8565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015613906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061392a9190615746565b50600083838381811061393f5761393f6157ab565b90506020028101906139519190615be8565b613962906040810190602001614d86565b604051636eb1769f60e11b81523060048201526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156139d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f49190615844565b9050838383818110613a0857613a086157ab565b9050602002810190613a1a9190615be8565b613a2b906040810190602001614d86565b6001600160a01b031663095ea7b37f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f83878787818110613a6d57613a6d6157ab565b9050602002810190613a7f9190615be8565b60400135613a8d91906156b1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015613ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613afc9190615746565b505060010161383e565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fce36c7d906128679085908590600401615c6e565b613b5d61413a565b60cc8054600160ff841690811b9091179091556040517fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe90600090a250565b600083613baa8685856146f7565b1495945050505050565b6001600160a01b038116613c425760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016102b9565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613cc7614aa7565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080613cf657fe5b5080613d345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016102b9565b505092915050565b6040805180820190915260008082526020820152613d58614ac5565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080613d9357fe5b5080613d345760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016102b9565b613dd9614ae3565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613ec1600080516020615d9e833981519152866157c1565b90505b613ecd816147f4565b9093509150600080516020615d9e8339815191528283098303613f06576040805180820190915290815260208101919091529392505050565b600080516020615d9e833981519152600182089050613ec4565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613f52614b08565b60005b600281101561410d576000613f6b826006615b18565b9050848260028110613f7f57613f7f6157ab565b60200201515183613f918360006156b1565b600c8110613fa157613fa16157ab565b6020020152848260028110613fb857613fb86157ab565b60200201516020015183826001613fcf91906156b1565b600c8110613fdf57613fdf6157ab565b6020020152838260028110613ff657613ff66157ab565b60200201515151836140098360026156b1565b600c8110614019576140196157ab565b6020020152838260028110614030576140306157ab565b60200201515160016020020151836140498360036156b1565b600c8110614059576140596157ab565b6020020152838260028110614070576140706157ab565b60200201516020015160006002811061408b5761408b6157ab565b60200201518361409c8360046156b1565b600c81106140ac576140ac6157ab565b60200201528382600281106140c3576140c36157ab565b6020020151602001516001600281106140de576140de6157ab565b6020020151836140ef8360056156b1565b600c81106140ff576140ff6157ab565b602002015250600101613f55565b50614116614b27565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6033546001600160a01b0316331461270a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102b9565b60fb546001600160a01b03161580156141b557506001600160a01b03821615155b6142375760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016102b9565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26116f982613bb4565b60606000806142888461447f565b61ffff166001600160401b038111156142a3576142a3614bd0565b6040519080825280601f01601f1916602001820160405280156142cd576020820181803683370190505b5090506000805b8251821080156142e5575061010081105b1561331c576001811b93508584161561432c578060f81b83838151811061430e5761430e6157ab565b60200101906001600160f81b031916908160001a9053508160010191505b614335816158f9565b90506142d4565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6000806143f884614876565b9050808360ff166001901b116144765760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016102b9565b90505b92915050565b6000805b821561447957614494600184615831565b90921691806144a281615d7c565b915050614483565b60408051808201909152600080825260208201526102008261ffff16106145065760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b60448201526064016102b9565b8161ffff16600103614519575081614479565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061458257600161ffff871660ff83161c81169003614565576145628484613d3c565b93505b61456f8384613d3c565b92506201fffe600192831b169101614535565b509195945050505050565b604080518082019091526000808252602082015281511580156145b257506020820151155b156145d0575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615d9e833981519152846020015161460391906157c1565b61461b90600080516020615d9e833981519152615831565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166146e55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102b9565b6146ee82614628565b6116f98161433c565b60006020845161470791906157c1565b1561478e5760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a4016102b9565b8260205b8551811161129c576147a56002856157c1565b6000036147c9578160005280860151602052604060002091506002840493506147e2565b8086015160005281602052604060002091506002840493505b6147ed6020826156b1565b9050614792565b60008080600080516020615d9e8339815191526003600080516020615d9e83398151915286600080516020615d9e83398151915288890909089050600061486a827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615d9e8339815191526149fe565b91959194509092505050565b6000610100825111156148ff5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016102b9565b815160000361491057506000919050565b60008083600081518110614926576149266157ab565b0160200151600160f89190911c81901b92505b84518110156149f557848181518110614954576149546157ab565b0160200151600160f89190911c1b91508282116149e95760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016102b9565b91811791600101614939565b50909392505050565b600080614a09614b27565b614a11614b45565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280614a4e57fe5b5082614a9c5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016102b9565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280614af6614b63565b8152602001614b03614b63565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b80356001600160601b03198116811461462357600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715614c0857614c08614bd0565b60405290565b60405161010081016001600160401b0381118282101715614c0857614c08614bd0565b604051601f8201601f191681016001600160401b0381118282101715614c5957614c59614bd0565b604052919050565b60006001600160401b03831115614c7a57614c7a614bd0565b614c8d601f8401601f1916602001614c31565b9050828152838383011115614ca157600080fd5b828260208301376000602084830101529392505050565b600082601f830112614cc957600080fd5b614cd883833560208501614c61565b9392505050565b6001600160a01b0381168114610c1557600080fd5b600080600080600080600080610100898b031215614d1157600080fd5b883597506020890135965060408901359550614d2f60608a01614bb8565b94506080890135935060a08901356001600160401b03811115614d5157600080fd5b614d5d8b828c01614cb8565b93505060c0890135915060e0890135614d7581614cdf565b809150509295985092959890939650565b600060208284031215614d9857600080fd5b813561447681614cdf565b600060208284031215614db557600080fd5b5035919050565b60ff81168114610c1557600080fd5b600060208284031215614ddd57600080fd5b813561447681614dbc565b600060408284031215614dfa57600080fd5b614e02614be6565b9050813581526020820135602082015292915050565b600082601f830112614e2957600080fd5b614e31614be6565b806040840185811115614e4357600080fd5b845b81811015614e5d578035845260209384019301614e45565b509095945050505050565b600060808284031215614e7a57600080fd5b614e82614be6565b9050614e8e8383614e18565b8152614e9d8360408401614e18565b602082015292915050565b6000806000806101208587031215614ebf57600080fd5b84359350614ed08660208701614de8565b9250614edf8660608701614e68565b9150614eee8660e08701614de8565b905092959194509250565b60008060408385031215614f0c57600080fd5b8235614f1781614cdf565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015614f665783516001600160a01b031683529284019291840191600101614f41565b50909695505050505050565b8015158114610c1557600080fd5b600060208284031215614f9257600080fd5b813561447681614f72565b803563ffffffff8116811461462357600080fd5b60006001600160401b03821115614fca57614fca614bd0565b5060051b60200190565b600082601f830112614fe557600080fd5b81356020614ffa614ff583614fb1565b614c31565b8083825260208201915060208460051b87010193508684111561501c57600080fd5b602086015b8481101561503f5761503281614f9d565b8352918301918301615021565b509695505050505050565b600082601f83011261505b57600080fd5b8135602061506b614ff583614fb1565b8083825260208201915060208460061b87010193508684111561508d57600080fd5b602086015b8481101561503f576150a48882614de8565b835291830191604001615092565b600082601f8301126150c357600080fd5b813560206150d3614ff583614fb1565b82815260059290921b840181019181810190868411156150f257600080fd5b8286015b8481101561503f5780356001600160401b038111156151155760008081fd5b6151238986838b0101614fd4565b8452509183019183016150f6565b6000610180828403121561514457600080fd5b61514c614c0e565b905081356001600160401b038082111561516557600080fd5b61517185838601614fd4565b8352602084013591508082111561518757600080fd5b6151938583860161504a565b602084015260408401359150808211156151ac57600080fd5b6151b88583860161504a565b60408401526151ca8560608601614e68565b60608401526151dc8560e08601614de8565b60808401526101208401359150808211156151f657600080fd5b61520285838601614fd4565b60a084015261014084013591508082111561521c57600080fd5b61522885838601614fd4565b60c084015261016084013591508082111561524257600080fd5b5061524f848285016150b2565b60e08301525092915050565b60008060006060848603121561527057600080fd5b8335925061528060208501614f9d565b915060408401356001600160401b0381111561529b57600080fd5b6152a786828701615131565b9150509250925092565b60008151808452602080850194506020840160005b838110156152eb5781516001600160601b0316875295820195908201906001016152c6565b509495945050505050565b604081526000835160408084015261531160808401826152b1565b90506020850151603f1984830301606085015261532e82826152b1565b925050508260208301529392505050565b60008083601f84011261535157600080fd5b5081356001600160401b0381111561536857600080fd5b60208301915083602082850101111561538057600080fd5b9250929050565b60008060006040848603121561539c57600080fd5b83356001600160401b038111156153b257600080fd5b6153be8682870161533f565b909790965060209590950135949350505050565b600080604083850312156153e557600080fd5b82356153f081614cdf565b915060208301356001600160401b038082111561540c57600080fd5b908401906060828703121561542057600080fd5b60405160608101818110838211171561543b5761543b614bd0565b60405282358281111561544d57600080fd5b61545988828601614cb8565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561548f57600080fd5b81356001600160401b038111156154a557600080fd5b8201601f810184136154b657600080fd5b6154c584823560208401614c61565b949350505050565b6000806000606084860312156154e257600080fd5b83359250602084013561528081614cdf565b6000806000806060858703121561550a57600080fd5b8435935060208501356001600160401b0381111561552757600080fd5b6155338782880161533f565b9598909750949560400135949350505050565b600080600080600060a0868803121561555e57600080fd5b853561556981614cdf565b9450602086013561557981614cdf565b9350604086013561558981614cdf565b9250606086013561559981614cdf565b949793965091946080013592915050565b600080600080600080600060e0888a0312156155c557600080fd5b8735965060208801359550604088013594506155e360608901614bb8565b93506080880135925060a08801356001600160401b0381111561560557600080fd5b6156118a828b01614cb8565b92505060c0880135905092959891949750929550565b6000806020838503121561563a57600080fd5b82356001600160401b038082111561565157600080fd5b818501915085601f83011261566557600080fd5b81358181111561567457600080fd5b8660208260051b850101111561568957600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156144795761447961569b565b91825260601b6001600160601b031916602082015260340190565b6000602082840312156156f157600080fd5b815161447681614cdf565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561575857600080fd5b815161447681614f72565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000826157de57634e487b7160e01b600052601260045260246000fd5b500690565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b818103818111156144795761447961569b565b60006020828403121561585657600080fd5b5051919050565b60006020828403121561586f57600080fd5b81516001600160c01b038116811461447657600080fd5b60006020828403121561589857600080fd5b815161447681614dbc565b6001600160601b0381168114610c1557600080fd5b6000604082840312156158ca57600080fd5b6158d2614be6565b82516158dd81614cdf565b815260208301516158ed816158a3565b60208201529392505050565b60006001820161590b5761590b61569b565b5060010190565b60006020828403121561592457600080fd5b815167ffffffffffffffff198116811461447657600080fd5b60006020828403121561594f57600080fd5b8151614476816158a3565b6001600160601b0382811682821603908082111561597a5761597a61569b565b5092915050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156159bc578151855293820193908201906001016159a0565b5092979650505050505050565b8183823760009101908152919050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015615a7757602081850181015186830182015201615a5b565b506000602082860101526020601f19601f83011685010191505092915050565b60018060a01b0383168152604060208201526000825160606040840152615ac160a0840182615a51565b90506020840151606084015260408401516080840152809150509392505050565b602081526000614cd86020830184615a51565b6001600160601b03818116838216028082169190828114613d3457613d3461569b565b80820281158282048414176144795761447961569b565b6001600160a01b038616815263ffffffff851660208201526080604082018190528101839052828460a0830137600060a08483010152600060a0601f19601f86011683010190508260608301529695505050505050565b60006101008a83528960208401528860408401526001600160601b0319881660608401528660808401528060a0840152615bc281840187615a51565b60c084019590955250506001600160a01b039190911660e0909101529695505050505050565b60008235609e19833603018112615bfe57600080fd5b9190910192915050565b803561462381614cdf565b8183526000602080850194508260005b858110156152eb578135615c3681614cdf565b6001600160a01b0316875281830135615c4e816158a3565b6001600160601b0316878401526040968701969190910190600101615c23565b60208082528181018390526000906040808401600586901b8501820187855b88811015615d6e57878303603f190184528135368b9003609e19018112615cb357600080fd5b8a0160a0813536839003601e19018112615ccc57600080fd5b820188810190356001600160401b03811115615ce757600080fd5b8060061b3603821315615cf957600080fd5b828752615d098388018284615c13565b92505050615d18888301615c08565b6001600160a01b03168886015281870135878601526060615d3a818401614f9d565b63ffffffff16908601526080615d51838201614f9d565b63ffffffff16950194909452509285019290850190600101615c8d565b509098975050505050505050565b600061ffff808316818103615d9357615d9361569b565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212205998fafeb5eab20d19cf0bd86f2eecb1e9eff99b69e6178a9513067dd2808c5564736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x4e59b44847b379578588920ca78fbf26c0b4956c": - { - "nonce": 0, - "balance": "0x0", - "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3", - "storage": {}, - }, - "0x5fbdb2315678afecb367f032d93f642f64180aa3": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105ea565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c99086908690600401610607565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff81111561055857600080fd5b8401601f8101861361056957600080fd5b803567ffffffffffffffff811115610583576105836104f6565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156105b2576105b26104f6565b6040528181528282016020018810156105ca57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156105fc57600080fd5b81516104b681610484565b60018060a01b0383168152604060208201526000825180604084015260005b818110156106435760208186018101516060868401015201610626565b506000606082850101526060601f19601f830116840101915050939250505056fea26469706673582212208c9b9e088f3575078e1e546bdacf514367bf3b048de9f62c408ca085a2a59c4b64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - }, - }, - "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x5bc5b424ff8db9bd8202cae3beb193c946b905d8ebddb990e36a723af40eb1c4", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0x610178da211fef7d417bc0e6fed39f05609ad788": - { - "nonce": 1, - "balance": "0x0", - "code": "0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614c64565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000000000077359400081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614c9c565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614d2f565b610764565b34801561036757600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561039b57600080fd5b506103af6103aa366004614e50565b610ca5565b60405161020f9190614ec9565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614ed7565b610d0a565b60405161020f9190614ef0565b34801561041557600080fd5b506103af610424366004614ed7565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614f44565b610db7565b3480156104ba57600080fd5b5061022d6104c9366004614fbb565b610f64565b3480156104da57600080fd5b506103fc6104e9366004614e50565b6112f0565b3480156104fa57600080fd5b5061022d6113e3565b34801561050f57600080fd5b5061022d61051e366004615070565b61144e565b34801561052f57600080fd5b5061022d61053e36600461509c565b61168b565b34801561054f57600080fd5b5061022d61055e3660046151b8565b611863565b34801561056f57600080fd5b5061022d61057e366004615291565b611a2c565b34801561058f57600080fd5b5061022d61059e366004615070565b611dec565b3480156105af57600080fd5b506102977f000000000000000000000000000000000000000000000000000000006059f46081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906153a2565b156106ad5760405162461bcd60e51b81526004016106a4906153c4565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615469565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611fcf565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a91906153a2565b156108375760405162461bcd60e51b81526004016106a4906153c4565b603454600160401b900460ff166108af5760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b85841480156108bd57508382145b61094d5760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b603354600160a01b90046001600160401b031615806109a2575060335461098c9061098790600160a01b90046001600160401b0316612003565b6120ed565b6001600160401b0316896001600160401b031610155b610a2e5760405162461bcd60e51b815260206004820152605160248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2070726f6f66206d75737420626520696e207468652065706f63686064820152701030b33a32b91030b1ba34bb30ba34b7b760791b608482015260a4016106a4565b42610a44613f486001600160401b038c16614c64565b1015610acd5760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152610b76907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154b8565b8935610b7160208c018c6154d1565b61213a565b6000805b87811015610c1057610bfc8b8b358b8b85818110610b9a57610b9a615517565b9050602002016020810190610baf919061552d565b8a8a86818110610bc157610bc1615517565b9050602002810190610bd391906154d1565b8a8a88818110610be557610be5615517565b9050602002810190610bf79190615554565b6122c8565b610c069083614c64565b9150600101610b7a565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c2c51c40906044015b600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b5050505050505050505050505050565b600080610ce784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610d326040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610d9d57610d9d614e91565b6002811115610dae57610dae614e91565b90525092915050565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe61614610dff5760405162461bcd60e51b81526004016106a49061559d565b346801bc16d674ec80000014610e8b5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610ece61287c565b8888886040518863ffffffff1660e01b8152600401610ef296959493929190615667565b6000604051808303818588803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610f559291906156b6565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff091906153a2565b1561100d5760405162461bcd60e51b81526004016106a4906153c4565b868414801561101b57508382145b6110a45760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b426110ba613f486001600160401b038c16614c64565b101561113c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a1660048201526111e0907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa1580156111ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d191906154b8565b8735610b7160208a018a6154d1565b6000805b8881101561127a576112668b8b8b8481811061120257611202615517565b9050602002016020810190611217919061552d565b8a358a8a8681811061122b5761122b615517565b905060200281019061123d91906154d1565b8a8a8881811061124f5761124f615517565b90506020028101906112619190615554565b6128c1565b61127090836156ca565b91506001016111e4565b506033546001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169163c2c51c4091166112bf633b9aca00856156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401610c67565b6113186040805160808101825260008082526020820181905291810182905290606082015290565b6036600061135b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278292505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff1660028111156113c8576113c8614e91565b60028111156113d9576113d9614e91565b9052509392505050565b6033546001600160a01b0316331461140d5760405162461bcd60e51b81526004016106a490615421565b603454600160401b900460ff16156114375760405162461bcd60e51b81526004016106a490615469565b60335461144c906001600160a01b0316611fcf565b565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146114965760405162461bcd60e51b81526004016106a49061559d565b6114a4633b9aca0082615738565b1561152e5760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b600061153e633b9aca008361574c565b6034549091506001600160401b0390811690821611156115f75760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906116159084906001600160401b0316615760565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161167491815260200190565b60405180910390a26116868383612d9f565b505050565b600054610100900460ff16158080156116ab5750600054600160ff909116105b806116c55750303b1580156116c5575060005460ff166001145b6117285760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff19166001179055801561174b576000805461ff0019166101001790555b6001600160a01b0382166117be5760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a2801561185f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b0316331461188d5760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa1580156118f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191991906153a2565b156119365760405162461bcd60e51b81526004016106a4906153c4565b82518451146119c15760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b8451811015611a2557611a1d838583815181106119e3576119e3615517565b60200260200101518784815181106119fd576119fd615517565b60200260200101516001600160a01b0316612da99092919063ffffffff16565b6001016119c4565b5050505050565b604051635ac86ab760e01b81526004808201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906153a2565b15611ad45760405162461bcd60e51b81526004016106a4906153c4565b8386148015611ae257508588145b8015611aed57508782145b611b61576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611c05907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906154b8565b8b35610b7160208e018e6154d1565b604080518082019091526000808252602082015260005b83811015611cfa576000611cc08d358d8d85818110611c3d57611c3d615517565b9050602002810190611c4f919061577f565b8c8c86818110611c6157611c61615517565b9050602002810190611c7391906154d1565b8c8c88818110611c8557611c85615517565b9050602002810190611c979190615554565b8c8c8a818110611ca957611ca9615517565b9050602002810190611cbb9190615554565b612dfb565b80518451919250908490611cd5908390614c64565b9052506020808201519084018051611cee9083906156ca565b90525050600101611c1c565b50805115611d29576033548151611d29916001600160a01b031690611d2490633b9aca00906157a0565b613372565b602081015115611dde5760335460208201516001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681169263c2c51c4092911690611d7f90633b9aca00906156f2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611e165760405162461bcd60e51b81526004016106a490615421565b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea291906153a2565b15611ebf5760405162461bcd60e51b81526004016106a4906153c4565b603754821115611f705760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f8291906157b7565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116868383613372565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b0217905560006037556120008147613372565b50565b60007f000000000000000000000000000000000000000000000000000000006059f4606001600160401b0316826001600160401b031610156120ad5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b6120b9600c60206157ca565b6120e37f000000000000000000000000000000000000000000000000000000006059f46084615760565b610d0491906157ec565b60006120fb600c60206157ca565b61210683600161581a565b61211091906157ca565b610d04907f000000000000000000000000000000000000000000000000000000006059f46061581a565b612146600360206157a0565b81146121d65760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61221b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925087915060039050613400565b6122c25760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061230784848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561237657612376614e91565b600281111561238757612387614e91565b90525090506000816060015160028111156123a4576123a4614e91565b1461244d5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b61245561287c565b61245e90615839565b61249a86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343c92505050565b146125215760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b600061255f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b905061256f8a87878b8b8e613476565b6039805490600061257f8361585d565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000000000077359400081169082161115612605576001600160401b037f0000000000000000000000000000000000000000000000000000000773594000166020830152612615565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b8360028111156126b3576126b3614e91565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c846020015160405161274e9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b031661277391906157a0565b9b9a5050505050505050505050565b6000815160301461280b5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b604051600290612822908490600090602001615876565b60408051601f198184030181529082905261283c916158a5565b602060405180830381855afa158015612859573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d0491906154b8565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061290084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061345192505050565b9050600061294085858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156129af576129af614e91565b60028111156129c0576129c0614e91565b8152505090508a6001600160401b031681604001516001600160401b031610612a775760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b600181606001516002811115612a8f57612a8f614e91565b14612af75760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b612b008b612003565b6001600160401b0316612b458787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031611612be8576000836001600160401b031611612be85760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612bf68987878b8b8f613476565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000000000077359400081169086161115612c5857507f0000000000000000000000000000000000000000000000000000000773594000612c5b565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612d0357612d03614e91565b0217905550905050816001600160401b0316816001600160401b031614612d8f577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612d7a9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612d8c81836136e5565b95505b5050505050979650505050505050565b61185f8282613704565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261168690849061381d565b6040805180820190915260008082526020820152612e20612e1b89615926565b6138ef565b6033546001600160401b03600160a01b90910481169082161015612ee25760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60448201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520617460648201527f206f72206166746572206d6f7374526563656e745769746864726177616c546960848201526606d657374616d760cc1b60a482015260c4016106a4565b6000612ef0612e1b8b615926565b90506000612f3088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061341892505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612f5d57612f5d614e91565b036130135760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff16156130d25760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506131af8c87878e7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015613186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131aa9190615a78565b6138ff565b60006131ed87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061432092505050565b90506131fd8d8a8a8e8e86613476565b600061323b88888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061433892505050565b90506132798a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136cd92505050565b6001600160401b031661329361328e8f615926565b614350565b6001600160401b03161061334b57603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261334093869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561332757613327614e91565b600281111561333857613338614e91565b905250614362565b955050505050613365565b60335461334090839086906001600160a01b0316846145a0565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063c0db354c9083906044016000604051808303818588803b1580156133e357600080fd5b505af11580156133f7573d6000803e3d6000fd5b50505050505050565b60008361340e86858561467e565b1495945050505050565b60008160008151811061342d5761342d615517565b60200260200101519050919050565b60008160018151811061342d5761342d615517565b6000610d048260028151811061346957613469615517565b60200260200101516147cd565b61348260036002615b7c565b841461350d5760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561351b60286001614c64565b6135259190614c64565b6135309060206157a0565b82146135b05760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166135c660286001614c64565b600b901b179050600061360b87878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b905061365185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250859150869050613400565b6136c35760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b6000610d048260078151811061346957613469615517565b60006136fd6001600160401b03808416908516615b88565b9392505050565b804710156137545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146137a1576040519150601f19603f3d011682016040523d82523d6000602084013e6137a6565b606091505b50509050806116865760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613872826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614acd9092919063ffffffff16565b805190915015611686578080602001905181019061389091906153a2565b6116865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610d048261014001516147cd565b61390a600280615b7c565b831461397e5760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b61398a600d6002615b7c565b61399a60c0840160a08501615ba8565b6001600160401b031610613a045760405162461bcd60e51b815260206004820152603f6024820152600080516020615bf083398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b613a1060046002615b7c565b613a21610100840160e08501615ba8565b6001600160401b031610613a8d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bf083398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b613a9960186002615b7c565b613aa960e0840160c08501615ba8565b6001600160401b031610613b235760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613b3b612e1b85615926565b6001600160401b031610613b50576005613b53565b60045b9050613b60600482614c64565b613b6b906001614c64565b613b769060206157a0565b613b8084806154d1565b905014613bf45760405162461bcd60e51b81526020600482015260486024820152600080516020615bf083398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613c0060046003614c64565b613c0b9060206157a0565b613c1860408501856154d1565b905014613c925760405162461bcd60e51b815260206004820152604e6024820152600080516020615bf083398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613c9e600360206157a0565b613cab60208501856154d1565b905014613d195760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613d248160206157a0565b613d3160608501856154d1565b905014613da45760405162461bcd60e51b81526020600482015260476024820152600080516020615bf083398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613db260186001614c64565b613dbd906005614c64565b613dc8906001614c64565b613dd29190614c64565b613ddd9060206157a0565b613dea60808501856154d1565b905014613e735760405162461bcd60e51b81526020600482015260586024820152600080516020615bf083398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613e8560c0850160a08601615ba8565b6001600160401b03166000613e9c600d6001614c64565b613eac60e0880160c08901615ba8565b6001600160401b0316901b600d613ec560186001614c64565b613ed0906001614c64565b613eda9190614c64565b601b901b1717179050613f35613ef360808601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250505061010087013584613400565b613fa85760405162461bcd60e51b815260206004820152604a6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613fff613fb860208601866154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a013592509050613400565b61405f5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b60496140b761407160408701876154d1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061010087013561016088013584613400565b6141295760405162461bcd60e51b81526020600482015260496024820152600080516020615bf083398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b5061418161413a60608601866154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608601356101408701356009613400565b6141ec5760405162461bcd60e51b81526020600482015260426024820152600080516020615bf083398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006141ff610100860160e08701615ba8565b6001600160401b031661421460046001614c64565b600e901b179050600061425988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061483492505050565b90506142a961426887806154d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101608801358385613400565b6143155760405162461bcd60e51b81526020600482015260436024820152600080516020615bf083398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610d048260018151811061346957613469615517565b6000610d048260038151811061346957613469615517565b600060206120e38361012001516147cd565b604080518082019091526000808252602082015260007f00000000000000000000000000000000000000000000000000000007735940006001600160401b0316846001600160401b031611156143d957507f00000000000000000000000000000000000000000000000000000007735940006143dc565b50825b60408051808201909152600080825260208201526143fa8286615760565b6001600160401b03908116825260348054849260009161441c9185911661581a565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061444e8285602001516136e5565b602082015260028460600151600281111561446b5761446b614e91565b1461448d576039805490600061448083615bc5565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561453257614532614e91565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906146319084906001600160401b031661581a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561469d57506020845161469b9190615738565b155b61472c5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b855181116147c357614750600285615738565b600003614786578151600052808601516020526020826040600060026107d05a03fa61477b57600080fd5b6002840493506147b1565b8086015160005281516020526020826040600060026107d05a03fa6147aa57600080fd5b6002840493505b6147bc602082614c64565b905061473d565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b60008060028351614845919061574c565b90506000816001600160401b03811115614861576148616150b9565b60405190808252806020026020018201604052801561488a578160200160208202803683370190505b50905060005b82811015614987576002856148a583836157a0565b815181106148b5576148b5615517565b6020026020010151868360026148cb91906157a0565b6148d6906001614c64565b815181106148e6576148e6615517565b6020026020010151604051602001614908929190918252602082015260400190565b60408051601f1981840301815290829052614922916158a5565b602060405180830381855afa15801561493f573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061496291906154b8565b82828151811061497457614974615517565b6020908102919091010152600101614890565b5061499360028361574c565b91505b8115614aa95760005b82811015614a96576002826149b483836157a0565b815181106149c4576149c4615517565b6020026020010151838360026149da91906157a0565b6149e5906001614c64565b815181106149f5576149f5615517565b6020026020010151604051602001614a17929190918252602082015260400190565b60408051601f1981840301815290829052614a31916158a5565b602060405180830381855afa158015614a4e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614a7191906154b8565b828281518110614a8357614a83615517565b602090810291909101015260010161499f565b50614aa260028361574c565b9150614996565b80600081518110614abc57614abc615517565b602002602001015192505050919050565b6060614adc8484600085614ae4565b949350505050565b606082471015614b455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614b9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614bb891906158a5565b60006040518083038185875af1925050503d8060008114614bf5576040519150601f19603f3d011682016040523d82523d6000602084013e614bfa565b606091505b5091509150614c0a828286614c15565b979650505050505050565b60608315614c245750816136fd565b825115614c345782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bdc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d0457610d04614c4e565b6001600160401b038116811461200057600080fd5b8035614c9781614c77565b919050565b60008060408385031215614caf57600080fd5b823591506020830135614cc181614c77565b809150509250929050565b600060408284031215614cde57600080fd5b50919050565b60008083601f840112614cf657600080fd5b5081356001600160401b03811115614d0d57600080fd5b6020830191508360208260051b8501011115614d2857600080fd5b9250929050565b60008060008060008060008060a0898b031215614d4b57600080fd5b8835614d5681614c77565b975060208901356001600160401b03811115614d7157600080fd5b614d7d8b828c01614ccc565b97505060408901356001600160401b03811115614d9957600080fd5b614da58b828c01614ce4565b90975095505060608901356001600160401b03811115614dc457600080fd5b614dd08b828c01614ce4565b90955093505060808901356001600160401b03811115614def57600080fd5b614dfb8b828c01614ce4565b999c989b5096995094979396929594505050565b60008083601f840112614e2157600080fd5b5081356001600160401b03811115614e3857600080fd5b602083019150836020828501011115614d2857600080fd5b60008060208385031215614e6357600080fd5b82356001600160401b03811115614e7957600080fd5b614e8585828601614e0f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614ec557634e487b7160e01b600052602160045260246000fd5b9052565b60208101610d048284614ea7565b600060208284031215614ee957600080fd5b5035919050565b60006080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b0360408401511660408301526060830151614f3d6060840182614ea7565b5092915050565b600080600080600060608688031215614f5c57600080fd5b85356001600160401b03811115614f7257600080fd5b614f7e88828901614e0f565b90965094505060208601356001600160401b03811115614f9d57600080fd5b614fa988828901614e0f565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614fd757600080fd5b8835614fe281614c77565b975060208901356001600160401b03811115614ffd57600080fd5b6150098b828c01614ce4565b90985096505060408901356001600160401b0381111561502857600080fd5b6150348b828c01614ccc565b95505060608901356001600160401b03811115614dc457600080fd5b6001600160a01b038116811461200057600080fd5b8035614c9781615050565b6000806040838503121561508357600080fd5b823561508e81615050565b946020939093013593505050565b6000602082840312156150ae57600080fd5b81356136fd81615050565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b03811182821017156150f2576150f26150b9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615120576151206150b9565b604052919050565b60006001600160401b03821115615141576151416150b9565b5060051b60200190565b600082601f83011261515c57600080fd5b813561516f61516a82615128565b6150f8565b8082825260208201915060208360051b86010192508583111561519157600080fd5b602085015b838110156151ae578035835260209283019201615196565b5095945050505050565b6000806000606084860312156151cd57600080fd5b83356001600160401b038111156151e357600080fd5b8401601f810186136151f457600080fd5b803561520261516a82615128565b8082825260208201915060208360051b85010192508883111561522457600080fd5b6020840193505b8284101561524f57833561523e81615050565b82526020938401939091019061522b565b955050505060208401356001600160401b0381111561526d57600080fd5b6152798682870161514b565b92505061528860408501615065565b90509250925092565b60008060008060008060008060008060c08b8d0312156152b057600080fd5b6152b98b614c8c565b995060208b01356001600160401b038111156152d457600080fd5b6152e08d828e01614ccc565b99505060408b01356001600160401b038111156152fc57600080fd5b6153088d828e01614ce4565b90995097505060608b01356001600160401b0381111561532757600080fd5b6153338d828e01614ce4565b90975095505060808b01356001600160401b0381111561535257600080fd5b61535e8d828e01614ce4565b90955093505060a08b01356001600160401b0381111561537d57600080fd5b6153898d828e01614ce4565b915080935050809150509295989b9194979a5092959850565b6000602082840312156153b457600080fd5b815180151581146136fd57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6000602082840312156154ca57600080fd5b5051919050565b6000808335601e198436030181126154e857600080fd5b8301803591506001600160401b0382111561550257600080fd5b602001915036819003821315614d2857600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561553f57600080fd5b813564ffffffffff811681146136fd57600080fd5b6000808335601e1984360301811261556b57600080fd5b8301803591506001600160401b0382111561558557600080fd5b6020019150600581901b3603821315614d2857600080fd5b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561563257818101518382015260200161561a565b50506000910152565b60008151808452615653816020860160208601615617565b601f01601f19169290920160200192915050565b60808152600061567b60808301888a6155ee565b828103602084015261568d818861563b565b905082810360408401526156a28186886155ee565b915050826060830152979650505050505050565b602081526000614adc6020830184866155ee565b80820182811260008312801582168215821617156156ea576156ea614c4e565b505092915050565b80820260008212600160ff1b8414161561570e5761570e614c4e565b8181058314821517610d0457610d04614c4e565b634e487b7160e01b600052601260045260246000fd5b60008261574757615747615722565b500690565b60008261575b5761575b615722565b500490565b6001600160401b038281168282160390811115610d0457610d04614c4e565b6000823561017e1983360301811261579657600080fd5b9190910192915050565b8082028115828204841417610d0457610d04614c4e565b81810381811115610d0457610d04614c4e565b6001600160401b038181168382160290811690818114614f3d57614f3d614c4e565b60006001600160401b0383168061580557615805615722565b806001600160401b0384160491505092915050565b6001600160401b038181168382160190811115610d0457610d04614c4e565b80516020808301519190811015614cde5760001960209190910360031b1b16919050565b60006001820161586f5761586f614c4e565b5060010190565b60008351615888818460208801615617565b6001600160801b0319939093169190920190815260100192915050565b60008251615796818460208701615617565b600082601f8301126158c857600080fd5b81356001600160401b038111156158e1576158e16150b9565b6158f4601f8201601f19166020016150f8565b81815284602083860101111561590957600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561593957600080fd5b6159416150cf565b82356001600160401b0381111561595757600080fd5b615963368286016158b7565b82525060208301356001600160401b0381111561597f57600080fd5b61598b368286016158b7565b60208301525060408301356001600160401b038111156159aa57600080fd5b6159b6368286016158b7565b60408301525060608301356001600160401b038111156159d557600080fd5b6159e1368286016158b7565b60608301525060808301356001600160401b03811115615a0057600080fd5b615a0c368286016158b7565b608083015250615a1e60a08401614c8c565b60a0820152615a2f60c08401614c8c565b60c0820152615a4060e08401614c8c565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b600060208284031215615a8a57600080fd5b81516136fd81614c77565b6001815b6001841115615ad057808504811115615ab457615ab4614c4e565b6001841615615ac257908102905b60019390931c928002615a99565b935093915050565b600082615ae757506001610d04565b81615af457506000610d04565b8160018114615b0a5760028114615b1457615b30565b6001915050610d04565b60ff841115615b2557615b25614c4e565b50506001821b610d04565b5060208310610133831016604e8410600b8410161715615b53575081810a610d04565b615b606000198484615a95565b8060001904821115615b7457615b74614c4e565b029392505050565b60006136fd8383615ad8565b8181036000831280158383131683831282161715614f3d57614f3d614c4e565b600060208284031215615bba57600080fd5b81356136fd81614c77565b600081615bd457615bd4614c4e565b506000190190565b6020815260006136fd602083018461563b56fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a26469706673582212201a01de1d59be7fe16e003e55aa445e180a6e7594b61dacfe81b7a8e81476cdc664736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x68b1d87f95878fe05b998f19b66f4baba5de1aed": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b366004611948565b6104b2565b005b34801561017e57600080fd5b5061017061018d36600461196c565b61056e565b34801561019e57600080fd5b506101b26101ad366004611948565b6106ad565b6040516101bf91906119a3565b60405180910390f35b3480156101d457600080fd5b506101b26101e3366004611948565b610893565b3480156101f457600080fd5b5061021c7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f36600461196c565b6109ce565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109df565b34801561029957600080fd5b506102bd6102a83660046119f1565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610aa6565b34801561030357600080fd5b506102bd610312366004611a14565b610aba565b34801561032357600080fd5b50610337610332366004611a14565b610b3d565b6040516101bf9190611a40565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a4e565b610bbd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c736600461196c565b610e7c565b3480156103d857600080fd5b5061026a6103e7366004611948565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a14565b610f0e565b34801561043157600080fd5b50610170610440366004611a87565b610fa1565b34801561045157600080fd5b50610465610460366004611948565b6110c9565b6040516101bf9190611acd565b34801561047e57600080fd5b5061017061048d366004611948565b611183565b34801561049e57600080fd5b506101706104ad36600461196c565b6111f9565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b25565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b42565b60405180910390fd5b61056b81611355565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611b8c565b6105f65760405162461bcd60e51b815260040161055990611bae565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c0c565b90508060005b8281101561077c576001600160a01b038716600090815260ca6020526040812060010161070d8388611c1f565b8154811061071d5761071d611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c1f565b431015610773578192505061077c565b506001016106e0565b508060008167ffffffffffffffff81111561079957610799611c48565b6040519080825280602002602001820160405280156107de57816020015b60408051808201909152600080825260208201528152602001906001900390816107b75790505b50905081156108885760005b82811015610886576001600160a01b038916600090815260ca602052604090206001016108178289611c1f565b8154811061082757610827611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087357610873611c32565b60209081029190910101526001016107ea565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108c08383611c0c565b905060008167ffffffffffffffff8111156108dd576108dd611c48565b60405190808252806020026020018201604052801561092257816020015b60408051808201909152600080825260208201528152602001906001900390816108fb5790505b50905060005b828110156109c4576001600160a01b038716600090815260ca602052604090206001016109558287611c1f565b8154811061096557610965611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109b1576109b1611c32565b6020908102919091010152600101610928565b5095945050505050565b6109d661144c565b61056b816114a6565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190611b8c565b610a675760405162461bcd60e51b815260040161055990611bae565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610aae61144c565b610ab8600061156e565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b34575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b0d57610b0d611c32565b600091825260209091200154610b309190600160e01b900463ffffffff16611c1f565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b7e57610b7e611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a38406a390602401602060405180830381865afa158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b9190611b25565b6001600160a01b031614610cc75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b609854600090600190811603610cef5760405162461bcd60e51b815260040161055990611c5e565b6001600160a01b038316610d855760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e75576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e3691611c0c565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b600260655403610ece5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610efb5760405162461bcd60e51b815260040161055990611c5e565b610f0533836115c0565b50506001606555565b600260655403610f605760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b6002606555609854600090600190811603610f8d5760405162461bcd60e51b815260040161055990611c5e565b610f9783836115c0565b5050600160655550565b600054610100900460ff1615808015610fc15750600054600160ff909116105b80610fdb5750303b158015610fdb575060005460ff166001145b61103e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611061576000805461ff0019166101001790555b61106a8561156e565b611074848461172b565b61107d826114a6565b8015610e75576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561117557600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff1681830152825260019092019101611129565b505050915250909392505050565b61118b61144c565b6001600160a01b0381166111f05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b8161156e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190611b25565b6001600160a01b0316336001600160a01b0316146112a05760405162461bcd60e51b815260040161055990611b42565b60985419811960985419161461131e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166113e35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc081111561152d5760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b84811080156115f95750816115f78285611c1f565b105b156116a6576001600160a01b038616600090815260ca602052604081206001016116238386611c1f565b8154811061163357611633611c32565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061167991611c1f565b43101561168657506116a6565b805161169b906001600160e01b031686611c1f565b9450506001016115e2565b6116b08184611c1f565b6001600160a01b038716600090815260ca602052604090205583156116d9576116d98685611815565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb094386856117068487611c1f565b604080516001600160a01b039094168452602084019290925290820152606001610e6b565b6097546001600160a01b031615801561174c57506001600160a01b03821615155b6117ce5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261181182611355565b5050565b804710156118655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118b2576040519150601f19603f3d011682016040523d82523d6000602084013e6118b7565b606091505b505090508061192e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561195a57600080fd5b813561196581611933565b9392505050565b60006020828403121561197e57600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000918401906040840190835b818110156119e6576119d0838551611985565b60209390930192604092909201916001016119bd565b509095945050505050565b600060208284031215611a0357600080fd5b813560ff8116811461196557600080fd5b60008060408385031215611a2757600080fd5b8235611a3281611933565b946020939093013593505050565b60408101610b378284611985565b60008060408385031215611a6157600080fd5b8235611a6c81611933565b91506020830135611a7c81611933565b809150509250929050565b60008060008060808587031215611a9d57600080fd5b8435611aa881611933565b93506020850135611ab881611933565b93969395505050506040820135916060013590565b6020808252825182820152828101516040808401528051606084018190526000929190910190829060808501905b808310156109c457611b0e828551611985565b604082019150602084019350600183019250611afb565b600060208284031215611b3757600080fd5b815161196581611933565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611b9e57600080fd5b8151801515811461196557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b3757610b37611bf6565b80820180821115610b3757610b37611bf6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea26469706673582212208638e66f5dce0ad66ff3676e3d1ac48bc288949bb5c5e4f6ec1f16e582f0f63064736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x70e0ba845a1a0f2da3359c97e0285013525ffc49": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033", - "storage": - { - "0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f": "0x0000000000000009000000000000000000000000000000000000000000000000", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", - }, - }, - "0x7969c5ed335650692bc04293b07f5bf2e7a673c0": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061012e5760003560e01c8063715018a6116100ab578063a69df4b51161006f578063a69df4b5146103c0578063a7d31809146103d5578063c0c53b8b146103f5578063c891091314610415578063f2fde38b1461046c578063f83d08ba1461048c57600080fd5b8063715018a61461034257806373e289d0146103575780638456cb591461036d5780638da5cb5b14610382578063953ef807146103a057600080fd5b80634d5431ea116100f25780634d5431ea146102865780634f1ef286146102bf57806352d1902d146102d257806358b96e27146102e75780635c975abb1461031f57600080fd5b806317d89c4e146101ad5780632df4e21e146101f95780632e1a7d4d1461022f5780633659cfe6146102515780633f4ba83a1461027157600080fd5b366101a85733600090815260fd60205260408120805434929061015290849061154c565b909155505033600081815260fd602052604080822060010191909155517f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7709061019e9034815260200190565b60405180910390a2005b600080fd5b3480156101b957600080fd5b506101e66101c8366004611574565b6001600160a01b0316600090815260fd602052604090206002015490565b6040519081526020015b60405180910390f35b34801561020557600080fd5b506101e6610214366004611574565b6001600160a01b0316600090815260fd602052604090205490565b34801561023b57600080fd5b5061024f61024a366004611591565b6104a1565b005b34801561025d57600080fd5b5061024f61026c366004611574565b6105de565b34801561027d57600080fd5b5061024f6106bd565b34801561029257600080fd5b506101e66102a1366004611574565b6001600160a01b0316600090815260fd602052604090206001015490565b61024f6102cd3660046115c0565b6106cf565b3480156102de57600080fd5b506101e661079f565b3480156102f357600080fd5b5060fc54610307906001600160a01b031681565b6040516001600160a01b0390911681526020016101f0565b34801561032b57600080fd5b5060655460ff1660405190151581526020016101f0565b34801561034e57600080fd5b5061024f610852565b34801561036357600080fd5b506101e6610e1081565b34801561037957600080fd5b5061024f610864565b34801561038e57600080fd5b506033546001600160a01b0316610307565b3480156103ac57600080fd5b5060fb54610307906001600160a01b031681565b3480156103cc57600080fd5b5061024f610874565b3480156103e157600080fd5b5061024f6103f03660046116d0565b61090b565b34801561040157600080fd5b5061024f61041036600461178f565b610b9f565b34801561042157600080fd5b50610451610430366004611574565b60fd6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101f0565b34801561047857600080fd5b5061024f610487366004611574565b610de9565b34801561049857600080fd5b5061024f610e5f565b6104a9610ed5565b33600090815260fd6020526040902080548211156104ec5780546040516321c3d50f60e01b81526004810191909152602481018390526044015b60405180910390fd5b600181015415806105005750428160010154115b1561052d576001810154604051635f6e272d60e11b815260048101919091524260248201526044016104e3565b8181600001600082825461054191906117da565b909155505060006001820181905560405133917fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd91a2604051339083156108fc029084906000818181858888f193505050501580156105a4573d6000803e3d6000fd5b5060405182815233907feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9060200160405180910390a25050565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036106265760405162461bcd60e51b81526004016104e3906117ed565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b031661066f600080516020611a06833981519152546001600160a01b031690565b6001600160a01b0316146106955760405162461bcd60e51b81526004016104e390611839565b61069e81610f1b565b604080516000808252602082019092526106ba91839190610f23565b50565b6106c5611093565b6106cd6110ed565b565b6001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c01630036107175760405162461bcd60e51b81526004016104e3906117ed565b7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610760600080516020611a06833981519152546001600160a01b031690565b6001600160a01b0316146107865760405162461bcd60e51b81526004016104e390611839565b61078f82610f1b565b61079b82826001610f23565b5050565b6000306001600160a01b037f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0161461083f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104e3565b50600080516020611a0683398151915290565b61085a611093565b6106cd600061113f565b61086c611093565b6106cd611191565b61087c610ed5565b33600090815260fd602052604081205490036108ad5760405163b38340cf60e01b81523360048201526024016104e3565b6108b9610e104261154c565b33600081815260fd6020526040908190206001018390555190917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439161090191815260200190565b60405180910390a2565b60fc546001600160a01b03163314610938576040516302a5785160e31b81523360048201526024016104e3565b610940610ed5565b83600081900361096357604051630c43ac2960e41b815260040160405180910390fd5b82600003610984576040516351d432c560e11b815260040160405180910390fd5b8361098f8285611885565b116109c1578361099f8285611885565b604051637899ec7160e01b8152600481019290925260248201526044016104e3565b60005b818163ffffffff161015610aa257600087878363ffffffff168181106109ec576109ec61189c565b9050602002016020810190610a019190611574565b6001600160a01b038116600090815260fd60205260409020805491925090861115610a5b578054604051634f779ceb60e01b81526001600160a01b03841660048201526024810191909152604481018790526064016104e3565b600281018054906000610a6d836118b2565b919050555085816000016000828254610a8691906117da565b9250508190555050508080610a9a906118cb565b9150506109c4565b5060fb5460405163d66eaabd60e01b81526001600160a01b039091169063d66eaabd908690610adb908d908d908d9089906004016118ee565b6000604051808303818588803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b5050505050887f4f9439a5aed9cb470d2e0756e7d293accfe5223e719a9a1a256646378ec4375884604051610b3f91815260200190565b60405180910390a260fc546001600160a01b03166108fc85610b618487611885565b610b6b91906117da565b6040518115909202916000818181858888f19350505050158015610b93573d6000803e3d6000fd5b50505050505050505050565b600054610100900460ff1615808015610bbf5750600054600160ff909116105b80610bd95750303b158015610bd9575060005460ff166001145b610c3c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104e3565b6000805460ff191660011790558015610c5f576000805461ff0019166101001790555b6001600160a01b038416610cae57604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b60448201526064016104e3565b6001600160a01b038316610d0557604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e657200000000000060448201526064016104e3565b6001600160a01b038216610d4c57604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b60448201526064016104e3565b610d546111ce565b610d5c6111fd565b610d64611224565b610d6d8361113f565b60fb80546001600160a01b038087166001600160a01b03199283161790925560fc8054928516929091169190911790558015610de3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610df1611093565b6001600160a01b038116610e565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e3565b6106ba8161113f565b610e67610ed5565b33600090815260fd60205260408120549003610e985760405163366095e160e11b81523360048201526024016104e3565b33600081815260fd6020526040808220600101829055517fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd9190a2565b60655460ff16156106cd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104e3565b6106ba611093565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f5b57610f5683611253565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fb5575060408051601f3d908101601f19168201909252610fb29181019061192e565b60015b6110185760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104e3565b600080516020611a0683398151915281146110875760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104e3565b50610f568383836112ef565b6033546001600160a01b031633146106cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104e3565b6110f5611314565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611199610ed5565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586111223390565b600054610100900460ff166111f55760405162461bcd60e51b81526004016104e390611947565b6106cd61135d565b600054610100900460ff166106cd5760405162461bcd60e51b81526004016104e390611947565b600054610100900460ff1661124b5760405162461bcd60e51b81526004016104e390611947565b6106cd61138d565b6001600160a01b0381163b6112c05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104e3565b600080516020611a0683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6112f8836113c0565b6000825111806113055750805b15610f5657610de38383611400565b60655460ff166106cd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104e3565b600054610100900460ff166113845760405162461bcd60e51b81526004016104e390611947565b6106cd3361113f565b600054610100900460ff166113b45760405162461bcd60e51b81526004016104e390611947565b6065805460ff19169055565b6113c981611253565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6114685760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104e3565b600080846001600160a01b03168460405161148391906119b6565b600060405180830381855af49150503d80600081146114be576040519150601f19603f3d011682016040523d82523d6000602084013e6114c3565b606091505b50915091506114eb8282604051806060016040528060278152602001611a26602791396114f6565b925050505b92915050565b6060831561150557508161152f565b8251156115155782518084602001fd5b8160405162461bcd60e51b81526004016104e391906119d2565b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156114f0576114f0611536565b6001600160a01b03811681146106ba57600080fd5b60006020828403121561158657600080fd5b813561152f8161155f565b6000602082840312156115a357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156115d357600080fd5b82356115de8161155f565b9150602083013567ffffffffffffffff808211156115fb57600080fd5b818501915085601f83011261160f57600080fd5b813581811115611621576116216115aa565b604051601f8201601f19908116603f01168101908382118183101715611649576116496115aa565b8160405282815288602084870101111561166257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008083601f84011261169657600080fd5b50813567ffffffffffffffff8111156116ae57600080fd5b6020830191508360208260051b85010111156116c957600080fd5b9250929050565b60008060008060008060008060c0898b0312156116ec57600080fd5b88359750602089013567ffffffffffffffff8082111561170b57600080fd5b818b0191508b601f83011261171f57600080fd5b81358181111561172e57600080fd5b8c602082850101111561174057600080fd5b6020830199508098505060408b013591508082111561175e57600080fd5b5061176b8b828c01611684565b999c989b5096999698976060880135976080810135975060a0013595509350505050565b6000806000606084860312156117a457600080fd5b83356117af8161155f565b925060208401356117bf8161155f565b915060408401356117cf8161155f565b809150509250925092565b818103818111156114f0576114f0611536565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b80820281158282048414176114f0576114f0611536565b634e487b7160e01b600052603260045260246000fd5b6000600182016118c4576118c4611536565b5060010190565b600063ffffffff8083168181036118e4576118e4611536565b6001019392505050565b848152606060208201528260608201528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b60006020828403121561194057600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b838110156119ad578181015183820152602001611995565b50506000910152565b600082516119c8818460208701611992565b9190910192915050565b60208152600082518060208401526119f1816040850160208701611992565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122003c5cae49592cb6d020c301aa98eb5db4d32c08a2c4bc5494d33ccaf394bdebe64736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a13660046117b9565b6103ba565b005b6101a66101b6366004611803565b61049d565b6101a66101c9366004611820565b610550565b6101a66101dc366004611842565b610605565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61024160335481565b604051908152602001610208565b61024160645481565b61024161026636600461185b565b610749565b6101a6610279366004611887565b6108ef565b61024161028c366004611803565b6109bd565b6101a66109d1565b6102b86102a73660046118c0565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e7366004611842565b610a9d565b6000546101f4906201000090046001600160a01b031681565b610241610313366004611842565b610ae8565b610241610326366004611803565b610af3565b610333610b01565b6040516102089190611907565b61024161034e366004611803565b610b21565b6101a661036136600461193a565b610bb6565b60645460655460408051928352602083019190915201610208565b61024161038f366004611842565b610d7e565b6102416103a2366004611842565b610db7565b6101a66103b5366004611842565b610dc2565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b81526004016104109061197b565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b6104468585610f1e565b610450838361102b565b8015610496576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051491906119c9565b6001600160a01b0316336001600160a01b0316146105445760405162461bcd60e51b8152600401610410906119e6565b61054d816110bc565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c791906119c9565b6001600160a01b0316336001600160a01b0316146105f75760405162461bcd60e51b8152600401610410906119e6565b6106018282610f1e565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106769190611a30565b6106925760405162461bcd60e51b815260040161041090611a52565b6001548181161461070b5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60018054600091829181160361079d5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146108155760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b61081f84846111c1565b60335460006108306103e883611ab0565b905060006103e861083f6112a3565b6108499190611ab0565b905060006108578783611ac3565b9050806108648489611ad6565b61086e9190611aed565b9550856000036108d75760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6108e18685611ab0565b603355505050505092915050565b600054610100900460ff161580801561090f5750600054600160ff909116105b806109295750303b158015610929575060005460ff166001145b6109455760405162461bcd60e51b81526004016104109061197b565b6000805460ff191660011790558015610968576000805461ff0019166101001790555b610972838361102b565b80156109b8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109cb6102e783610b21565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190611a30565b610a5e5760405162461bcd60e51b815260040161041090611a52565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ab09190611ab0565b905060006103e8610abf6112a3565b610ac99190611ab0565b905081610ad68583611ad6565b610ae09190611aed565b949350505050565b60006109cb82610d7e565b60006109cb6103a283610b21565b60606040518060800160405280604d8152602001611b45604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c990911690637a7e0d9290604401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cb9190611b0f565b60018054600290811603610c085760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c805760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610c8b848484611315565b60335480831115610d1a5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d286103e883611ab0565b905060006103e8610d376112a3565b610d419190611ab0565b9050600082610d508784611ad6565b610d5a9190611aed565b9050610d668685611ac3565b603355610d74888883611398565b5050505050505050565b6000806103e8603354610d919190611ab0565b905060006103e8610da06112a3565b610daa9190611ab0565b905080610ad68386611ad6565b60006109cb82610a9d565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3991906119c9565b6001600160a01b0316336001600160a01b031614610e695760405162461bcd60e51b8152600401610410906119e6565b600154198119600154191614610ee75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161073e565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110205760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110965760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b0384161790556106018160006113ac565b6001600160a01b03811661114a5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60645481111561122b5760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b6065546112366112a3565b11156112995760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b6106018282611498565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611b0f565b905090565b6032546001600160a01b038381169116146109b85760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109b86001600160a01b0383168483611514565b6000546201000090046001600160a01b03161580156113d357506001600160a01b03821615155b6114555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610601826110bc565b6032546001600160a01b038381169116146106015760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109b8928692916000916115a4918516908490611621565b8051909150156109b857808060200190518101906115c29190611a30565b6109b85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b6060611630848460008561163a565b90505b9392505050565b60608247101561169b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6116f25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b0316858760405161170e9190611b28565b60006040518083038185875af1925050503d806000811461174b576040519150601f19603f3d011682016040523d82523d6000602084013e611750565b606091505b509150915061176082828661176b565b979650505050505050565b6060831561177a575081611633565b82511561178a5782518084602001fd5b8160405162461bcd60e51b81526004016104109190611907565b6001600160a01b038116811461054d57600080fd5b600080600080608085870312156117cf57600080fd5b843593506020850135925060408501356117e8816117a4565b915060608501356117f8816117a4565b939692955090935050565b60006020828403121561181557600080fd5b8135611633816117a4565b6000806040838503121561183357600080fd5b50508035926020909101359150565b60006020828403121561185457600080fd5b5035919050565b6000806040838503121561186e57600080fd5b8235611879816117a4565b946020939093013593505050565b6000806040838503121561189a57600080fd5b82356118a5816117a4565b915060208301356118b5816117a4565b809150509250929050565b6000602082840312156118d257600080fd5b813560ff8116811461163357600080fd5b60005b838110156118fe5781810151838201526020016118e6565b50506000910152565b60208152600082518060208401526119268160408501602087016118e3565b601f01601f19169190910160400192915050565b60008060006060848603121561194f57600080fd5b833561195a816117a4565b9250602084013561196a816117a4565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000602082840312156119db57600080fd5b8151611633816117a4565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611a4257600080fd5b8151801515811461163357600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109cb576109cb611a9a565b818103818111156109cb576109cb611a9a565b80820281158282048414176109cb576109cb611a9a565b600082611b0a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b2157600080fd5b5051919050565b60008251611b3a8184602087016118e3565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220164a1e6647f9a7e6acdd95fe11c2a51bff432bb3e4654da860b9e0fe8c10f37064736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x7bc06c482dead17c0e297afbc32f6e63d3846650": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea26469706673582212201b5f899d9100d05ffd16b26a8e94bf20e28dd085fba06b911d8ef847c76d3bf864736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000fb": "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c", - "0x00000000000000000000000000000000000000000000000000000000000000fc": "0x0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0", - }, - }, - "0x851356ae760d987e095750cceb3bc6014560891c": - { - "nonce": 1, - "balance": "0xde0b6b3a7640000", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x00000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65", - "0x00000000000000000000000000000000000000000000000000000000000000fb": "0x000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", - "0x00000000000000000000000000000000000000000000000000000000000000fc": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", - "0xf30de5dd89e866564a2ae4ccd6bce63a4b4930da9725a34e42ab718be7984ae8": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000", - }, - }, - "0x8a791620dd6260079bf849dc5567adc3f2fdc318": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000098": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0x95401dc811bb5740090279ba06cfa8fcf6113778": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033", - "storage": - { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528", - "0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", - "0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e": "0x0000000000000000000000000000000000000000000000000000000000000009", - }, - }, - "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd7565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d05565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d52565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d6f565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610db9565b6105b35760405162461bcd60e51b815260040161051990610ddb565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610db9565b61070d5760405162461bcd60e51b815260040161051990610ddb565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d52565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d6f565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff811115610c8a57600080fd5b8301601f81018513610c9b57600080fd5b803567ffffffffffffffff811115610cb257600080fd5b8560208260051b8401011115610cc757600080fd5b6020919091019590945092505050565b600080600060608486031215610cec57600080fd5b8335610cf781610af7565b9250610bc760208501610b0c565b60008060008060808587031215610d1b57600080fd5b8435610d2681610af7565b9350610d3460208601610b0c565b9250610d4260408601610b0c565b9396929550929360600135925050565b600060208284031215610d6457600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dcb57600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea26469706673582212204498542bd53fe5969cd2484cb9f25ea6fca9228d748c3cfb4c54b0eae1d8b52e64736f6c634300081b0033", - "storage": {}, - }, - "0x998abeb3e57409262ae5b751f60747921b33613e": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033", - "storage": - { - "0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b": "0x0000000000000000000000000000000000000000000000000000000000000009", - "0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf", - "0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", - "0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e": "0x000000000de0b6b3a7640000c5a5c42992decbae36851359345fe25997f5c42d", - }, - }, - "0x9a676e781a523b5d0c0e43731313a708cb607508": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118a2565b610387565b005b61015a61016a3660046118c6565b610443565b61015a61017d3660046118df565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611920565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b61022861020836600461194c565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b3919061199b565b61015a6106ac565b6101ea61024b3660046119c3565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a56565b610787565b6101a96102cd366004611b4b565b610b18565b61015a6102e03660046118a2565b610bd1565b61015a6102f3366004611b91565b610d39565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015a6103543660046118c6565b610d80565b61015a6103673660046118a2565b610e2b565b6101a9610ea1565b61015a6103823660046118c6565b610ede565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611c05565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c22565b60405180910390fd5b6104408161103a565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c6c565b6104cb5760405162461bcd60e51b815260040161042e90611c8e565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611131565b61065461121b565b609755610660846112b2565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c6c565b6107345760405162461bcd60e51b815260040161042e90611c8e565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611304565b61078560006112b2565b565b6066546000906001908116036107db5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108435760405162461bcd60e51b815260206004820152603e6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087d5761087d611985565b036108de5760405162461bcd60e51b815260206004820152603f6024820152600080516020611da683398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109625760405162461bcd60e51b81526020600482015260366024820152600080516020611da68339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156109c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c6c565b610a625760405162461bcd60e51b815260206004820152604d6024820152600080516020611da683398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a78843385602001518660400151610b18565b9050610a898482856000015161135e565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0a919061199b565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b8e610ea1565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b606654600090600190811603610c255760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c5f57610c5f611985565b14610cd25760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d2d919061199b565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d74929190611cd6565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e055760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e33611304565b6001600160a01b038116610e985760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603610ed1575060975490565b610ed961121b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190611c05565b6001600160a01b0316336001600160a01b031614610f855760405162461bcd60e51b815260040161042e90611c22565b6066541981196066541916146110035760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110c85760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115257506001600160a01b03821615155b6111d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26112178261103a565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561147d57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061139e9086908690600401611d05565b602060405180830381865afa1580156113bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113df9190611d5a565b6001600160e01b031916146114785760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b0316611491838361151d565b6001600160a01b0316146114785760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b600080600061152c8585611543565b91509150611539816115b1565b5090505b92915050565b60008082516041036115795760208301516040840151606085015160001a61156d87828585611767565b945094505050506115aa565b82516040036115a25760208301516040840151611597868383611854565b9350935050506115aa565b506000905060025b9250929050565b60008160048111156115c5576115c5611985565b036115cd5750565b60018160048111156115e1576115e1611985565b0361162e5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b600281600481111561164257611642611985565b0361168f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116a3576116a3611985565b036116fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b600481600481111561170f5761170f611985565b036104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561179e575060009050600361184b565b8460ff16601b141580156117b657508460ff16601c14155b156117c7575060009050600461184b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561181b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118445760006001925092505061184b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187160ff86901c601b611d84565b905061187f87828885611767565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118b457600080fd5b81356118bf8161188d565b9392505050565b6000602082840312156118d857600080fd5b5035919050565b6000806000606084860312156118f457600080fd5b83356118ff8161188d565b9250602084013561190f8161188d565b929592945050506040919091013590565b6000806040838503121561193357600080fd5b823561193e8161188d565b946020939093013593505050565b6000806040838503121561195f57600080fd5b823561196a8161188d565b9150602083013561197a8161188d565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119bd57634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119d557600080fd5b813560ff811681146118bf57600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a1f57611a1f6119e6565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4e57611a4e6119e6565b604052919050565b60008060408385031215611a6957600080fd5b8235611a748161188d565b9150602083013567ffffffffffffffff811115611a9057600080fd5b830160608186031215611aa257600080fd5b611aaa6119fc565b813567ffffffffffffffff811115611ac157600080fd5b8201601f81018713611ad257600080fd5b803567ffffffffffffffff811115611aec57611aec6119e6565b611aff601f8201601f1916602001611a25565b818152886020838501011115611b1457600080fd5b8160208401602083013760006020928201830152835283810135908301525060409182013591810191909152919491935090915050565b60008060008060808587031215611b6157600080fd5b8435611b6c8161188d565b93506020850135611b7c8161188d565b93969395505050506040820135916060013590565b60008060208385031215611ba457600080fd5b823567ffffffffffffffff811115611bbb57600080fd5b8301601f81018513611bcc57600080fd5b803567ffffffffffffffff811115611be357600080fd5b856020828401011115611bf557600080fd5b6020919091019590945092505050565b600060208284031215611c1757600080fd5b81516118bf8161188d565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7e57600080fd5b815180151581146118bf57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b828152604060208201526000825180604084015260005b81811015611d395760208186018101516060868401015201611d1c565b506000606082850101526060601f19601f8301168401019150509392505050565b600060208284031215611d6c57600080fd5b81516001600160e01b0319811681146118bf57600080fd5b8082018082111561153d57634e487b7160e01b600052601160045260246000fdfe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220238443f68aaa842a8a83f4f495dfe8380aabe34389d5eb96ae3c1857b4d66ef664736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae": - { - "nonce": 1, - "balance": "0x0", - "code": "0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e36600461240b565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612437565b610911565b005b34801561025457600080fd5b50610246610263366004612454565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf36600461246d565b610b03565b3480156102e057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124ae565b610ecc565b34801561036257600080fd5b5061024661105b565b34801561037757600080fd5b5061039b6103863660046124d8565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612437565b609b6020526000908152604090205481565b3480156103f957600080fd5b50610246611122565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611136565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf366004612544565b61121f565b3480156104d057600080fd5b5061029c6104df366004612437565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612437565b61130d565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561057057600080fd5b5061024661057f36600461240b565b6113df565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612437565b6115f6565b3480156105d057600080fd5b506102466105df36600461240b565b611607565b3480156105f057600080fd5b506102466105ff3660046125bd565b611a09565b34801561061057600080fd5b5061021361061f3660046124ae565b611b32565b34801561063057600080fd5b5061029c7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b34801561066457600080fd5b50610246610673366004612437565b611c3d565b34801561068457600080fd5b5061039b610693366004612437565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce366004612454565b611cb3565b6000336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107265760405162461bcd60e51b815260040161071d9061260e565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612682565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126ac565b6001600160a01b0386166000818152609b60205260409081902083905551919250906000805160206131f8833981519152906108f49087815260200190565b60405180910390a26109068282611e0f565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126d4565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d906126f1565b6109c181611e51565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061273b565b610a4c5760405162461bcd60e51b815260040161071d9061275d565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b4b5760405162461bcd60e51b815260040161071d9061260e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061321883398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061321883398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612682565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061321883398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127a5565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127c1565b9250846001600160a01b03166000805160206131f883398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126ac565b90915550506040518381526001600160a01b038616906000805160206131f88339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff16808203610ec75767ffffffffffffffff91505090565b919050565b610ed4611f48565b8067ffffffffffffffff16600003610f695760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110055760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c7919061273b565b6110e35760405162461bcd60e51b815260040161071d9061275d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61112a611f48565b6111346000611fa2565b565b606654600090819060019081160361118c5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120e5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611218611ff4565b9250505090565b6066546000906001908116036112735760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129c57611299611ff4565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112d2908b908b908b908b908b906004016127fd565b6000604051808303818588803b1580156112eb57600080fd5b505af11580156112ff573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d8836001600160a01b031660001b60405180610940016040528061090e81526020016128ea61090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526113bd9291602001612867565b60405160208183030381529060405280519060200120612159565b9392505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146114275760405162461bcd60e51b815260040161071d9061260e565b600081121561149e5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114ac633b9aca0082612682565b15611521576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154590839061287c565b905060008112156115d65760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fe611f48565b6109c1816121b5565b6001600160a01b0380831660009081526098602052604090205483911633146116825760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c954036116d45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b0383166117705760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177e633b9aca00836128a3565b156118175760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183b84836126ac565b6001600160a01b0386166000908152609b602052604081208290559091506118638383611e0f565b905080156119cb57600081121561192e576001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c2856127a5565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561191157600080fd5b505af1158015611925573d6000803e3d6000fd5b505050506119cb565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916906328a573ae90606401600060405180830381600087803b1580156119b257600080fd5b505af11580156119c6573d6000803e3d6000fd5b505050505b856001600160a01b03166000805160206131f8833981519152866040516119f491815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a295750600054600160ff909116105b80611a435750303b158015611a43575060005460ff166001145b611aa65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac9576000805461ff0019166101001790555b611ad2856121b5565b611adb84611fa2565b611ae583836121ff565b8015611b2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128b7565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c45611f48565b6001600160a01b038116611caa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a91906126d4565b6001600160a01b0316336001600160a01b031614611d5a5760405162461bcd60e51b815260040161071d906126f1565b606654198119606654191614611dd85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2f5760008213611e285750600061090b565b508061090b565b60008213611e4757611e40836127a5565b905061090b565b611e40838361287c565b6001600160a01b038116611edf5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146111345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000609960008154612005906128d0565b9091555060408051610940810190915261090e8082526000916120a491839133916128ea6020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091526000606082015260800160408051601f19818403018152908290526120909291602001612867565b6040516020818303038152906040526122e9565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e857600080fd5b505af11580156120fc573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d8565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561222057506001600160a01b03821615155b6122a25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e582611e51565b5050565b6000808447101561233c5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b825160000361238d5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123ee5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241e57600080fd5b8235612429816123f6565b946020939093013593505050565b60006020828403121561244957600080fd5b81356113d8816123f6565b60006020828403121561246657600080fd5b5035919050565b60008060006060848603121561248257600080fd5b833561248d816123f6565b9250602084013561249d816123f6565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b813567ffffffffffffffff811681146113d857600080fd5b6000602082840312156124ea57600080fd5b813560ff811681146113d857600080fd5b60008083601f84011261250d57600080fd5b50813567ffffffffffffffff81111561252557600080fd5b60208301915083602082850101111561253d57600080fd5b9250929050565b60008060008060006060868803121561255c57600080fd5b853567ffffffffffffffff81111561257357600080fd5b61257f888289016124fb565b909650945050602086013567ffffffffffffffff81111561259f57600080fd5b6125ab888289016124fb565b96999598509660400135949350505050565b600080600080608085870312156125d357600080fd5b84356125de816123f6565b935060208501356125ee816123f6565b925060408501356125fe816123f6565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826126915761269161266c565b500690565b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156126cc576126cc612696565b505092915050565b6000602082840312156126e657600080fd5b81516113d8816123f6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561274d57600080fd5b815180151581146113d857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b82016127ba576127ba612696565b5060000390565b8181038181111561090b5761090b612696565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128116060830187896127d4565b82810360208401526128248186886127d4565b9150508260408301529695505050505050565b6000815160005b81811015612858576020818501810151868301520161283e565b50600093019283525090919050565b60006123ee6128768386612837565b84612837565b818103600083128015838313168383128216171561289c5761289c612696565b5092915050565b6000826128b2576128b261266c565b500790565b6000602082840312156128c957600080fd5b5051919050565b6000600182016128e2576128e2612696565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a26469706673582212207ff0786e5c0a24739a386958aed54016658ca50211cd889cffa9bed27003964664736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x9d4454b023096f34b160d6b654540c56a1f81688": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636d14a987116100a2578063bf79ce5811610071578063bf79ce58146103cc578063d5254a8c146103df578063de29fac0146103ff578063e8bb9ae61461041f578063f4e24fe51461044857600080fd5b80636d14a9871461030a5780637916cea6146103315780637ff81a8714610372578063a3db80e2146103a557600080fd5b80633fb27952116100e95780633fb27952146101df57806347b314e8146101f25780635f61a88414610233578063605747d51461028f57806368bccaac146102dd57600080fd5b8062a1f4cb1461011a57806313542a4e1461015b57806326d941f214610192578063377ed99d146101a7575b600080fd5b6101416101283660046118e3565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6101846101693660046118e3565b6001600160a01b031660009081526001602052604090205490565b604051908152602001610152565b6101a56101a0366004611916565b61045b565b005b6101ca6101b5366004611916565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610152565b6101a56101ed3660046119a1565b6105b4565b61021b610200366004611a47565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610152565b610282610241366004611916565b60408051808201909152600080825260208201525060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b6040516101529190611a60565b6102a261029d366004611a77565b610672565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610152565b6102f06102eb366004611aa1565b610705565b60405167ffffffffffffffff199091168152602001610152565b61021b7f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3681565b61034461033f366004611a77565b6108a0565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610152565b6103856103803660046118e3565b6108eb565b604080518351815260209384015193810193909352820152606001610152565b6101416103b3366004611916565b6005602052600090815260409020805460019091015482565b6101846103da366004611ae9565b6109b8565b6103f26103ed366004611b46565b610e0b565b6040516101529190611bbe565b61018461040d3660046118e3565b60016020526000908152604090205481565b61021b61042d366004611a47565b6002602052600090815260409020546001600160a01b031681565b6101a56104563660046119a1565b61101a565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146104ac5760405162461bcd60e51b81526004016104a390611c08565b60405180910390fd5b60ff81166000908152600460205260409020541561052b5760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b60648201526084016104a3565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146105fc5760405162461bcd60e51b81526004016104a390611c08565b6000610607836108eb565b50905061061482826110c3565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610655856001600160a01b031660009081526001602052604090205490565b8460405161066593929190611c7c565b60405180910390a1505050565b604080516060810182526000808252602080830182905282840182905260ff8616825260049052919091208054839081106106af576106af611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff8316600090815260046020526040812080548291908490811061072c5761072c611ce2565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107f35760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e74000060648201526084016104a3565b604081015163ffffffff1615806108195750806040015163ffffffff168463ffffffff16105b6108975760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a4016104a3565b51949350505050565b600460205281600052604060002081815481106108bc57600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b60408051808201909152600080825260208201526001600160a01b0382166000818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806109ae5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f742072656769737465726564000060648201526084016104a3565b9094909350915050565b6000336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f361614610a025760405162461bcd60e51b81526004016104a390611c08565b6000610a30610a1936869003860160408701611cf8565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58103610ab7576040805162461bcd60e51b8152602060048201526024810191909152600080516020611eb283398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b657960648201526084016104a3565b6001600160a01b03851660009081526001602052604090205415610b415760405162461bcd60e51b81526020600482015260476024820152600080516020611eb283398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a4016104a3565b6000818152600260205260409020546001600160a01b031615610bc55760405162461bcd60e51b81526020600482015260426024820152600080516020611eb283398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a4016104a3565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610c1e918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611d2a565b6040516020818303038152906040528051906020012060001c610c419190611d6c565b9050610cdb610c7a610c6583610c5f368a90038a0160408b01611cf8565b90611307565b610c7436899003890189611cf8565b90611398565b610c8261142d565b610cc4610cb585610c5f604080518082018252600080825260209182015281518083019092526001825260029082015290565b610c74368a90038a018a611cf8565b610cd6368a90038a0160808b01611dde565b6114ed565b610d765760405162461bcd60e51b815260206004820152606c6024820152600080516020611eb283398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c4016104a3565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610dfa9160808a0190611e1d565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610e2857610e28611931565b604051908082528060200260200182016040528015610e51578160200160208202803683370190505b50905060005b84811015611011576000868683818110610e7357610e73611ce2565b919091013560f81c6000818152600460205260409020549092509050801580610ed6575060ff821660009081526004602052604081208054909190610eba57610eba611ce2565b600091825260209091200154600160c01b900463ffffffff1686105b15610f635760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a4016104a3565b805b80156110065760ff831660009081526004602052604090208790610f8a600184611e5d565b81548110610f9a57610f9a611ce2565b600091825260209091200154600160c01b900463ffffffff1611610ff457610fc3600182611e5d565b858581518110610fd557610fd5611ce2565b602002602001019063ffffffff16908163ffffffff1681525050611006565b80610ffe81611e70565b915050610f65565b505050600101610e57565b50949350505050565b336001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3616146110625760405162461bcd60e51b81526004016104a390611c08565b600061106d836108eb565b5090506110828261107d83611751565b6110c3565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610655856001600160a01b031660009081526001602052604090205490565b604080518082019091526000808252602082015260005b83518110156113015760008482815181106110f7576110f7611ce2565b0160209081015160f81c600081815260049092526040822054909250908190036111895760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f7420657869737400000060648201526084016104a3565b60ff821660009081526005602090815260409182902082518084019093528054835260010154908201526111bd9086611398565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916112069085611e5d565b8154811061121657611216611ce2565b6000918252602090912001805490915063ffffffff438116600160c01b90920416036112555780546001600160c01b031916604083901c1781556112f1565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b5050600190920191506110da9050565b50505050565b6040805180820190915260008082526020820152611323611810565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808061135257fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104a3565b505092915050565b60408051808201909152600080825260208201526113b461182e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080806113ef57fe5b50806113905760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104a3565b61143561184c565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201825285815260208082018590528251808401909352858352820183905260009161151c611871565b60005b60028110156116d7576000611535826006611e87565b905084826002811061154957611549611ce2565b6020020151518361155b836000611e9e565b600c811061156b5761156b611ce2565b602002015284826002811061158257611582611ce2565b602002015160200151838260016115999190611e9e565b600c81106115a9576115a9611ce2565b60200201528382600281106115c0576115c0611ce2565b60200201515151836115d3836002611e9e565b600c81106115e3576115e3611ce2565b60200201528382600281106115fa576115fa611ce2565b6020020151516001602002015183611613836003611e9e565b600c811061162357611623611ce2565b602002015283826002811061163a5761163a611ce2565b60200201516020015160006002811061165557611655611ce2565b602002015183611666836004611e9e565b600c811061167657611676611ce2565b602002015283826002811061168d5761168d611ce2565b6020020151602001516001600281106116a8576116a8611ce2565b6020020151836116b9836005611e9e565b600c81106116c9576116c9611ce2565b60200201525060010161151f565b506116e0611890565b60006020826101808560086107d05a03fa905080806116fb57fe5b50806117415760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016104a3565b5051151598975050505050505050565b6040805180820190915260008082526020820152815115801561177657506020820151155b15611794575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516117d99190611d6c565b611803907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e5d565b905292915050565b919050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061185f6118ae565b815260200161186c6118ae565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461180b57600080fd5b6000602082840312156118f557600080fd5b6118fe826118cc565b9392505050565b803560ff8116811461180b57600080fd5b60006020828403121561192857600080fd5b6118fe82611905565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561196a5761196a611931565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561199957611999611931565b604052919050565b600080604083850312156119b457600080fd5b6119bd836118cc565b915060208084013567ffffffffffffffff808211156119db57600080fd5b818601915086601f8301126119ef57600080fd5b813581811115611a0157611a01611931565b611a13601f8201601f19168501611970565b91508082528784828501011115611a2957600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a5957600080fd5b5035919050565b8151815260208083015190820152604081016106ff565b60008060408385031215611a8a57600080fd5b611a9383611905565b946020939093013593505050565b600080600060608486031215611ab657600080fd5b611abf84611905565b9250602084013563ffffffff81168114611ad857600080fd5b929592945050506040919091013590565b6000806000838503610160811215611b0057600080fd5b611b09856118cc565b9350610100601f1982011215611b1e57600080fd5b602085019250604061011f1982011215611b3757600080fd5b50610120840190509250925092565b600080600060408486031215611b5b57600080fd5b833567ffffffffffffffff80821115611b7357600080fd5b818601915086601f830112611b8757600080fd5b813581811115611b9657600080fd5b876020828501011115611ba857600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bfc57835163ffffffff1683529284019291840191600101611bda565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b03841681526000602084602084015260606040840152835180606085015260005b81811015611cbf57858101830151858201608001528201611ca3565b506000608082860101526080601f19601f83011685010192505050949350505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611d0a57600080fd5b611d12611947565b82358152602083013560208201528091505092915050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b600082611d8957634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d9f57600080fd5b611da7611947565b806040840185811115611db957600080fd5b845b81811015611dd3578035845260209384019301611dbb565b509095945050505050565b600060808284031215611df057600080fd5b611df8611947565b611e028484611d8e565b8152611e118460408501611d8e565b60208201529392505050565b823581526020808401359082015260c0810160408381840137604080840160808401379392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106ff576106ff611e47565b600081611e7f57611e7f611e47565b506000190190565b80820281158282048414176106ff576106ff611e47565b808201808211156106ff576106ff611e4756fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a264697066735822122032bb5054c7a2f6432e5be9a0f6a1c05e87838a89c3e8ae01d982bce76ffd2a6064736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0x9e545e3c0baab3e08cdfd552c960a1050f373042": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b03831681526000602060406020840152835180604085015260005b8181101561063c57858101830151858201606001528201610620565b506000606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212204991d74046566cb91b8d4cf7495532eedcea4124e157cfebcba924ceb7fba96464736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - }, - }, - "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0": - { - "nonce": 1, - "balance": "0x0", - "code": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea2646970667358221220424d2f5bff64d045b6950bb0e1329244f07cfae4a755f0d78a3a69f9c92adc8464736f6c634300081b0033", - "storage": {}, - }, - "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106103425760003560e01c8063635bbd10116101b8578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b014610908578063f2fde38b1461091b578063f698da251461092e578063fabc1cbc1461093657600080fd5b8063cf80873e146108c1578063da8be864146108e2578063eea9064b146108f557600080fd5b8063c488375a116100de578063c488375a146107de578063c5e480db146107fe578063c94b5111146108a4578063ca661c04146108b757600080fd5b8063b7f06ebe14610784578063bb45fef2146107a7578063c448feb8146107d557600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461070f57806399be81c81461072a578063a17884841461073d578063b13442711461075d57600080fd5b8063886f1195146106cb5780638da5cb5b146106de57806390041347146106ef57600080fd5b8063635bbd101461063657806365da1264146106495780636d70f7ae14610672578063715018a614610685578063778e55f31461068d5780637f548071146106b857600080fd5b806328a573ae116102925780634665bcda11610230578063597b36da1161020a578063597b36da146105e55780635ac86ab7146105f85780635c975abb1461061b57806360d7faed1461062357600080fd5b80634665bcda146105ac5780634fc40b61146105d3578063595c6a67146105dd57600080fd5b806339b70e381161026c57806339b70e38146104f45780633cdeb5e0146105335780633e28391d14610562578063433773821461058557600080fd5b806328a573ae146104ae57806329c77d4f146104c157806333404396146104e157600080fd5b8063132d4967116102ff57806316928365116102d957806316928365146104285780631bbce0911461046157806320606b701461047457806322bf40e41461049b57600080fd5b8063132d4967146103ef578063136439dd146104025780631522bf021461041557600080fd5b80630449ca391461034757806304a4f9791461036d5780630b9f487a146103945780630dd8dd02146103a75780630f589e59146103c757806310d67a2f146103dc575b600080fd5b61035a6103553660046147f6565b610949565b6040519081526020015b60405180910390f35b61035a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b61035a6103a236600461485c565b6109c8565b6103ba6103b53660046147f6565b610a8a565b60405161036491906148b7565b6103da6103d5366004614948565b610de8565b005b6103da6103ea36600461499b565b610f2d565b6103da6103fd3660046149bf565b610fe0565b6103da610410366004614a00565b611097565b6103da610423366004614a19565b6111d6565b61035a61043636600461499b565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b61035a61046f3660046149bf565b6111ea565b61035a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6103da6104a9366004614a88565b611218565b6103da6104bc3660046149bf565b61135c565b61035a6104cf36600461499b565b609b6020526000908152604090205481565b6103da6104ef366004614b33565b61140c565b61051b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610364565b61051b61054136600461499b565b6001600160a01b039081166000908152609960205260409020600101541690565b61057561057036600461499b565b61153f565b6040519015158152602001610364565b61035a7f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b61051b7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61035a6213c68081565b6103da61155f565b61035a6105f3366004614e4a565b611626565b610575610606366004614e86565b606654600160ff9092169190911b9081161490565b60665461035a565b6103da610631366004614eb7565b611656565b6103da610644366004614a00565b6116ef565b61051b61065736600461499b565b609a602052600090815260409020546001600160a01b031681565b61057561068036600461499b565b611700565b6103da611721565b61035a61069b366004614f47565b609860209081526000928352604080842090915290825290205481565b6103da6106c636600461502b565b611735565b60655461051b906001600160a01b031681565b6033546001600160a01b031661051b565b6107026106fd3660046150bf565b611961565b604051610364919061514a565b61051b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103da61073836600461515d565b611a33565b61035a61074b36600461499b565b609f6020526000908152604090205481565b61051b7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b610575610792366004614a00565b609e6020526000908152604090205460ff1681565b6105756107b5366004615192565b609c60209081526000928352604080842090915290825290205460ff1681565b61035a609d5481565b61035a6107ec36600461499b565b60a16020526000908152604090205481565b61086e61080c36600461499b565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff1690820152606001610364565b61035a6108b23660046151be565b611b05565b61035a62034bc081565b6108d46108cf36600461499b565b611bbe565b604051610364929190615241565b6103ba6108f036600461499b565b611f75565b6103da610903366004615266565b61242e565b6103da6109163660046152bf565b61254b565b6103da61092936600461499b565b6125dc565b61035a612652565b6103da610944366004614a00565b61268f565b609d54600090815b838110156109be57600060a16000878785818110610971576109716152db565b9050602002016020810190610986919061499b565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828111156109b5578092505b50600101610951565b5090505b92915050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610a46612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b606654606090600190600290811603610abe5760405162461bcd60e51b8152600401610ab5906152f1565b60405180910390fd5b6000836001600160401b03811115610ad857610ad8614be6565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610ddd57868682818110610b3c57610b3c6152db565b9050602002810190610b4e9190615328565b610b5c906020810190615348565b9050878783818110610b7057610b706152db565b9050602002810190610b829190615328565b610b8c9080615348565b905014610c015760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610ab5565b33878783818110610c1457610c146152db565b9050602002810190610c269190615328565b610c3790606081019060400161499b565b6001600160a01b031614610cb35760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610ab5565b610db83383898985818110610cca57610cca6152db565b9050602002810190610cdc9190615328565b610ced90606081019060400161499b565b8a8a86818110610cff57610cff6152db565b9050602002810190610d119190615328565b610d1b9080615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610d6157610d616152db565b9050602002810190610d739190615328565b610d81906020810190615348565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506127eb92505050565b838281518110610dca57610dca6152db565b6020908102919091010152600101610b22565b509095945050505050565b610df13361153f565b15610e775760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a2063616c6c657220697320616c7265616479206163746976656c796064820152690819195b1959d85d195960b21b608482015260a401610ab5565b610e813384612dad565b604080518082019091526060815260006020820152610ea33380836000612fa0565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610edc9190615391565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610f1f9291906153e8565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa49190615417565b6001600160a01b0316336001600160a01b031614610fd45760405162461bcd60e51b8152600401610ab590615434565b610fdd81613235565b50565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916148061103f5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b61105b5760405162461bcd60e51b8152600401610ab59061547e565b6110648361153f565b15611092576001600160a01b038084166000908152609a6020526040902054166110908185858561332c565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110391906154db565b61111f5760405162461bcd60e51b8152600401610ab5906154f8565b606654818116146111985760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6111de6133a7565b61109084848484613401565b6001600160a01b0383166000908152609b602052604081205461120f85828686611b05565b95945050505050565b600054610100900460ff16158080156112385750600054600160ff909116105b806112525750303b158015611252575060005460ff166001145b6112b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ab5565b6000805460ff1916600117905580156112d8576000805461ff0019166101001790555b6112e28888613621565b6112ea61370b565b6097556112f6896137a2565b6112ff866137f4565b61130b85858585613401565b8015611351576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614806113bb5750336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616145b6113d75760405162461bcd60e51b8152600401610ab59061547e565b6113e08361153f565b15611092576001600160a01b038084166000908152609a602052604090205416611090818585856138ee565b6066546002906004908116036114345760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036114865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c95560005b8881101561152e576115268a8a838181106114ab576114ab6152db565b90506020028101906114bd9190615540565b8989848181106114cf576114cf6152db565b90506020028101906114e19190615348565b8989868181106114f3576114f36152db565b9050602002013588888781811061150c5761150c6152db565b90506020020160208101906115219190615556565b613969565b60010161148e565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156115a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cb91906154db565b6115e75760405162461bcd60e51b8152600401610ab5906154f8565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60008160405160200161163991906155f2565b604051602081830303815290604052805190602001209050919050565b60665460029060049081160361167e5760405162461bcd60e51b8152600401610ab5906152f1565b600260c954036116d05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ab5565b600260c9556116e28686868686613969565b5050600160c95550505050565b6116f76133a7565b610fdd816137f4565b6001600160a01b039081166000818152609a60205260409020549091161490565b6117296133a7565b61173360006137a2565b565b42836020015110156117b95760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610ab5565b6117c28561153f565b1561184b5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b657220697320616c726561647920616374697660648201526c195b1e4819195b1959d85d1959609a1b608482015260a401610ab5565b61185484611700565b6118e05760405162461bcd60e51b815260206004820152605160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a206f70657261746f72206973206e6f7420726567697374656064820152703932b21034b71022b4b3b2b72630bcb2b960791b608482015260a401610ab5565b6000609b6000876001600160a01b03166001600160a01b03168152602001908152602001600020549050600061191c8783888860200151611b05565b6001600160a01b0388166000908152609b60205260409020600184019055855190915061194c9088908390614152565b61195887878686612fa0565b50505050505050565b6060600082516001600160401b0381111561197e5761197e614be6565b6040519080825280602002602001820160405280156119a7578160200160208202803683370190505b50905060005b83518110156109be576001600160a01b038516600090815260986020526040812085519091908690849081106119e5576119e56152db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611a2057611a206152db565b60209081029190910101526001016119ad565b611a3c33611700565b611abe5760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610ab5565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611af99291906153e8565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611b7b612652565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6909116906360f4062b90602401602060405180830381865afa158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615605565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9909116906394f649dd90602401600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cea919081019061567c565b9150915060008313611d0157909590945092505050565b6060808351600003611dba576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611d7557611d756152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611da957611da96152db565b602002602001018181525050611f68565b8351611dc7906001615753565b6001600160401b03811115611dde57611dde614be6565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b50915081516001600160401b03811115611e2357611e23614be6565b604051908082528060200260200182016040528015611e4c578160200160208202803683370190505b50905060005b8451811015611ee657848181518110611e6d57611e6d6152db565b6020026020010151838281518110611e8757611e876152db565b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611eb957611eb96152db565b6020026020010151828281518110611ed357611ed36152db565b6020908102919091010152600101611e52565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08260018451611f0b9190615766565b81518110611f1b57611f1b6152db565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018451611f4b9190615766565b81518110611f5b57611f5b6152db565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811603611fa05760405162461bcd60e51b8152600401610ab5906152f1565b611fa98361153f565b6120295760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610ab5565b61203283611700565b156120a55760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610ab5565b6001600160a01b0383166121215760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610ab5565b6001600160a01b038084166000818152609a6020526040902054909116903314806121545750336001600160a01b038216145b8061217b57506001600160a01b038181166000908152609960205260409020600101541633145b6121ed5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610ab5565b6000806121f986611bbe565b9092509050336001600160a01b0387161461224f57826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040812080546001600160a01b0319169055825190036122d3576040805160008152602081019091529450612425565b81516001600160401b038111156122ec576122ec614be6565b604051908082528060200260200182016040528015612315578160200160208202803683370190505b50945060005b82518110156124235760408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050905084838151811061237b5761237b6152db565b602002602001015182600081518110612396576123966152db565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106123c8576123c86152db565b6020026020010151816000815181106123e3576123e36152db565b6020026020010181815250506123fc89878b85856127eb565b88848151811061240e5761240e6152db565b6020908102919091010152505060010161231b565b505b50505050919050565b6124373361153f565b156124b55760405162461bcd60e51b815260206004820152604260248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a20737460448201527f616b657220697320616c7265616479206163746976656c792064656c65676174606482015261195960f21b608482015260a401610ab5565b6124be83611700565b61253f5760405162461bcd60e51b815260206004820152604660248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f3a206f7060448201527f657261746f72206973206e6f74207265676973746572656420696e2045696765606482015265372630bcb2b960d11b608482015260a401610ab5565b61109233848484612fa0565b61255433611700565b6125d25760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610ab5565b610fdd3382612dad565b6125e46133a7565b6001600160a01b0381166126495760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab5565b610fdd816137a2565b60007f0000000000000000000000000000000000000000000000000000000000007a694603612682575060975490565b61268a61370b565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190615417565b6001600160a01b0316336001600160a01b0316146127365760405162461bcd60e51b8152600401610ab590615434565b6066541981196066541916146127b45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610ab5565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016111cb565b60006001600160a01b0386166128825760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610ab5565b825160000361290f5760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610ab5565b60005b8351811015612cbb576001600160a01b03861615612968576129688688868481518110612941576129416152db565b602002602001015186858151811061295b5761295b6152db565b602002602001015161332c565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612998576129986152db565b60200260200101516001600160a01b031603612a60577f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663beffbb89888584815181106129f0576129f06152db565b60200260200101516040518363ffffffff1660e01b8152600401612a299291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612a4357600080fd5b505af1158015612a57573d6000803e3d6000fd5b50505050612cb3565b846001600160a01b0316876001600160a01b03161480612b3257507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316639b4da03d858381518110612abc57612abc6152db565b60200260200101516040518263ffffffff1660e01b8152600401612aef91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3091906154db565b155b612bfe5760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610ab5565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316638c80d4e588868481518110612c4057612c406152db565b6020026020010151868581518110612c5a57612c5a6152db565b60200260200101516040518463ffffffff1660e01b8152600401612c8093929190615779565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b600101612912565b506001600160a01b0386166000908152609f60205260408120805491829190612ce38361579d565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612d4b82611626565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612d9990839085906157b6565b60405180910390a198975050505050505050565b6213c680612dc160608301604084016157cf565b63ffffffff161115612e765760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610ab5565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff1690612eb290606084019084016157cf565b63ffffffff161015612f485760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610ab5565b6001600160a01b03821660009081526099602052604090208190612f6c828261580c565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611af9908490615391565b606654600090600190811603612fc85760405162461bcd60e51b8152600401610ab5906152f1565b6001600160a01b03808516600090815260996020526040902060010154168015801590612ffe5750336001600160a01b03821614155b80156130135750336001600160a01b03861614155b156131805742846020015110156130925760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff161561312c5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610ab5565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff1916600117905585015161316d9088908890859088906109c8565b905061317e82828760000151614152565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806131df88611bbe565b9150915060005b82518110156113515761322d888a858481518110613206576132066152db565b6020026020010151858581518110613220576132206152db565b60200260200101516138ee565b6001016131e6565b6001600160a01b0381166132c35760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610ab5565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613363908490615766565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610f1f93929190615779565b6033546001600160a01b031633146117335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab5565b8281146134895760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610ab5565b8260005b818110156136195760008686838181106134a9576134a96152db565b90506020020160208101906134be919061499b565b6001600160a01b038116600090815260a160205260408120549192508686858181106134ec576134ec6152db565b90506020020135905062034bc08111156135b05760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610ab5565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a150505080600101905061348d565b505050505050565b6065546001600160a01b031615801561364257506001600160a01b03821615155b6136c45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610ab5565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261370782613235565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc08111156138ad5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610ab5565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613925908490615753565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610f1f93929190615779565b60006139776105f38761586f565b6000818152609e602052604090205490915060ff166139f85760405162461bcd60e51b8152602060048201526043602482015260008051602061599983398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610ab5565b609d544390613a0d60a0890160808a016157cf565b63ffffffff16613a1d9190615753565b1115613aa55760405162461bcd60e51b815260206004820152605f602482015260008051602061599983398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610ab5565b613ab5606087016040880161499b565b6001600160a01b0316336001600160a01b031614613b425760405162461bcd60e51b8152602060048201526050602482015260008051602061599983398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610ab5565b8115613bc457613b5560a0870187615348565b85149050613bc45760405162461bcd60e51b8152602060048201526042602482015260008051602061599983398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610ab5565b6000818152609e60205260409020805460ff191690558115613d295760005b613bf060a0880188615348565b9050811015613d23574360a16000613c0b60a08b018b615348565b85818110613c1b57613c1b6152db565b9050602002016020810190613c30919061499b565b6001600160a01b03168152602081019190915260400160002054613c5a60a08a0160808b016157cf565b63ffffffff16613c6a9190615753565b1115613c885760405162461bcd60e51b8152600401610ab59061587b565b613d1b613c98602089018961499b565b33613ca660a08b018b615348565b85818110613cb657613cb66152db565b9050602002016020810190613ccb919061499b565b613cd860c08c018c615348565b86818110613ce857613ce86152db565b905060200201358a8a87818110613d0157613d016152db565b9050602002016020810190613d16919061499b565b61430c565b600101613be3565b50614117565b336000908152609a60205260408120546001600160a01b0316905b613d5160a0890189615348565b9050811015614114574360a16000613d6c60a08c018c615348565b85818110613d7c57613d7c6152db565b9050602002016020810190613d91919061499b565b6001600160a01b03168152602081019190915260400160002054613dbb60a08b0160808c016157cf565b63ffffffff16613dcb9190615753565b1115613de95760405162461bcd60e51b8152600401610ab59061587b565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0613e0b60a08a018a615348565b83818110613e1b57613e1b6152db565b9050602002016020810190613e30919061499b565b6001600160a01b031603613f7f576000613e4d60208a018a61499b565b905060006001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616630e81073c83613e8e60c08e018e615348565b87818110613e9e57613e9e6152db565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af1158015613ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f169190615605565b6001600160a01b038084166000908152609a6020526040902054919250168015613f7757613f778184613f4c60a08f018f615348565b88818110613f5c57613f5c6152db565b9050602002016020810190613f71919061499b565b856138ee565b50505061410c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c4623ea133898985818110613fc157613fc16152db565b9050602002016020810190613fd6919061499b565b613fe360a08d018d615348565b86818110613ff357613ff36152db565b9050602002016020810190614008919061499b565b61401560c08e018e615348565b87818110614025576140256152db565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561408557600080fd5b505af1158015614099573d6000803e3d6000fd5b505050506001600160a01b0382161561410c5761410c82336140be60a08c018c615348565b858181106140ce576140ce6152db565b90506020020160208101906140e3919061499b565b6140f060c08d018d615348565b86818110614100576141006152db565b905060200201356138ee565b600101613d44565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561426c57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906141929086908690600401615903565b602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615958565b6001600160e01b031916146110925760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610ab5565b826001600160a01b0316614280838361444c565b6001600160a01b0316146110925760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610ab5565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016143b75760405162387b1360e81b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063387b13009061438090889088908790600401615779565b600060405180830381600087803b15801561439a57600080fd5b505af11580156143ae573d6000803e3d6000fd5b50505050614445565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9169063c608c7f390608401600060405180830381600087803b15801561443157600080fd5b505af1158015611351573d6000803e3d6000fd5b5050505050565b600080600061445b8585614468565b915091506109be816144d6565b600080825160410361449e5760208301516040840151606085015160001a6144928782858561468c565b945094505050506144cf565b82516040036144c757602083015160408401516144bc868383614779565b9350935050506144cf565b506000905060025b9250929050565b60008160048111156144ea576144ea615982565b036144f25750565b600181600481111561450657614506615982565b036145535760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab5565b600281600481111561456757614567615982565b036145b45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab5565b60038160048111156145c8576145c8615982565b036146205760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ab5565b600481600481111561463457614634615982565b03610fdd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ab5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156146c35750600090506003614770565b8460ff16601b141580156146db57508460ff16601c14155b156146ec5750600090506004614770565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614740573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661476957600060019250925050614770565b9150600090505b94509492505050565b6000806001600160ff1b0383168161479660ff86901c601b615753565b90506147a48782888561468c565b935093505050935093915050565b60008083601f8401126147c457600080fd5b5081356001600160401b038111156147db57600080fd5b6020830191508360208260051b85010111156144cf57600080fd5b6000806020838503121561480957600080fd5b82356001600160401b0381111561481f57600080fd5b61482b858286016147b2565b90969095509350505050565b6001600160a01b0381168114610fdd57600080fd5b803561485781614837565b919050565b600080600080600060a0868803121561487457600080fd5b853561487f81614837565b9450602086013561488f81614837565b9350604086013561489f81614837565b94979396509394606081013594506080013592915050565b602080825282518282018190526000918401906040840190835b81811015610ddd5783518352602093840193909201916001016148d1565b60006060828403121561490157600080fd5b50919050565b60008083601f84011261491957600080fd5b5081356001600160401b0381111561493057600080fd5b6020830191508360208285010111156144cf57600080fd5b60008060006080848603121561495d57600080fd5b61496785856148ef565b925060608401356001600160401b0381111561498257600080fd5b61498e86828701614907565b9497909650939450505050565b6000602082840312156149ad57600080fd5b81356149b881614837565b9392505050565b6000806000606084860312156149d457600080fd5b83356149df81614837565b925060208401356149ef81614837565b929592945050506040919091013590565b600060208284031215614a1257600080fd5b5035919050565b60008060008060408587031215614a2f57600080fd5b84356001600160401b03811115614a4557600080fd5b614a51878288016147b2565b90955093505060208501356001600160401b03811115614a7057600080fd5b614a7c878288016147b2565b95989497509550505050565b60008060008060008060008060c0898b031215614aa457600080fd5b8835614aaf81614837565b97506020890135614abf81614837565b9650604089013595506060890135945060808901356001600160401b03811115614ae857600080fd5b614af48b828c016147b2565b90955093505060a08901356001600160401b03811115614b1357600080fd5b614b1f8b828c016147b2565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614b4f57600080fd5b88356001600160401b03811115614b6557600080fd5b614b718b828c016147b2565b90995097505060208901356001600160401b03811115614b9057600080fd5b614b9c8b828c016147b2565b90975095505060408901356001600160401b03811115614bbb57600080fd5b614bc78b828c016147b2565b90955093505060608901356001600160401b03811115614b1357600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614c1e57614c1e614be6565b60405290565b604080519081016001600160401b0381118282101715614c1e57614c1e614be6565b604051601f8201601f191681016001600160401b0381118282101715614c6e57614c6e614be6565b604052919050565b63ffffffff81168114610fdd57600080fd5b803561485781614c76565b60006001600160401b03821115614cac57614cac614be6565b5060051b60200190565b600082601f830112614cc757600080fd5b8135614cda614cd582614c93565b614c46565b8082825260208201915060208360051b860101925085831115614cfc57600080fd5b602085015b83811015614d22578035614d1481614837565b835260209283019201614d01565b5095945050505050565b600082601f830112614d3d57600080fd5b8135614d4b614cd582614c93565b8082825260208201915060208360051b860101925085831115614d6d57600080fd5b602085015b83811015614d22578035835260209283019201614d72565b600060e08284031215614d9c57600080fd5b614da4614bfc565b9050614daf8261484c565b8152614dbd6020830161484c565b6020820152614dce6040830161484c565b604082015260608281013590820152614de960808301614c88565b608082015260a08201356001600160401b03811115614e0757600080fd5b614e1384828501614cb6565b60a08301525060c08201356001600160401b03811115614e3257600080fd5b614e3e84828501614d2c565b60c08301525092915050565b600060208284031215614e5c57600080fd5b81356001600160401b03811115614e7257600080fd5b614e7e84828501614d8a565b949350505050565b600060208284031215614e9857600080fd5b813560ff811681146149b857600080fd5b8015158114610fdd57600080fd5b600080600080600060808688031215614ecf57600080fd5b85356001600160401b03811115614ee557600080fd5b860160e08189031215614ef757600080fd5b945060208601356001600160401b03811115614f1257600080fd5b614f1e888289016147b2565b909550935050604086013591506060860135614f3981614ea9565b809150509295509295909350565b60008060408385031215614f5a57600080fd5b8235614f6581614837565b91506020830135614f7581614837565b809150509250929050565b600060408284031215614f9257600080fd5b614f9a614c24565b905081356001600160401b03811115614fb257600080fd5b8201601f81018413614fc357600080fd5b80356001600160401b03811115614fdc57614fdc614be6565b614fef601f8201601f1916602001614c46565b81815285602083850101111561500457600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b600080600080600060a0868803121561504357600080fd5b853561504e81614837565b9450602086013561505e81614837565b935060408601356001600160401b0381111561507957600080fd5b61508588828901614f80565b93505060608601356001600160401b038111156150a157600080fd5b6150ad88828901614f80565b95989497509295608001359392505050565b600080604083850312156150d257600080fd5b82356150dd81614837565b915060208301356001600160401b038111156150f857600080fd5b61510485828601614cb6565b9150509250929050565b600081518084526020840193506020830160005b82811015615140578151865260209586019590910190600101615122565b5093949350505050565b6020815260006149b8602083018461510e565b6000806020838503121561517057600080fd5b82356001600160401b0381111561518657600080fd5b61482b85828601614907565b600080604083850312156151a557600080fd5b82356151b081614837565b946020939093013593505050565b600080600080608085870312156151d457600080fd5b84356151df81614837565b93506020850135925060408501356151f681614837565b9396929550929360600135925050565b600081518084526020840193506020830160005b828110156151405781516001600160a01b031686526020958601959091019060010161521a565b6040815260006152546040830185615206565b828103602084015261120f818561510e565b60008060006060848603121561527b57600080fd5b833561528681614837565b925060208401356001600160401b038111156152a157600080fd5b6152ad86828701614f80565b93969395505050506040919091013590565b6000606082840312156152d157600080fd5b6149b883836148ef565b634e487b7160e01b600052603260045260246000fd5b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e1983360301811261533e57600080fd5b9190910192915050565b6000808335601e1984360301811261535f57600080fd5b8301803591506001600160401b0382111561537957600080fd5b6020019150600581901b36038213156144cf57600080fd5b6060810182356153a081614837565b6001600160a01b0316825260208301356153b981614837565b6001600160a01b0316602083015260408301356153d581614c76565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561542957600080fd5b81516149b881614837565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156154ed57600080fd5b81516149b881614ea9565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de1983360301811261533e57600080fd5b60006020828403121561556857600080fd5b81356149b881614ea9565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201516000916155bf9085018263ffffffff169052565b5060a082015160e060a08501526155d960e0850182615206565b905060c083015184820360c086015261120f828261510e565b6020815260006149b86020830184615573565b60006020828403121561561757600080fd5b5051919050565b600082601f83011261562f57600080fd5b815161563d614cd582614c93565b8082825260208201915060208360051b86010192508583111561565f57600080fd5b602085015b83811015614d22578051835260209283019201615664565b6000806040838503121561568f57600080fd5b82516001600160401b038111156156a557600080fd5b8301601f810185136156b657600080fd5b80516156c4614cd582614c93565b8082825260208201915060208360051b8501019250878311156156e657600080fd5b6020840193505b8284101561571157835161570081614837565b8252602093840193909101906156ed565b8095505050505060208301516001600160401b0381111561573157600080fd5b6151048582860161561e565b634e487b7160e01b600052601160045260246000fd5b808201808211156109c2576109c261573d565b818103818111156109c2576109c261573d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000600182016157af576157af61573d565b5060010190565b828152604060208201526000614e7e6040830184615573565b6000602082840312156157e157600080fd5b81356149b881614c76565b80546001600160a01b0319166001600160a01b0392909216919091179055565b813561581781614837565b61582181836157ec565b5060018101602083013561583481614837565b61583e81836157ec565b50604083013561584d81614c76565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b60006109c23683614d8a565b6020808252606e9082015260008051602061599983398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b828152604060208201526000825180604084015260005b81811015615937576020818601810151606086840101520161591a565b506000606082850101526060601f19601f8301168401019150509392505050565b60006020828403121561596a57600080fd5b81516001600160e01b0319811681146149b857600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220cbe856cde7c5bcfd582d4b89705de7c9eaac9afdc5d0cafafaf46a903a95abd164736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff", - }, - }, - "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122082d0bf2d943ad14055e4e88fc955638b565f43d854afdcd3d6cd966fe8c2201a64736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x0000000000000000000000000000000000000000000000000000000000000001", - }, - }, - "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102df565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102df565b610122565b6100ce6101a0565b6100d7816101fa565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101a0565b610120600061028f565b565b61012a6101a0565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161028f565b50565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61026d5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102f157600080fd5b81356001600160a01b038116811461030857600080fd5b939250505056fea26469706673582212207a6d133625066cab7d23f40b4e207ae40bdd3e892087cfa5f7b370330d37086964736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788", - }, - }, - "0xc5a5c42992decbae36851359345fe25997f5c42d": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120001", - "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000032": "0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef", - "0x0000000000000000000000000000000000000000000000000000000000000064": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000000000000000000000000003635c9adc5dea00000", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0xcd8a1c3ba11cf5ecfa6267617243239504a98d90": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806331b36bd9146100675780633563b0d1146100905780634d2b57fe146100b05780634f739f74146100d05780635c155662146100f0578063cefdc1d414610110575b600080fd5b61007a6100753660046113b8565b610131565b60405161008791906114a7565b60405180910390f35b6100a361009e3660046114e3565b610245565b6040516100879190611641565b6100c36100be3660046116be565b6106c5565b604051610087919061170d565b6100e36100de3660046117a5565b6107d2565b604051610087919061189e565b6101036100fe366004611959565b610eea565b60405161008791906119bc565b61012361011e3660046119f4565b6110a8565b604051610087929190611a2b565b606081516001600160401b0381111561014c5761014c61134f565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b03166313542a4e8483815181106101a5576101a5611a4c565b60200260200101516040518263ffffffff1660e01b81526004016101d891906001600160a01b0391909116815260200190565b602060405180830381865afa1580156101f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102199190611a62565b82828151811061022b5761022b611a4c565b602090810291909101015260010161017b565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ab9190611a7b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190611a7b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190611a7b565b9050600086516001600160401b038111156103945761039461134f565b6040519080825280602002602001820160405280156103c757816020015b60608152602001906001900390816103b25790505b50905060005b87518110156106b95760008882815181106103ea576103ea611a4c565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa15801561044b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104739190810190611a98565b905080516001600160401b0381111561048e5761048e61134f565b6040519080825280602002602001820160405280156104d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816104ac5790505b508484815181106104ec576104ec611a4c565b602002602001018190525060005b81518110156106ae576040518060600160405280876001600160a01b03166347b314e885858151811061052f5761052f611a4c565b60200260200101516040518263ffffffff1660e01b815260040161055591815260200190565b602060405180830381865afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105969190611a7b565b6001600160a01b031681526020018383815181106105b6576105b6611a4c565b60200260200101518152602001896001600160a01b031663fa28c6278585815181106105e4576105e4611a4c565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611b28565b6001600160601b031681525085858151811061068257610682611a4c565b6020026020010151828151811061069b5761069b611a4c565b60209081029190910101526001016104fa565b5050506001016103cd565b50979650505050505050565b606081516001600160401b038111156106e0576106e061134f565b604051908082528060200260200182016040528015610709578160200160208202803683370190505b50905060005b825181101561023e57836001600160a01b031663296bb06484838151811061073957610739611a4c565b60200260200101516040518263ffffffff1660e01b815260040161075f91815260200190565b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611a7b565b8282815181106107b2576107b2611a4c565b6001600160a01b039092166020928302919091019091015260010161070f565b6107fd6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611a7b565b905061088e6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906108be908b9089908990600401611b51565b600060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109039190810190611b98565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290610935908b908b908b90600401611c4f565b600060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097a9190810190611b98565b6040820152856001600160401b038111156109975761099761134f565b6040519080825280602002602001820160405280156109ca57816020015b60608152602001906001900390816109b55790505b50606082015260005b60ff8116871115610dfb576000856001600160401b038111156109f8576109f861134f565b604051908082528060200260200182016040528015610a21578160200160208202803683370190505b5083606001518360ff1681518110610a3b57610a3b611a4c565b602002602001018190525060005b86811015610d055760008c6001600160a01b03166304ec63518a8a85818110610a7457610a74611a4c565b905060200201358e88600001518681518110610a9257610a92611a4c565b60200260200101516040518463ffffffff1660e01b8152600401610acf9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611c78565b9050806001600160c01b0316600003610bbb5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff16818110610bd057610bd0611a4c565b60016001600160c01b038516919093013560f81c1c82169091039050610cfc57856001600160a01b031663dd9846b98a8a85818110610c1157610c11611a4c565b905060200201358d8d8860ff16818110610c2d57610c2d611a4c565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ca1565b85606001518560ff1681518110610cc057610cc0611a4c565b60200260200101518481518110610cd957610cd9611a4c565b63ffffffff9092166020928302919091019091015282610cf881611cd4565b9350505b50600101610a49565b506000816001600160401b03811115610d2057610d2061134f565b604051908082528060200260200182016040528015610d49578160200160208202803683370190505b50905060005b82811015610dc05784606001518460ff1681518110610d7057610d70611a4c565b60200260200101518181518110610d8957610d89611a4c565b6020026020010151828281518110610da357610da3611a4c565b63ffffffff90921660209283029190910190910152600101610d4f565b508084606001518460ff1681518110610ddb57610ddb611a4c565b602002602001018190525050508080610df390611ced565b9150506109d3565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e609190611a7b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610e93908b908b908e90600401611d0c565b600060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ed89190810190611b98565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610f1c929190611d36565b600060405180830381865afa158015610f39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f619190810190611b98565b9050600084516001600160401b03811115610f7e57610f7e61134f565b604051908082528060200260200182016040528015610fa7578160200160208202803683370190505b50905060005b855181101561109e57866001600160a01b03166304ec6351878381518110610fd757610fd7611a4c565b602002602001015187868581518110610ff257610ff2611a4c565b60200260200101516040518463ffffffff1660e01b815260040161102f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611c78565b6001600160c01b031682828151811061108b5761108b611a4c565b6020908102919091010152600101610fad565b5095945050505050565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106110e3576110e3611a4c565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e9061111f9088908690600401611d36565b600060405180830381865afa15801561113c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111649190810190611b98565b60008151811061117657611176611a4c565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190611c78565b6001600160c01b03169050600061121c8261123a565b90508161122a8a838a610245565b9550955050505050935093915050565b606060008061124884611306565b61ffff166001600160401b038111156112635761126361134f565b6040519080825280601f01601f19166020018201604052801561128d576020820181803683370190505b5090506000805b8251821080156112a5575061010081105b156112fc576001811b9350858416156112ec578060f81b8383815181106112ce576112ce611a4c565b60200101906001600160f81b031916908160001a9053508160010191505b6112f581611cd4565b9050611294565b5090949350505050565b6000805b82156113315761131b600184611d55565b909216918061132981611d68565b91505061130a565b92915050565b6001600160a01b038116811461134c57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561138d5761138d61134f565b604052919050565b60006001600160401b038211156113ae576113ae61134f565b5060051b60200190565b600080604083850312156113cb57600080fd5b82356113d681611337565b91506020838101356001600160401b038111156113f257600080fd5b8401601f8101861361140357600080fd5b803561141661141182611395565b611365565b81815260059190911b8201830190838101908883111561143557600080fd5b928401925b8284101561145c57833561144d81611337565b8252928401929084019061143a565b80955050505050509250929050565b60008151808452602080850194506020840160005b8381101561149c57815187529582019590820190600101611480565b509495945050505050565b6020815260006114ba602083018461146b565b9392505050565b63ffffffff8116811461134c57600080fd5b80356114de816114c1565b919050565b6000806000606084860312156114f857600080fd5b833561150381611337565b92506020848101356001600160401b038082111561152057600080fd5b818701915087601f83011261153457600080fd5b8135818111156115465761154661134f565b611558601f8201601f19168501611365565b9150808252888482850101111561156e57600080fd5b8084840185840137600084828401015250809450505050611591604085016114d3565b90509250925092565b600082825180855260208086019550808260051b8401018186016000805b8581101561163357868403601f19018a52825180518086529086019086860190845b8181101561161e57835180516001600160a01b03168452898101518a8501526040908101516001600160601b031690840152928801926060909201916001016115da565b50509a86019a945050918401916001016115b8565b509198975050505050505050565b6020815260006114ba602083018461159a565b600082601f83011261166557600080fd5b8135602061167561141183611395565b8083825260208201915060208460051b87010193508684111561169757600080fd5b602086015b848110156116b3578035835291830191830161169c565b509695505050505050565b600080604083850312156116d157600080fd5b82356116dc81611337565b915060208301356001600160401b038111156116f757600080fd5b61170385828601611654565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561174e5783516001600160a01b031683529284019291840191600101611729565b50909695505050505050565b60008083601f84011261176c57600080fd5b5081356001600160401b0381111561178357600080fd5b6020830191508360208260051b850101111561179e57600080fd5b9250929050565b600080600080600080608087890312156117be57600080fd5b86356117c981611337565b955060208701356117d9816114c1565b945060408701356001600160401b03808211156117f557600080fd5b818901915089601f83011261180957600080fd5b81358181111561181857600080fd5b8a602082850101111561182a57600080fd5b60208301965080955050606089013591508082111561184857600080fd5b5061185589828a0161175a565b979a9699509497509295939492505050565b60008151808452602080850194506020840160005b8381101561149c57815163ffffffff168752958201959082019060010161187c565b6000602080835283516080828501526118ba60a0850182611867565b905081850151601f19808684030160408701526118d78383611867565b925060408701519150808684030160608701526118f48383611867565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561194b5784878303018452611939828751611867565b9588019593880193915060010161191f565b509998505050505050505050565b60008060006060848603121561196e57600080fd5b833561197981611337565b925060208401356001600160401b0381111561199457600080fd5b6119a086828701611654565b92505060408401356119b1816114c1565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561174e578351835292840192918401916001016119d8565b600080600060608486031215611a0957600080fd5b8335611a1481611337565b92506020840135915060408401356119b1816114c1565b828152604060208201526000611a44604083018461159a565b949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a7457600080fd5b5051919050565b600060208284031215611a8d57600080fd5b81516114ba81611337565b60006020808385031215611aab57600080fd5b82516001600160401b03811115611ac157600080fd5b8301601f81018513611ad257600080fd5b8051611ae061141182611395565b81815260059190911b82018301908381019087831115611aff57600080fd5b928401925b82841015611b1d57835182529284019290840190611b04565b979650505050505050565b600060208284031215611b3a57600080fd5b81516001600160601b03811681146114ba57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115611b7e57600080fd5b8260051b8085606085013791909101606001949350505050565b60006020808385031215611bab57600080fd5b82516001600160401b03811115611bc157600080fd5b8301601f81018513611bd257600080fd5b8051611be061141182611395565b81815260059190911b82018301908381019087831115611bff57600080fd5b928401925b82841015611b1d578351611c17816114c1565b82529284019290840190611c04565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000611c6f604083018486611c26565b95945050505050565b600060208284031215611c8a57600080fd5b81516001600160c01b03811681146114ba57600080fd5b600060208284031215611cb357600080fd5b81516114ba816114c1565b634e487b7160e01b600052601160045260246000fd5b600060018201611ce657611ce6611cbe565b5060010190565b600060ff821660ff8103611d0357611d03611cbe565b60010192915050565b604081526000611d20604083018587611c26565b905063ffffffff83166020830152949350505050565b63ffffffff83168152604060208201526000611a44604083018461146b565b8181038181111561133157611331611cbe565b600061ffff808316818103611d7f57611d7f611cbe565b600101939250505056fea26469706673582212202b3e36f430d5f7f12f8124a33676c0954c36bdaf4a71ac7e145cf85fb593480b64736f6c63430008180033", - "storage": {}, - }, - "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x831f01b2aeb61d5d8c019704e62c25763057a8806c5c790bc8b4c99ee54ac8a7", - "0x000000000000000000000000000000000000000000000000000000000000009d": "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107ba60279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f7919061076a565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610786565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff8111156106fb57600080fd5b8401601f8101861361070c57600080fd5b803567ffffffffffffffff81111561072357600080fd5b86602082840101111561073557600080fd5b939660209190910195509293505050565b60005b83811015610761578181015183820152602001610749565b50506000910152565b6000825161077c818460208701610746565b9190910192915050565b60208152600082518060208401526107a5816040850160208701610746565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c41b0469e002b3b7c2a8865eddcfedb7a0854d8e9d8184483e9f6075fcd0521d64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512", - "0x0000000000000000000000000000000000000000000000000000000000000098": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000c9": "0xd65ac9700cec4e530497617d02afdf0d5de3ed18466aca1578edcbce0d40ee16", - "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82", - "0x3d2729dff03bf559da35a983e55814217363c2a44a7ea59bdf688ab8754ea49d": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x6e45a9ad53caf7293849c96e5070a246e20a7cc2986b7660b3fb63e30ab898fc": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3", - }, - }, - "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512": - { - "nonce": 1, - "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea264697066735822122067fae8bb511d125cec8f8ec05f957b73867dd98e7dd06293a6a42013e1b0f4dd64736f6c634300081b0033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x0000000000000000000000000000000000000000000000000000000000000001", - }, - }, - "0xf5059a5d33d5853360d16c683c16e67980206f36": - { - "nonce": 1, - "balance": "0x0", - "code": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106a6565b610118565b61005b6100933660046106c1565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106a6565b6101ed565b3480156100f557600080fd5b506100ad61020d565b61010661022e565b6101166101116102c3565b6102cd565b565b6101206102f1565b6001600160a01b0316330361014d5761014a81604051806020016040528060008152506000610324565b50565b61014a6100fe565b61015d6102f1565b6001600160a01b031633036101b4576101af8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610324915050565b505050565b6101af6100fe565b60006101c66102f1565b6001600160a01b031633036101e2576101dd6102c3565b905090565b6101ea6100fe565b90565b6101f56102f1565b6001600160a01b0316330361014d5761014a8161034f565b60006102176102f1565b6001600160a01b031633036101e2576101dd6102f1565b6102366102f1565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd6103a3565b3660008037600080366000845af43d6000803e8080156102ec573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61032d836103cb565b60008251118061033a5750805b156101af57610349838361040b565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103786102f1565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a81610437565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610315565b6103d4816104e0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061043083836040518060600160405280602781526020016107b860279139610574565b9392505050565b6001600160a01b03811661049c5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102ba565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61054d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102ba565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104bf565b60606001600160a01b0384163b6105dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102ba565b600080856001600160a01b0316856040516105f79190610768565b600060405180830381855af49150503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5091509150610647828286610651565b9695505050505050565b60608315610660575081610430565b8251156106705782518084602001fd5b8160405162461bcd60e51b81526004016102ba9190610784565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6104308261068a565b6000806000604084860312156106d657600080fd5b6106df8461068a565b9250602084013567ffffffffffffffff808211156106fc57600080fd5b818601915086601f83011261071057600080fd5b81358181111561071f57600080fd5b87602082850101111561073157600080fd5b6020830194508093505050509250925092565b60005b8381101561075f578181015183820152602001610747565b50506000910152565b6000825161077a818460208701610744565b9190910192915050565b60208152600082518060208401526107a3816040850160208701610744565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f42262012bb1d1a07475f68d95d58d18353d78d57c71d0a11845bbf297d596564736f6c63430008180033", - "storage": - { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90001", - "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000064": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x0000000000000000000000000000000000000000000000000000000000000096": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000009c": "0x0000000000000000000000000000000000000000000000000000000000000003", - "0x000000000000000000000000000000000000000000000000000000000000009d": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x000000000000000000000000000000000000000000000000000000000000009e": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570", - "0x683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7": "0x00000000000000000000000000000000000000000000000000322af8000000c8", - "0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c": "0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e", - "0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539d": "0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49", - "0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539e": "0x00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", - }, - }, - } + '{ + "0x0165878a594ca255338adfa4d48449f69242eb8f": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0x000000000000000000000000000000000000000000000000000000000000001e", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000b306bf915c4d645ff596e518faf3f9669b97016", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0x06530dd13afb697b81e2d602a279ebaec8ca2e31": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816341493c60146103f85750806351c7094f146103a7578063715018a61461034d578063814856f4146102685780638c95ff1e146101205780638da5cb5b146100f95763f2fde38b1461006b575f80fd5b346100f65760203660031901126100f6576004356001600160a01b038116908190036100f4576100996105e3565b80156100e05781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b505b80fd5b50346100f657806003193601126100f657546040516001600160a01b039091168152602090f35b50346100f65760203660031901126100f6576004356001600160a01b03811691908281036100f4576101506105e3565b604051631528821b60e11b8152602081600481875afa90811561025d578391610227575b506001600160e01b03191680156102185780835260016020526040832080546001600160a01b031694856102045781546001600160a01b031916179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507fcb5cc54fa0fda41744197b286ab4135aec7c322cace32c4f55da723d2eb8eee69190819081015b0390a180f35b632b87e79760e01b85526004869052602485fd5b6320acd28b60e01b8352600483fd5b90506020813d602011610255575b81610242602093836105a1565b8101031261025157515f610174565b8280fd5b3d9150610235565b6040513d85823e3d90fd5b50346100f65760203660031901126100f6576004356001600160e01b0319811691908281036100f4576102996105e3565b82825260016020526040822080546001600160a01b03811692919083156103395760ff8160a01c166103255760ff60a01b1916600160a01b179055604080516001600160e01b031990921682526001600160a01b0390921660208201529192507f63ad2363b183cb8bb562b9590c5b4428e2a566260df053db156576d3d171438d9190819081016101fe565b63ebf1082360e01b85526004869052602485fd5b6379043bbf60e11b85526004869052602485fd5b50346100f657806003193601126100f6576103666105e3565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100f65760203660031901126100f65760043563ffffffff60e01b81168091036100f457604082819281526001602052205460ff82519160018060a01b038116835260a01c1615156020820152f35b82346105495760603660031901126105495760243567ffffffffffffffff81116105495761042a903690600401610573565b60443567ffffffffffffffff81116105495761044a903690600401610573565b92836004116105495763ffffffff60e01b82351695865f52600160205260405f206040820182811067ffffffffffffffff82111761055f57604052546001600160a01b03811680835260a09190911c60ff16151560208301819052906104bd57876379043bbf60e11b5f5260045260245ffd5b879061054d5750516001600160a01b031690813b15610549575f9361051e61050c946040519788968795869563020a49e360e51b875260043560048801526060602488015260648701916105c3565b848103600319016044860152916105c3565b03915afa801561053e57610530575080f35b61053c91505f906105a1565b005b6040513d5f823e3d90fd5b5f80fd5b63ebf1082360e01b5f5260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b9181601f840112156105495782359167ffffffffffffffff8311610549576020838186019501011161054957565b90601f8019910116810190811067ffffffffffffffff82111761055f57604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f546001600160a01b031633036105f657565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212208b8995e2db8390214fe62e68eed615c456eb414fd6f5d110e91f0eee2e8b11f864736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc", + "0xcaab7b9788e698b855a97db004a643ebe958e7ce2716f8894c26742dd5905ba0": "0x0000000000000000000000000d09209634e053e5a243a04ae58095f3083a1fcf" + } + }, + "0x09635f643e140090a9a8dcd712ed6285858cebef": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b50600436106100cb575f3560e01c806342966c681161008857806395d89b411161006357806395d89b41146101a7578063a457c2d7146101af578063a9059cbb146101c2578063dd62ed3e146101d5575f5ffd5b806342966c681461015757806370a082311461016c57806379cc679014610194575f5ffd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f5ffd5b6100d76101e8565b6040516100e49190610826565b60405180910390f35b6101006100fb366004610876565b610278565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b61010061013036600461089e565b610291565b604051601281526020016100e4565b610100610152366004610876565b6102b4565b61016a6101653660046108d8565b6102d5565b005b61011461017a3660046108ef565b6001600160a01b03165f9081526020819052604090205490565b61016a6101a2366004610876565b6102e2565b6100d76102fb565b6101006101bd366004610876565b61030a565b6101006101d0366004610876565b610389565b6101146101e336600461090f565b610396565b6060600380546101f790610940565b80601f016020809104026020016040519081016040528092919081815260200182805461022390610940565b801561026e5780601f106102455761010080835404028352916020019161026e565b820191905f5260205f20905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b5f336102858185856103c0565b60019150505b92915050565b5f3361029e8582856104e4565b6102a985858561055c565b506001949350505050565b5f336102858185856102c68383610396565b6102d09190610978565b6103c0565b6102df33826106fe565b50565b6102ed8233836104e4565b6102f782826106fe565b5050565b6060600480546101f790610940565b5f33816103178286610396565b90508381101561037c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102a982868684036103c0565b5f3361028581858561055c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610373565b6001600160a01b0382166104835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610373565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6104ef8484610396565b90505f19811461055657818110156105495760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610373565b61055684848484036103c0565b50505050565b6001600160a01b0383166105c05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610373565b6001600160a01b0382166106225760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610373565b6001600160a01b0383165f90815260208190526040902054818110156106995760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610556565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610373565b6001600160a01b0382165f90815260208190526040902054818110156107d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610373565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104d7565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610871575f5ffd5b919050565b5f5f60408385031215610887575f5ffd5b6108908361085b565b946020939093013593505050565b5f5f5f606084860312156108b0575f5ffd5b6108b98461085b565b92506108c76020850161085b565b929592945050506040919091013590565b5f602082840312156108e8575f5ffd5b5035919050565b5f602082840312156108ff575f5ffd5b6109088261085b565b9392505050565b5f5f60408385031215610920575f5ffd5b6109298361085b565b91506109376020840161085b565b90509250929050565b600181811c9082168061095457607f821691505b60208210810361097257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561028b57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220e22bb8a1111ed9b19d1fa2dff5ee1e97b8924067fd64b92ca0f74f7af32d182364736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff", + "0x0000000000000000000000000000000000000000000000000000000000000003": "0x54657374546f6b656e0000000000000000000000000000000000000000000012", + "0x0000000000000000000000000000000000000000000000000000000000000004": "0x5445535400000000000000000000000000000000000000000000000000000008", + "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff" + } + }, + "0x0b306bf915c4d645ff596e518faf3f9669b97016": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080604052600436106101f1575f3560e01c80638da5cb5b11610108578063cd6dc6871161009d578063f2fde38b1161006d578063f2fde38b1461062e578063f5d4fed31461064d578063f6848d2414610662578063fabc1cbc1461069b578063fe243a17146106ba575f5ffd5b8063cd6dc68714610592578063d48e8894146105b1578063debe1eab146105dc578063ea4d3c9b146105fb575f5ffd5b8063a1ca780b116100d8578063a1ca780b14610520578063a38406a31461053f578063a3d75e091461055e578063a6a509be1461057d575f5ffd5b80638da5cb5b146104955780639104c319146104b25780639b4e4634146104d95780639ba06275146104ec575f5ffd5b8063595edbcb11610189578063715018a611610159578063715018a6146103e8578063724af423146103fc57806374cdd7981461041b57806384d810621461044e578063886f119514610462575f5ffd5b8063595edbcb1461034d5780635a26fbf41461036c5780635ac86ab71461038b5780635c975abb146103ca575f5ffd5b80632eae418c116101c45780632eae418c146102c557806350ff7225146102e457806354fd4d5014610318578063595c6a6714610339575f5ffd5b80630d1e9de1146101f5578063136439dd146102165780632704351a14610235578063292b7b2b1461027a575b5f5ffd5b348015610200575f5ffd5b5061021461020f366004611e1b565b6106d9565b005b348015610221575f5ffd5b50610214610230366004611e36565b610736565b348015610240575f5ffd5b50609f5461025c90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b348015610285575f5ffd5b506102ad7f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e81565b6040516001600160a01b039091168152602001610271565b3480156102d0575f5ffd5b506102146102df366004611e4d565b61080b565b3480156102ef575f5ffd5b506103036102fe366004611e9b565b610a64565b60408051928352602083019190915201610271565b348015610323575f5ffd5b5061032c610b14565b6040516102719190611ed9565b348015610344575f5ffd5b50610214610b44565b348015610358575f5ffd5b50609f546102ad906001600160a01b031681565b348015610377575f5ffd5b50610214610386366004611f0e565b610bf3565b348015610396575f5ffd5b506103ba6103a5366004611f35565b606654600160ff9092169190911b9081161490565b6040519015158152602001610271565b3480156103d5575f5ffd5b506066545b604051908152602001610271565b3480156103f3575f5ffd5b50610214610c7a565b348015610407575f5ffd5b506103da610416366004611e9b565b610c8b565b348015610426575f5ffd5b506102ad7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b348015610459575f5ffd5b506102ad610dd0565b34801561046d575f5ffd5b506102ad7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b3480156104a0575f5ffd5b506033546001600160a01b03166102ad565b3480156104bd575f5ffd5b506102ad73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102146104e7366004611f93565b610e52565b3480156104f7575f5ffd5b506102ad610506366004611e1b565b60986020525f90815260409020546001600160a01b031681565b34801561052b575f5ffd5b5061021461053a366004612006565b610f21565b34801561054a575f5ffd5b506102ad610559366004611e1b565b611142565b348015610569575f5ffd5b5061025c610578366004611e1b565b611213565b348015610588575f5ffd5b506103da60995481565b34801561059d575f5ffd5b506102146105ac366004612038565b611273565b3480156105bc575f5ffd5b506103da6105cb366004611e1b565b609b6020525f908152604090205481565b3480156105e7575f5ffd5b506102146105f6366004612038565b61138f565b348015610606575f5ffd5b506102ad7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b348015610639575f5ffd5b50610214610648366004611e1b565b611433565b348015610658575f5ffd5b506103da609e5481565b34801561066d575f5ffd5b506103ba61067c366004611e1b565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156106a6575f5ffd5b506102146106b5366004611e36565b6114ac565b3480156106c5575f5ffd5b506103da6106d4366004612062565b6115c2565b6106e1611642565b609f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7025c71a9fe60d709e71b377dc5f7c72c3e1d8539f8022574254e736ceca01e5906020015b60405180910390a150565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610798573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bc9190612099565b6107d957604051631d77d47760e21b815260040160405180910390fd5b60665481811681146107fe5760405163c61dca5d60e01b815260040160405180910390fd5b6108078261169c565b5050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146108545760405163f739589b60e01b815260040160405180910390fd5b61085c6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461089957604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166108c0576040516339b190bb60e11b815260040160405180910390fd5b5f81136108e05760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156109da575f61090c836120cc565b90505f8185111561092a57508061092381866120e6565b9250610930565b505f9150835b5f61093b82866120f9565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061098b9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516109ce91815260200190565b60405180910390a25050505b8015610a52576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b158015610a3b575f5ffd5b505af1158015610a4d573d5f5f3e3d5ffd5b505050505b5050610a5e600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610aaf5760405163f739589b60e01b815260040160405180910390fd5b610ab76116d9565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610af457604051632711b74d60e11b815260040160405180910390fd5b610afe8584611732565b91509150610b0c600160c955565b935093915050565b6060610b3f7f76302e302e300000000000000000000000000000000000000000000000000006611879565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610ba6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612099565b610be757604051631d77d47760e21b815260040160405180910390fd5b610bf15f1961169c565b565b609f546001600160a01b03163314610c1e57604051630986113760e41b815260040160405180910390fd5b609f805467ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff8416908102919091179091556040519081527f1bc8f042a52db3a437620dea4548f2031fb2a16dd8d3b0b854295528dd2cdd339060200161072b565b610c82611642565b610bf15f6118b6565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610cd55760405163f739589b60e01b815260040160405180910390fd5b610cdd6116d9565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610d1a57604051632711b74d60e11b815260040160405180910390fd5b5f610d2483611907565b6001600160a01b0386165f908152609b6020526040902054610d469190612120565b90505f811215610d695760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610db59084815260200190565b60405180910390a29050610dc9600160c955565b9392505050565b6066545f908190600190811603610dfa5760405163840a48d560e01b815260040160405180910390fd5b610e026116d9565b335f908152609860205260409020546001600160a01b031615610e385760405163031a852160e21b815260040160405180910390fd5b5f610e41611970565b925050610e4e600160c955565b5090565b6066545f90600190811603610e7a5760405163840a48d560e01b815260040160405180910390fd5b610e826116d9565b335f908152609860205260409020546001600160a01b031680610eaa57610ea7611970565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610ee0908b908b908b908b908b9060040161216e565b5f604051808303818588803b158015610ef7575f5ffd5b505af1158015610f09573d5f5f3e3d5ffd5b505050505050610f19600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610f5c576040516312e16d7160e11b815260040160405180910390fd5b610f646116d9565b6001600160a01b038416610f8b576040516339b190bb60e11b815260040160405180910390fd5b610f99633b9aca00836121bb565b15610fb7576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610ff057604051634b692bcf60e01b815260040160405180910390fd5b5f8313156110b1575f5f6110048786611732565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b158015611094575f5ffd5b505af11580156110a6573d5f5f3e3d5ffd5b505050505050611137565b5f831215611137575f6110cd86866110c8876120cc565b611acb565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9909116906360a0d1ce90606401610a24565b50610a5e600160c955565b6001600160a01b038082165f908152609860205260408120549091168061120d5761120a836001600160a01b03165f1b60405180610940016040528061090e815260200161227461090e9139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f19818403018152908290526111ef92916020016121f1565b60405160208183030381529060405280519060200120611bc4565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff16928201929092529061126957670de0b6b3a7640000610dc9565b6020015192915050565b5f54610100900460ff161580801561129157505f54600160ff909116105b806112aa5750303b1580156112aa57505f5460ff166001145b6113125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611333575f805461ff0019166101001790555b61133c836118b6565b6113458261169c565b801561138a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146113d85760405163f739589b60e01b815260040160405180910390fd5b6113e06116d9565b80609e5f8282546113f1919061220d565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a1610807600160c955565b61143b611642565b6001600160a01b0381166114a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611309565b6114a9816118b6565b50565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152c9190612220565b6001600160a01b0316336001600160a01b03161461155d5760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146115845760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461160057604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b60205260408120541261163a576001600160a01b0383165f908152609b602052604090205461120a565b505f92915050565b6033546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611309565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361172b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611309565b600260c955565b5f806001600160a01b03841661175b576040516339b190bb60e11b815260040160405180910390fd5b5f83121561177c5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916117a083836120f9565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906117f09086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161183391815260200190565b60405180910390a25f8113611850575f5f94509450505050611872565b5f821215611865575f94509250611872915050565b5092508391506118729050565b9250929050565b60605f61188583611bd0565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610e4e5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611309565b5f60995f815461197f9061223b565b9091555060408051610940810190915261090e8082525f91611a1c91839133916122746020830139604080516001600160a01b037f000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e166020820152808201919091525f606082015260800160408051601f1981840301815290829052611a0892916020016121f1565b604051602081830303815290604052611bf7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f80611ad783856120e6565b90505f611ae386611213565b90505f611afb67ffffffffffffffff83168488611cf9565b90505f611b088284612253565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f61120a838330611dde565b5f60ff8216601f81111561120d57604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611c485760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611309565b81515f03611c985760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611309565b8282516020840186f590506001600160a01b038116610dc95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611309565b5f80805f19858709858702925082811083820303915050805f03611d3057838281611d2657611d266121a7565b0492505050610dc9565b808411611d775760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611309565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6001600160a01b03811681146114a9575f5ffd5b5f60208284031215611e2b575f5ffd5b8135610dc981611e07565b5f60208284031215611e46575f5ffd5b5035919050565b5f5f5f5f60808587031215611e60575f5ffd5b8435611e6b81611e07565b93506020850135611e7b81611e07565b92506040850135611e8b81611e07565b9396929550929360600135925050565b5f5f5f60608486031215611ead575f5ffd5b8335611eb881611e07565b92506020840135611ec881611e07565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611f1e575f5ffd5b813567ffffffffffffffff81168114610dc9575f5ffd5b5f60208284031215611f45575f5ffd5b813560ff81168114610dc9575f5ffd5b5f5f83601f840112611f65575f5ffd5b50813567ffffffffffffffff811115611f7c575f5ffd5b602083019150836020828501011115611872575f5ffd5b5f5f5f5f5f60608688031215611fa7575f5ffd5b853567ffffffffffffffff811115611fbd575f5ffd5b611fc988828901611f55565b909650945050602086013567ffffffffffffffff811115611fe8575f5ffd5b611ff488828901611f55565b96999598509660400135949350505050565b5f5f5f60608486031215612018575f5ffd5b833561202381611e07565b95602085013595506040909401359392505050565b5f5f60408385031215612049575f5ffd5b823561205481611e07565b946020939093013593505050565b5f5f60408385031215612073575f5ffd5b823561207e81611e07565b9150602083013561208e81611e07565b809150509250929050565b5f602082840312156120a9575f5ffd5b81518015158114610dc9575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b82016120e0576120e06120b8565b505f0390565b8181038181111561120d5761120d6120b8565b8082018281125f831280158216821582161715612118576121186120b8565b505092915050565b8181035f83128015838313168383128216171561213f5761213f6120b8565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f612181606083018789612146565b8281036020840152612194818688612146565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f826121d557634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f6122056121ff83866121da565b846121da565b949350505050565b8082018082111561120d5761120d6120b8565b5f60208284031215612230575f5ffd5b8151610dc981611e07565b5f6001820161224c5761224c6120b8565b5060010190565b67ffffffffffffffff828116828216039081111561120d5761120d6120b856fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099cfbc0a725d5924a55da7ef5a29510b8080c3742013a79cb9cb9c68b634edb164736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x0d09209634e053e5a243a04ae58095f3083a1fcf": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081632a51043614610bb55750806341493c6014610a0857806344f636921461096d5780636b61d8e714610928578063eddf243c14610553578063f11817b2146100f05763ffa1ad741461006b575f80fd5b346100ed57806003193601126100ed576040516040810181811067ffffffffffffffff8211176100d957906040918252600681526020810165076352e302e360d41b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b634e487b7160e01b83526041600452602483fd5b80fd5b50346100ed5760c03660031901126100ed57366084116100ed573660c4116100ed57604051906103006101238184610c1b565b80368437610132600435610f6c565b610143602495929535604435610fd7565b91939290610152606435610f6c565b9390926040519660408801967f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e895288600160208201997e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e8b527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604060608501927f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721984527f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f560843596836080820198808a5286828660608160075afa9110169160808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c83525260a43580965260608160075afa931016161660408a60808160065afa169851975198156105445760209a9b9c8a528a8a015260408901526060880152608087015260a086015260c085015260e08401527f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e082015260405192839161050f8484610c1b565b8336843760085afa15908115610537575b506105285780f35b631ff3747d60e21b8152600490fd5b600191505114155f610520565b63a54f8e2760e01b8c5260048cfd5b50346100ed576101403660031901126100ed5736610104116100ed5736610144116100ed5760405160408101907f26091e1cafb0ad8a4ea0a694cd3743ebf524779233db734c451d28b58aa9758e815260208101917e9ff50a6b8b11c3ca6fdb2690a124f8ce25489fefa65a3e782e7ba70b66690e83527f061c3fd0fd3da25d2607c227d090cca750ed36c6ec878755e537c1c48951fb4c81526001606083017f0fa17ae9c2033379df7b5c65eff0e107055e9a273e6119a212dd09eb5170721981527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001604061010435947f07236256d21c60d02f0bdbf95cff83e03ea9e16fca56b18d5544b0889a65c1f5608088019680885284848460608160075afa911016838960808160065afa16947f04eab241388a79817fe0e0e2ead0b2ec4ffdec51a16028dee020634fd129e71c8352526101243580965260608160075afa931016161660408260808160065afa169051915190156109195760405191610100600484377f1cc7cb8de715675f21f01ecc9b46d236e0865e0cc020024521998269845f74e66101008401527f03ff41f4ba0c37fe2caf27354d28e4b8f83d3b76777a63b327d736bffb0122ed6101208401527f01909cd7827e0278e6b60843a4abc7b111d7f8b2725cd5902a6b20da7a2938fb6101408401527f192bd3274441670227b4f69a44005b8711266e474227c6439ca25ca8e1ec1fc26101608401527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101808401527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101a08401527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101c08401527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101e08401527e1752a100a72fdf1e5a5d6ea841cc20ec838bccfcf7bd559e79f1c9c759b6a06102008401527f192a8cc13cd9f762871f21e43451c6ca9eeab2cb2987c4e366a185c25dac2e7f6102208401526102408301526102608201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102808201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102a08201527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec6102c08201527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d6102e08201526020816103008160085afa905116156105285780f35b63a54f8e2760e01b8352600483fd5b50346100ed5760203660031901126100ed576004359067ffffffffffffffff82116100ed57602061096561095f3660048601610bed565b90610c51565b604051908152f35b50346100ed576101003660031901126100ed5736610104116100ed5760405190610998608083610c1b565b60803683376109ab602435600435610c88565b82526109c160843560a435604435606435610d38565b602084015260408301526109d960e43560c435610c88565b60608301526040519190825b600482106109f257608084f35b60208060019285518152019301910190916109e5565b5034610b84576060366003190112610b845760243567ffffffffffffffff8111610b8457610a3a903690600401610bed565b60443567ffffffffffffffff8111610b8457610a5a903690600401610bed565b91909282600411610b845783356001600160e01b031916635ba6b3a760e01b8101610b98575090610a8a91610c51565b604091825191610a9a8484610c1b565b833684376004358352602083015283016101008482036003190112610b845780602385011215610b8457825193610ad361010086610c1b565b84906101048101928311610b8457600401905b828210610b8857505050303b15610b84578151633b77c90f60e21b8152925f600485015b60088210610b6e5750505061010483015f905b60028210610b58575050505f8261014481305afa908115610b4f5750610b41575080f35b610b4d91505f90610c1b565b005b513d5f823e3d90fd5b6020806001928551815201930191019091610b1d565b6020806001928551815201930191019091610b0a565b5f80fd5b8135815260209182019101610ae6565b63988066a160e01b5f5260045263a4594c5960e01b60245260445ffd5b34610b84575f366003190112610b8457807fa4594c59bbc142f3b81c3ecb7f50a7c34bc9af7c4c444b5d48b795427e28591360209252f35b9181601f84011215610b845782359167ffffffffffffffff8311610b845760208381860195010111610b8457565b90601f8019910116810190811067ffffffffffffffff821117610c3d57604052565b634e487b7160e01b5f52604160045260245ffd5b6020915f918160405192839283378101838152039060025afa15610c7d575f516001600160fd1b031690565b6040513d5f823e3d90fd5b905f5160206112f05f395f51905f528210801590610d21575b610d0457811580610d19575b610d1357610cd15f5160206112f05f395f51905f5260038185818180090908611110565b818103610ce057505060011b90565b5f5160206112f05f395f51905f52809106810306145f14610d0457600190811b1790565b631ff3747d60e21b5f5260045ffd5b50505f90565b508015610cad565b505f5160206112f05f395f51905f52811015610ca1565b919093925f5160206112f05f395f51905f528310801590610f55575b8015610f3e575b8015610f27575b610d04578082868517171715610f1c57908291610e7f5f5160206112f05f395f51905f5280808080888180808f9d7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd448f839290839109099d8e0981848181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089a09818c8181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306945f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea481610e5981808b80098187800908611110565b8408095f5160206112f05f395f51905f52610e7382611287565b80091415958691611133565b929080821480610f13575b15610eb15750505050905f14610ea95760ff60025b169060021b179190565b60ff5f610e9f565b5f5160206112f05f395f51905f52809106810306149182610ef4575b505015610d045760019115610eec5760ff60025b169060021b17179190565b60ff5f610ee1565b5f5160206112f05f395f51905f52919250819006810306145f80610ecd565b50838314610e8a565b50505090505f905f90565b505f5160206112f05f395f51905f52811015610d62565b505f5160206112f05f395f51905f52821015610d5b565b505f5160206112f05f395f51905f52851015610d54565b8015610fd0578060011c915f5160206112f05f395f51905f52831015610d0457600180610faf5f5160206112f05f395f51905f5260038188818180090908611110565b931614610fb857565b905f5160206112f05f395f51905f5280910681030690565b505f905f90565b801580611108575b6110fc578060021c92825f5160206112f05f395f51905f5285108015906110e5575b610d045784815f5160206112f05f395f51905f5280808080808080807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd44816110af9d8d0909998a0981898181800909087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750806810306936002808a16149509818a8181800909087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e508611133565b809291600180829616146110c1575050565b5f5160206112f05f395f51905f528093945080929550809106810306930681030690565b505f5160206112f05f395f51905f52811015611001565b50505f905f905f905f90565b508115610fdf565b9061111a82611287565b915f5160206112f05f395f51905f5283800903610d0457565b915f5160206112f05f395f51905f527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea48161118b9396949661117d82808a8009818a800908611110565b9061127b575b860809611110565b925f5160206112f05f395f51905f52600285096040519060208252602080830152602060408301528060608301527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4560808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d04575f5160206112f05f395f51905f52826001920903610d04575f5160206112f05f395f51905f52908209925f5160206112f05f395f51905f52808080878009068103068187800908149081159161125c575b50610d0457565b90505f5160206112f05f395f51905f528084860960020914155f611255565b81809106810306611183565b9060405191602083526020808401526020604084015260608301527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808301525f5160206112f05f395f51905f5260a083015260208260c08160055afa91519115610d045756fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212200f1552d5388b60edffbd7a477e1e111fe66a979a444bba3a8970838715d2397f64736f6c634300081b0033", + "storage": {} + }, + "0x0dcd1bf9a1b36ce34237eeafef220932846bcd82": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b5060043610610213575f3560e01c80638b8aac3c1161011f578063debe1eab116100a9578063f3b4a00011610079578063f3b4a0001461052f578063f698da2514610539578063fabc1cbc14610541578063fd98042314610554578063fe243a1714610567575f5ffd5b8063debe1eab146104cf578063df5cf723146104e2578063e7a050aa14610509578063f2fde38b1461051c575f5ffd5b80639ac01d61116100ef5780639ac01d6114610463578063b5d8b5b814610476578063c665670214610489578063cbc2bd621461049c578063de44acb6146104af575f5ffd5b80638b8aac3c146103f65780638da5cb5b1461041e57806394f649dd1461042f578063967fc0d214610450575f5ffd5b8063595c6a67116101a0578063663c1de411610170578063663c1de41461035b578063715018a61461037d578063724af423146103855780637ecebe0014610398578063886f1195146103b7575f5ffd5b8063595c6a67146103055780635ac86ab71461030d5780635c975abb146103405780635de08ff214610348575f5ffd5b806336a8c500116101e657806336a8c5001461027857806348825e941461028e5780634b6d5d6e146102b557806350ff7225146102c857806354fd4d50146102f0575f5ffd5b8063136439dd146102175780631794bb3c1461022c5780632eae418c1461023f57806332e89ace14610252575b5f5ffd5b61022a6102253660046125e1565b610591565b005b61022a61023a36600461260c565b610666565b61022a61024d36600461264a565b61078c565b6102656102603660046126ac565b610844565b6040519081526020015b60405180910390f35b6102806108e8565b60405161026f9291906127e1565b6102657f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61022a6102c3366004612837565b610a05565b6102db6102d636600461260c565b610b3e565b6040805192835260208301919091520161026f565b6102f8610bb2565b60405161026f9190612880565b61022a610be2565b61033061031b366004612892565b609854600160ff9092169190911b9081161490565b604051901515815260200161026f565b609854610265565b61022a6103563660046128b2565b610c91565b610330610369366004612837565b60d16020525f908152604090205460ff1681565b61022a610de4565b61026561039336600461260c565b610df5565b6102656103a6366004612837565b60ca6020525f908152604090205481565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161026f565b610265610404366004612837565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103de565b61044261043d366004612837565b610e68565b60405161026f92919061295c565b60cb546103de906001600160a01b031681565b610265610471366004612989565b610fe0565b61022a6104843660046128b2565b611071565b61022a610497366004612837565b6111b8565b6103de6104aa3660046129ea565b6111db565b6104c26104bd366004612837565b61120f565b60405161026f9190612a14565b61022a6104dd3660046129ea565b611282565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61026561051736600461260c565b611346565b61022a61052a366004612837565b611398565b6103de620e16e481565b61026561140e565b61022a61054f3660046125e1565b6114c7565b610265610562366004612837565b6115dd565b610265610575366004612a26565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190612a5d565b61063457604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106595760405163c61dca5d60e01b815260040160405180910390fd5b610662826115f2565b5050565b5f54610100900460ff161580801561068457505f54600160ff909116105b8061069d5750303b15801561069d57505f5460ff166001145b6107055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610726575f805461ff0019166101001790555b61072f826115f2565b6107388461162f565b61074183611680565b8015610786575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146107d55760405163f739589b60e01b815260040160405180910390fd5b6107dd6116e9565b604051636ce5768960e11b81526001600160a01b0384169063d9caed129061080d90879086908690600401612a7c565b5f604051808303815f87803b158015610824575f5ffd5b505af1158015610836573d5f5f3e3d5ffd5b505050506107866001606555565b6098545f90819060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6108766116e9565b6001600160a01b0385165f90815260ca60205260409020546108a7866108a0818c8c8c878c610fe0565b8688611742565b6001600160a01b0386165f90815260ca602052604090206001820190556108d0868a8a8a611794565b9250506108dd6001606555565b509695505050505050565b6060805f6108f660d4611901565b90505f8167ffffffffffffffff81111561091257610912612698565b60405190808252806020026020018201604052801561093b578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561095857610958612698565b604051908082528060200260200182016040528015610981578160200160208202803683370190505b5090505f5b838110156109fa575f5f61099b60d484611911565b91509150818584815181106109b2576109b2612aa0565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109e5576109e5612aa0565b60209081029190910101525050600101610986565b509094909350915050565b610a0d6116e9565b5f610a1960d48361192e565b915050610a2760d483611945565b50604080516001600160a01b0384168152602081018390527fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839910160405180910390a18015610b3057816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190612ab4565b846040518463ffffffff1660e01b8152600401610b0293929190612a7c565b5f604051808303815f87803b158015610b19575f5ffd5b505af1158015610b2b573d5f5f3e3d5ffd5b505050505b50610b3b6001606555565b50565b5f80336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610b895760405163f739589b60e01b815260040160405180910390fd5b610b916116e9565b610b9c858585611959565b91509150610baa6001606555565b935093915050565b6060610bdd7f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c689190612a5d565b610c8557604051631d77d47760e21b815260040160405180910390fd5b610c8f5f196115f2565b565b60cb546001600160a01b03163314610cbc576040516320ba3ff960e21b815260040160405180910390fd5b610cc46116e9565b805f5b81811015610dd85760d15f858584818110610ce457610ce4612aa0565b9050602002016020810190610cf99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16610dd057600160d15f868685818110610d3057610d30612aa0565b9050602002016020810190610d459190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d9f57610d9f612aa0565b9050602002016020810190610db49190612837565b6040516001600160a01b03909116815260200160405180910390a15b600101610cc7565b50506106626001606555565b610dec611afe565b610c8f5f61162f565b5f336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614610e3f5760405163f739589b60e01b815260040160405180910390fd5b610e476116e9565b5f610e53858585611b58565b92505050610e616001606555565b9392505050565b6001600160a01b0381165f90815260ce60205260408120546060918291908167ffffffffffffffff811115610e9f57610e9f612698565b604051908082528060200260200182016040528015610ec8578160200160208202803683370190505b5090505f5b82811015610f56576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610f0b57610f0b612aa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610f4357610f43612aa0565b6020908102919091010152600101610ecd565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610fce57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610fb0575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611066906101000160405160208183030381529060405280519060200120611c1e565b979650505050505050565b60cb546001600160a01b0316331461109c576040516320ba3ff960e21b815260040160405180910390fd5b6110a46116e9565b805f5b81811015610dd85760d15f8585848181106110c4576110c4612aa0565b90506020020160208101906110d99190612837565b6001600160a01b0316815260208101919091526040015f205460ff16156111b0575f60d15f86868581811061111057611110612aa0565b90506020020160208101906111259190612837565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061117f5761117f612aa0565b90506020020160208101906111949190612837565b6040516001600160a01b03909116815260200160405180910390a15b6001016110a7565b6111c0611afe565b6111c86116e9565b6111d181611680565b610b3b6001606555565b60ce602052815f5260405f2081815481106111f4575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561127657602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611258575b50505050509050919050565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc916146112cb5760405163f739589b60e01b815260040160405180910390fd5b6112d36116e9565b5f6112df60d48461192e565b91506112f8905060d4846112f38585612ae3565b611c64565b50604080516001600160a01b0385168152602081018490527fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff910160405180910390a1506106626001606555565b6098545f9081906001908116036113705760405163840a48d560e01b815260040160405180910390fd5b6113786116e9565b61138433868686611794565b91506113906001606555565b509392505050565b6113a0611afe565b6001600160a01b0381166114055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106fc565b610b3b8161162f565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61147b611c79565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611523573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115479190612ab4565b6001600160a01b0316336001600160a01b0316146115785760405163794821ff60e01b815260040160405180910390fd5b6098548019821981161461159f5760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f6115ea60d48461192e565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60026065540361173b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106fc565b6002606555565b4281101561176357604051630819bdcd60e01b815260040160405180910390fd5b6117776001600160a01b0385168484611d15565b61078657604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff166117ce57604051632efd965160e11b815260040160405180910390fd5b6117e36001600160a01b038516338786611d73565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303815f875af115801561182f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190612af6565b91505f5f611862888886611959565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc990911690633c651cf2906084015f604051808303815f87803b1580156118e0575f5ffd5b505af11580156118f2573d5f5f3e3d5ffd5b50505050505050949350505050565b5f61190b82611dcb565b92915050565b5f80808061191f8686611dd5565b909450925050505b9250929050565b5f80808061191f866001600160a01b038716611dfe565b5f610e61836001600160a01b038416611e36565b5f806001600160a01b038516611982576040516316f2ccc960e01b815260040160405180910390fd5b825f036119a2576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd6020908152604080832093881683529290529081205490819003611a48576001600160a01b0386165f90815260ce602090815260409091205410611a0a576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b611a528482612ae3565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611aae90889088908890612a7c565b60405180910390a1959294509192505050565b60605f611acd83611e52565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106fc565b5f5f825f03611b7a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611bc057604051634b18b19360e01b815260040160405180910390fd5b611bca8482612b0d565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611c1257611c078686611e79565b600192509050610baa565b5f969095509350505050565b5f611c2761140e565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f6115ea846001600160a01b03851684611ff7565b60605f611ca57f76302e302e300000000000000000000000000000000000000000000000000006611ac1565b9050805f81518110611cb957611cb9612aa0565b602001015160f81c60f81b81600181518110611cd757611cd7612aa0565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611d228585612013565b90925090505f816004811115611d3a57611d3a612b20565b148015611d585750856001600160a01b0316826001600160a01b0316145b80611d695750611d69868686612052565b9695505050505050565b610786846323b872dd60e01b858585604051602401611d9493929190612a7c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612139565b5f61190b82612211565b5f8080611de2858561221a565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611e2b57611e1f8585612225565b92505f91506119279050565b600192509050611927565b5f8181526002830160205260408120819055610e618383612230565b5f60ff8216601f81111561190b57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f8b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611ec957611ec9612aa0565b5f918252602090912001546001600160a01b031603611f83576001600160a01b0384165f90815260ce602052604090208054611f0790600190612b0d565b81548110611f1757611f17612aa0565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611f5357611f53612aa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f8b565b600101611e93565b818103611fab57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611fd157611fd1612b34565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f82815260028401602052604081208290556115ea848461223b565b5f5f8251604103612047576020830151604084015160608501515f1a61203b87828585612246565b94509450505050611927565b505f90506002611927565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161207a929190612b48565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120b89190612b60565b5f60405180830381855afa9150503d805f81146120f0576040519150601f19603f3d011682016040523d82523d5f602084013e6120f5565b606091505b509150915081801561210957506020815110155b8015611d6957508051630b135d3f60e11b9061212e9083016020908101908401612af6565b149695505050505050565b5f61218d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123039092919063ffffffff16565b905080515f14806121ad5750808060200190518101906121ad9190612a5d565b61220c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106fc565b505050565b5f61190b825490565b5f610e618383612311565b5f610e618383612337565b5f610e61838361234e565b5f610e618383612431565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561227b57505f905060036122fa565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156122cc573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166122f4575f600192509250506122fa565b91505f90505b94509492505050565b60606115ea84845f8561247d565b5f825f01828154811061232657612326612aa0565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e61565b5f8181526001830160205260408120548015612428575f612370600183612b0d565b85549091505f9061238390600190612b0d565b90508181146123e2575f865f0182815481106123a1576123a1612aa0565b905f5260205f200154905080875f0184815481106123c1576123c1612aa0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123f3576123f3612b34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061190b565b5f91505061190b565b5f81815260018301602052604081205461247657508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561190b565b505f61190b565b6060824710156124de5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106fc565b5f5f866001600160a01b031685876040516124f99190612b60565b5f6040518083038185875af1925050503d805f8114612533576040519150601f19603f3d011682016040523d82523d5f602084013e612538565b606091505b509150915061106687838387606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106fc565b50816115ea565b6115ea83838151156125c75781518083602001fd5b8060405162461bcd60e51b81526004016106fc9190612880565b5f602082840312156125f1575f5ffd5b5035919050565b6001600160a01b0381168114610b3b575f5ffd5b5f5f5f6060848603121561261e575f5ffd5b8335612629816125f8565b92506020840135612639816125f8565b929592945050506040919091013590565b5f5f5f5f6080858703121561265d575f5ffd5b8435612668816125f8565b93506020850135612678816125f8565b92506040850135612688816125f8565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c087890312156126c1575f5ffd5b86356126cc816125f8565b955060208701356126dc816125f8565b94506040870135935060608701356126f3816125f8565b92506080870135915060a087013567ffffffffffffffff811115612715575f5ffd5b8701601f81018913612725575f5ffd5b803567ffffffffffffffff81111561273f5761273f612698565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561276e5761276e612698565b6040528181528282016020018b1015612785575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b828110156127d75781518652602095860195909101906001016127b9565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156128235783516001600160a01b03168352602093840193909201916001016127fc565b50508381036020850152611d6981866127a7565b5f60208284031215612847575f5ffd5b8135610e61816125f8565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610e616020830184612852565b5f602082840312156128a2575f5ffd5b813560ff81168114610e61575f5ffd5b5f5f602083850312156128c3575f5ffd5b823567ffffffffffffffff8111156128d9575f5ffd5b8301601f810185136128e9575f5ffd5b803567ffffffffffffffff8111156128ff575f5ffd5b8560208260051b8401011115612913575f5ffd5b6020919091019590945092505050565b5f8151808452602084019350602083015f5b828110156127d75781516001600160a01b0316865260209586019590910190600101612935565b604081525f61296e6040830185612923565b828103602084015261298081856127a7565b95945050505050565b5f5f5f5f5f5f60c0878903121561299e575f5ffd5b86356129a9816125f8565b955060208701356129b9816125f8565b945060408701356129c9816125f8565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129fb575f5ffd5b8235612a06816125f8565b946020939093013593505050565b602081525f610e616020830184612923565b5f5f60408385031215612a37575f5ffd5b8235612a42816125f8565b91506020830135612a52816125f8565b809150509250929050565b5f60208284031215612a6d575f5ffd5b81518015158114610e61575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612ac4575f5ffd5b8151610e61816125f8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561190b5761190b612acf565b5f60208284031215612b06575f5ffd5b5051919050565b8181038181111561190b5761190b612acf565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f6115ea6040830184612852565b5f82518060208501845e5f92019182525091905056fea264697066735822122092fe983da85dedca60cea514fff07c2b53c72563c54da1ca72b900903a62aa9764736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x0e801d84fa97b50751dbf25036d067dcf18858bf": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081630491b41c1461187b57508063087324611461181e5780631f9b74e0146117b857806320b66298146114ff57806325504777146112f15780632cd95940146111f55780633ca5a5f5146111c35780634bd26e09146111845780635401ed271461115c5780635e5a67751461113a5780635f1f2d7714610da157806366acfefe14610c615780636d14a98714610c1d5780637c17234714610c0357806381c07502146109405780639f3ccf65146108e7578063ac6bfb0314610899578063adc804da14610831578063b6904b78146107f1578063bc9a40c31461074a578063bd29b8cd14610623578063c46778a5146105e9578063c601527d146104eb578063c8294c56146104a0578063d5eccc0514610442578063dd9846b91461041b578063df5cf723146103d7578063f2be94ae14610368578063f851e1981461030a578063fa28c627146102b75763ff694a7714610171575f80fd5b346102b35760603660031901126102b35761018a6118a9565b610192611a52565b906044356001600160401b0381116102b3576101b2903690600401611a68565b6101e6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b6101fe8260ff165f52600160205260405f2054151590565b6102505760ff9261021261021892846125cf565b8261256c565b165f52600160205261024e60405f2060405190610234826119bd565b63ffffffff431682525f60208301525f6040830152611e93565b005b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b6064820152608490fd5b5f80fd5b346102b35760206001600160601b036102fc6102f66102d536611b0d565b90825f949394526002875260405f2060ff82165f52875260405f2093612acb565b906118c9565b505460401c16604051908152f35b346102b35760403660031901126102b35760606103306103286118b9565b600435611df3565b61036660405180926001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565bf35b346102b35760803660031901126102b35760206001600160601b03604061038d6118a9565b610395611a3f565b906044355f526002855260ff835f2091165f5284526103cc6103c56103bf845f20606435906118c9565b50611d51565b9182612964565b015116604051908152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b346102b357602061043461042e36611b0d565b91612acb565b63ffffffff60405191168152f35b346102b35760203660031901126102b35760ff61045d6118a9565b165f90815260016020526040902080545f19810190811161048c576102fc6001600160601b03916020936118c9565b634e487b7160e01b5f52601160045260245ffd5b346102b35760603660031901126102b35760206001600160601b0360406104c56118a9565b60ff6104cf611a3f565b91165f52600184526103cc6103c56103bf604435855f206118c9565b346102b35760403660031901126102b3576105046118a9565b6024356001600160401b0381116102b357610523903690600401611a68565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e9361058a915f916105af575b506001600160a01b03163314611bc3565b6105aa6105a58260ff165f52600160205260405f2054151590565b611b3e565b6125cf565b6105d1915060203d6020116105d7575b6105c98183611a07565b810190611ba4565b85610579565b503d6105bf565b6040513d5f823e3d90fd5b346102b35760203660031901126102b35760ff6106046118a9565b165f525f60205260206001600160601b0360405f205416604051908152f35b346102b35760403660031901126102b3576004356024356001600160401b0381116102b35761065690369060040161190e565b61068a337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f5b81811061069557005b6106a0818385611d31565b3560f81c906106bd8260ff165f52600160205260405f2054151590565b156106df576106d8826106d260019488612146565b90612497565b500161068c565b60405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f7260448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608490fd5b346102b35760403660031901126102b3576107636118a9565b61076b611a52565b604051638da5cb5b60e01b8152916020836004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa9283156105de5761024e936107d1915f916105af57506001600160a01b03163314611bc3565b6107ec6105a58260ff165f52600160205260405f2054151590565b61256c565b346102b35760403660031901126102b35760ff61080c6118a9565b610814611d98565b50165f52600160205260606103306103bf60243560405f206118c9565b346102b35760403660031901126102b35760ff61084c6118a9565b610854611db6565b50165f5260036020526040610876610870602435835f206118c9565b50611dce565b6001600160601b03602083519260018060a01b0381511684520151166020820152f35b346102b35760603660031901126102b3576108b26118a9565b6108ba611d98565b506024355f52600260205260ff60405f2091165f5260205260606103306103bf60405f20604435906118c9565b346102b35760403660031901126102b3576109006118a9565b60ff60243591165f52600460205260405f2080548210156102b357602091610927916118c9565b905460405160039290921b1c6001600160a01b03168152f35b346102b35760403660031901126102b35760043563ffffffff81168091036102b3576024356001600160401b0381116102b35761098190369060040161190e565b9061098b82611a28565b926109996040519485611a07565b8284526109a583611a28565b602085019390601f19013685375f5b818110610a05578486604051918291602083019060208452518091526040830191905f5b8181106109e6575050500390f35b825163ffffffff168452859450602093840193909201916001016109d8565b610a10818386611d31565b3560f81c5f8181526001602052604090205415610b8957805f52600160205260405f20805415610b75575f528363ffffffff60205f20541611610ae457805f52600160205260405f20545f5b818110610a6f575b5050506001016109b4565b825f52600160205260405f20610a858284611d8b565b5f19810190811161048c57610aa063ffffffff9189936118c9565b5054161115610ab157600101610a5c565b90610abc9250611d8b565b5f1981019190821161048c5763ffffffff60019216610adb8289611d3d565b52908780610a64565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a490fd5b634e487b7160e01b5f52603260045260245ffd5b60405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a490fd5b346102b3575f3660031901126102b3576020604051818152f35b346102b3575f3660031901126102b3576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346102b357610c6f3661193b565b929091610ca6337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b5f935f5b818110610cc5576040516001600160c01b0387168152602090f35b610cd0818387611d31565b3560f81c90610ced8260ff165f52600160205260405f2054151590565b15610d3657610d1382610d0287600195611f1d565b15610d1a575b6106d29082886122ea565b5001610caa565b5083811b60c085901b859003908116991698909817975f610d08565b60405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b60448201527f653a2071756f72756d20646f6573206e6f7420657869737400000000000000006064820152608490fd5b346102b35760403660031901126102b357610dba6118a9565b602435906001600160401b0382116102b357366023830112156102b357816004013591610de683611a28565b92610df46040519485611a07565b8084526024602085019160051b830101913683116102b357602401905b82821061112a575050604051638da5cb5b60e01b815290506020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de57610e7c915f9161110b57506001600160a01b03163314611bc3565b610e976105a58260ff165f52600160205260405f2054151590565b81519081156110a05760ff1691825f52600360205260405f20835f52600460205260405f20935f5b848110610ec857005b817f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f76020610f00610ef98589611d3d565b51876118c9565b50546040516001600160a01b039091168152a2817f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a756040610f44610ef98589611d3d565b505481516001600160a01b0390911681525f6020820152a282545f19810190811161048c57610f7390846118c9565b50610f88610f818387611d3d565b51856118c9565b61105f57818103611072575b50508254801561104b575f1901610fab81856118c9565b61105f575f9055835585545f19810190811161048c57610fce61101891886118c9565b905460039190911b1c6001600160a01b0316610ff4610fed8488611d3d565b51896118c9565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b855490811561104b576001915f190161103181896118c9565b815490858060a01b039060031b1b19169055875501610ebf565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f525f60045260245ffd5b815481546001600160a01b039091166001600160a01b03199182168117835592541690911790558680610f94565b60405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f76696465640000006064820152608490fd5b611124915060203d6020116105d7576105c98183611a07565b84610579565b8135815260209182019101610e11565b346102b3575f3660031901126102b3576020604051670de0b6b3a76400008152f35b346102b35760403660031901126102b35760206001600160601b0360406103cc6103286118b9565b346102b35760403660031901126102b35761119d6118b9565b6004355f52600260205260ff60405f2091165f52602052602060405f2054604051908152f35b346102b35760203660031901126102b35760ff6111de6118a9565b165f526003602052602060405f2054604051908152f35b346102b35760403660031901126102b35761120e6118b9565b6004355f52600260205260ff60405f2091165f5260205260405f2080549061123582611a28565b916112436040519384611a07565b8083526020830180925f5260205f205f915b8383106112d4578486604051918291602083019060208452518091526040830191905f5b818110611287575050500390f35b9193509160206060826112c660019488516001600160601b036040809263ffffffff815116855263ffffffff6020820151166020860152015116910152565b019401910191849392611279565b6001602081926112e385611d51565b815201920192019190611255565b346102b3576112ff3661193b565b91929190611337337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614611c78565b61134082611cff565b9261134a83611cff565b925f5b818110611382576113708661137e87604051938493604085526040850190611981565b908382036020850152611981565b0390f35b61138d818386611d31565b3560f81c906113aa8260ff165f52600160205260405f2054151590565b1561149c576113b98483611f1d565b9290921561140b5782816113d36001956113ef948d6122ea565b916001600160601b036113e6868d611d3d565b91169052612497565b6001600160601b036114018389611d3d565b911690520161134d565b60405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a490fd5b60405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b346102b35760603660031901126102b3576115186118a9565b6024356001600160401b0381116102b3576115379036906004016118de565b916044356001600160401b0381116102b3576115579036906004016118de565b604051638da5cb5b60e01b8152919290916020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa80156105de576115bb915f9161179957506001600160a01b03163314611bc3565b6115d66105a58260ff165f52600160205260405f2054151590565b841561172f578482036116c45760ff1691825f52600360205260405f20935f5b8681106115ff57005b806116516116186116136001948888611c54565b611c64565b61162d611626848c88611c54565b358a6118c9565b5080546001600160a01b031660a09290921b6001600160a01b031916919091179055565b857f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75611681611626848c88611c54565b50848060a01b03905416611699611613858a8a611c54565b604080516001600160a01b039390931683526001600160601b0391909116602083015290a2016115f6565b60405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a20696e707574206c656e677468206d69736d61746368000000000000006064820152608490fd5b608460405162461bcd60e51b815260206004820152604060248201527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f76696465646064820152fd5b6117b2915060203d6020116105d7576105c98183611a07565b87610579565b346102b35760403660031901126102b3576117d16118a9565b602435906001600160a01b03821682036102b357602091816118076105a561180c9460ff165f52600160205260405f2054151590565b611f1d565b506001600160601b0360405191168152f35b346102b35760403660031901126102b3576118376118a9565b60ff60243591165f52600360205260405f2080548210156102b35760409161185e916118c9565b505481516001600160a01b038216815260a09190911c6020820152f35b346102b35760203660031901126102b35760209060ff6118996118a9565b165f526001825260405f20548152f35b6004359060ff821682036102b357565b6024359060ff821682036102b357565b8054821015610b75575f5260205f2001905f90565b9181601f840112156102b3578235916001600160401b0383116102b3576020808501948460051b0101116102b357565b9181601f840112156102b3578235916001600160401b0383116102b357602083818601950101116102b357565b60606003198201126102b3576004356001600160a01b03811681036102b3579160243591604435906001600160401b0382116102b35761197d9160040161190e565b9091565b90602080835192838152019201905f5b81811061199e5750505090565b82516001600160601b0316845260209384019390920191600101611991565b606081019081106001600160401b038211176119d857604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176119d857604052565b90601f801991011681019081106001600160401b038211176119d857604052565b6001600160401b0381116119d85760051b60200190565b6024359063ffffffff821682036102b357565b602435906001600160601b03821682036102b357565b81601f820112156102b357803590611a7f82611a28565b92611a8d6040519485611a07565b82845260208085019360061b830101918183116102b357602001925b828410611ab7575050505090565b6040848303126102b35760405190611ace826119ec565b84356001600160a01b03811681036102b35782526020850135906001600160601b03821682036102b35782602092836040950152815201930192611aa9565b60609060031901126102b3576004359060243560ff811681036102b3579060443563ffffffff811681036102b35790565b15611b4557565b60405162461bcd60e51b815260206004820152603160248201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726044820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b6064820152608490fd5b908160209103126102b357516001600160a01b03811681036102b35790565b15611bca57565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60448201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746064820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608482015260a490fd5b9190811015610b755760051b0190565b356001600160601b03811681036102b35790565b15611c7f57565b60405162461bcd60e51b815260206004820152604c60248201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260648201526b3ca1b7b7b93234b730ba37b960a11b608482015260a490fd5b90611d0982611a28565b611d166040519182611a07565b8281528092611d27601f1991611a28565b0190602036910137565b90821015610b75570190565b8051821015610b755760209160051b010190565b90604051611d5e816119bd565b60406001600160601b0382945463ffffffff8116845263ffffffff8160201c166020850152821c16910152565b9190820391821161048c57565b60405190611da5826119bd565b5f6040838281528260208201520152565b60405190611dc3826119ec565b5f6020838281520152565b90604051611ddb816119ec565b91546001600160a01b038116835260a01c6020830152565b90611dfc611d98565b50815f52600260205260405f2060ff82165f5260205260405f205490611e20611d98565b9282611e2c5750505090565b909192505f52600260205260ff60405f2091165f5260205260405f205f19820191821161048c57611e60916103bf916118c9565b90565b906bffffffffffffffffffffffff60401b82549160401b16906bffffffffffffffffffffffff60401b1916179055565b8054600160401b8110156119d857611eb0916001820181556118c9565b61105f578151815460208085015167ffffffff00000000911b1663ffffffff90921667ffffffffffffffff1990911617178155611efb916001600160601b0390604001511690611e63565b565b906001600160601b03809116911601906001600160601b03821161048c57565b919060ff5f931690815f52600360205260405f205490604051611f3f816119ec565b5f8082526020918201819052848152600480835260408083208151639004134760e01b81526001600160a01b03909616928601929092526024850152805460448501819052908252918120839260648401925b81811061212457505f939283900391508290507f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa9081156105de575f91612094575b505f5b82811061200f575050505f525f6020526001600160601b0360405f2054166001600160601b038316101590565b835f5260036020526120276108708260405f206118c9565b6120318284611d3d565b51612040575b50600101611fe2565b6001600160601b03602061205784869a959a611d3d565b51920151169081810291818304149015171561048c576001916001600160601b03670de0b6b3a764000061208d93041690611efd565b9590612037565b90503d805f833e6120a58183611a07565b8101906020818303126102b3578051906001600160401b0382116102b357019080601f830112156102b35781516120db81611a28565b926120e96040519485611a07565b81845260208085019260051b8201019283116102b357602001905b828210612114575050505f611fdf565b8151815260209182019101612104565b82546001600160a01b0316845285945060209093019260019283019201611f92565b5f90805f52600260205260405f2060ff84165f5260205260405f205480155f146121ed57505f516020612c5a5f395f51905f5260406001600160601b0394835f526002602052815f2060ff82165f526020526121c3825f208351906121aa826119bd565b63ffffffff431682525f60208301525f85830152611e93565b60ff8251911681525f6020820152a2165f81810391125f82128116905f83139015161761048c5790565b908092505f52600260205260405f2060ff84165f5260205260405f20905f19810190811161048c5761221e916118c9565b50908154916001600160601b038360401c169283156122e1576001600160601b03945f516020612c5a5f395f51905f529260409263ffffffff438116911681036122835750805473ffffffffffffffffffffffff0000000000000000191690556121c3565b815467ffffffff000000001916602082901b67ffffffff0000000016179091556122dc90855f526002602052835f2060ff84165f52602052835f208451916122ca836119bd565b82525f60208301525f85830152611e93565b6121c3565b50505050505f90565b9190915f90805f52600260205260405f2060ff85165f5260205260405f205480155f1461239957505f516020612c5a5f395f51905f5260406001600160601b038095845f526002602052825f2060ff89165f5260205261236d835f20845190612352826119bd565b63ffffffff431682525f602083015284841686830152611e93565b60ff8351981688521695866020820152a216905f828203921281831281169183139015161761048c5790565b908092505f52600260205260405f2060ff85165f5260205260405f20905f19810190811161048c576123ca916118c9565b50908154916001600160601b038360401c16926001600160601b0385169081851461248c57855f516020612c5a5f395f51905f52936001600160601b039763ffffffff6040958a9582431692839116145f1461243057505061242b91611e63565b61236d565b835467ffffffff000000001916602083901b67ffffffff00000000161790935561242b92909150875f526002602052855f2060ff8c165f52602052855f209086519261247b846119bd565b83525f602084015286830152611e93565b505050505050505f90565b60ff165f81815260016020526040902080549192915f19810190811161048c576124c0916118c9565b509080156125595763ffffffff6124e58354926001600160601b038460401c16612c10565b938492438316921682036124fe575050611e6091611e63565b835467ffffffff000000001916602083901b67ffffffff000000001617909355611e60929091505f52600160205260405f206040519161253d836119bd565b82525f60208301526001600160601b0384166040830152611e93565b506001600160601b0391505460401c1690565b602060ff7f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf921692835f525f82526001600160601b0360405f20911690816001600160601b0319825416179055604051908152a2565b9190820180921161048c57565b81511561290c5760ff8251911691825f52600360205260405f20549260206125f784866125c2565b116128a6575f925b80841061260d575050505050565b90919293945f5b61261e86886125c2565b8110156126ba57835f52600360205261263a8160405f206118c9565b50546001600160a01b03908116906126528888611d3d565b5151161461266257600101612614565b60405162461bcd60e51b815260206004820152603d60248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073616d652073747261746567792032780000006064820152608490fd5b509493929190926001600160601b0360206126d58386611d3d565b510151161561283f57815f52600360205260405f206126f48285611d3d565b51908054600160401b8110156119d857612713916001820181556118c9565b61105f5781516020929092015160a01b6001600160a01b0319166001600160a01b03929092169190911790555f828152600460205260409020906001600160a01b0361275f8286611d3d565b515116825490600160401b8210156119d857610ff48260019586612785950181556118c9565b827f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54046020848060a01b036127b98589611d3d565b515116604051908152a2827f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838060a01b036127f58488611d3d565b5151166001600160601b03602061280c868a611d3d565b510151604080516001600160a01b0394909416845291166001600160601b03166020830152819081010390a201926125ff565b60405162461bcd60e51b815260206004820152604660248201525f516020612c7a5f395f51905f5260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a490fd5b60405162461bcd60e51b815260206004820152604560248201525f516020612c7a5f395f51905f5260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a490fd5b60405162461bcd60e51b815260206004820152603860248201525f516020612c7a5f395f51905f5260448201527f3a206e6f20737472617465676965732070726f766964656400000000000000006064820152608490fd5b63ffffffff808251169216918210612a41576020015163ffffffff168015918215612a37575b50501561299357565b60405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c490fd5b1090505f8061298a565b60405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a490fd5b929190835f52600260205260405f2060ff82165f5260205260405f2054805b612baf5760405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e490fd5b845f52600260205260405f2060ff83165f5260205260405f205f1982019082821161048c57612be38263ffffffff926118c9565b50541663ffffffff85161015612c035750801561048c575f190180612aea565b63ffffffff169450505050565b905f811215612c4557600160ff1b811461048c576001600160601b0380915f03169116036001600160601b03811161048c5790565b906001600160601b03611e60921690611efd56fe2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d5374616b6552656769737472792e5f6164645374726174656779506172616d73a2646970667358221220a53322900ef5b7e2b34473ed4ba3daa5d60bde2a416a384fe7e58d170c91dca164736f6c634300081b0033", + "storage": {} + }, + "0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f6001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x1613beb3b2c4f22ee086b2b38c1476a3ce7f78e8": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f3560e01c9081632702747d146100b157508063793e1c8e1461009557637be6aa6b1461003d575f80fd5b346100915760203660031901126100915761008d61008161005c61010a565b60405163e481af9d60e01b6020820152600481529061007c602483610162565b610198565b60405191829182610120565b0390f35b5f80fd5b34610091575f36600319011261009157602060405161dead8152f35b34610091576040366003190112610091576100ca61010a565b906024356001600160a01b03811691908290036100915761008d92610081926333cfb7b760e01b602084015260248301526024825261007c604483610162565b600435906001600160a01b038216820361009157565b60206040818301928281528451809452019201905f5b8181106101435750505090565b82516001600160a01b0316845260209384019390920191600101610136565b90601f8019910116810190811067ffffffffffffffff82111761018457604052565b634e487b7160e01b5f52604160045260245ffd5b5f918291602082519201905afa3d156102d6573d9067ffffffffffffffff821161018457604051916101d4601f8201601f191660200184610162565b82523d5f602084013e5b806102cc575b1561028d5780518101906020818184019303126100915760208101519067ffffffffffffffff8211610091570181603f820112156100915760208101519167ffffffffffffffff8311610184578260051b9160208301936102486040519586610162565b84526020840192810160400191821161009157604001915b81831061026d5750505090565b82516001600160a01b038116810361009157815260209283019201610260565b5060405161029c604082610162565b600181526020808201903682378151156102b85761dead905290565b634e487b7160e01b5f52603260045260245ffd5b50805115156101e4565b6060906101de56fea264697066735822122076ca2349a6e41fd590991eccd3f6a0b9335745993e7c7a70c835b28e908b43eb64736f6c634300081b0033", + "storage": {} + }, + "0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0x2bdcc0de6be1f7d2ee689a0342d76f52e8efaba3": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610011575f80fd5b5f3560e01c806306045a911461005a5763bd90df701461002f575f80fd5b34610056575f366003190112610056575f546040516001600160a01b039091168152602090f35b5f80fd5b3461005657610100366003190112610056576064356bffffffffffffffffffffffff1981168091036100565760a43567ffffffffffffffff81116100565736602382011215610056578060040135906100b28261025b565b916100c06040519384610225565b8083526020830191366024838301011161005657815f9260246020930185378401015260e4356001600160a01b0381169390849003610056575f9361018b610144869560018060a01b038754169560405194859260208401976306045a9160e01b8952600435602486015260243560448601526044356064860152608485015260843560a485015261010060c4850152518092816101248601528585015e8884838501015260c43560e4840152610104830152601f801991011681010301601f198101835282610225565b51915afa3d1561021d573d906101a08261025b565b916101ae6040519384610225565b82523d5f602084013e5b156101e357602081805181010312610056576020015180151580910361005657602090604051908152f35b60405162461bcd60e51b81526020600482015260126024820152711cdd185d1a58d7d8d85b1b0819985a5b195960721b6044820152606490fd5b6060906101b8565b90601f8019910116810190811067ffffffffffffffff82111761024757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161024757601f01601f19166020019056fea2646970667358221220911b56055980795aa4b8f8b72ea4e2298214c4b37162aa576fadfa991ca0846364736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c" + } + }, + "0x36c02da8a0983159322a80ffe9f24b1acff8b570": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610011575f80fd5b5f3560e01c8062cf2ab51461038357806303fd34921461037e57806304ec635114610379578063054310e6146103745780630a3b0a4f1461036f5780630cf4b7671461036a5780630d3f21341461036557806310d67a2f14610360578063125e05841461035b57806313542a4e14610356578063136439dd146103515780631478851f1461034c5780631eb812da14610347578063249a0c421461034257806328f61b311461033d57806329092d0e14610338578063296bb0641461033357806329d1e0c31461032e5780632cdd1e86146103295780633998fdd3146103245780633af32abf1461031f5780633c2a7f4c1461031a5780635140a5481461031557806353abfad4146103105780635865c60c1461030b578063595c6a67146103065780635ac86ab7146103015780635b0b829f146102fc5780635c975abb146102f75780635df45946146102f25780636347c900146102ed57806368304835146102e85780636c708904146102e35780636e3b17db146102de578063715018a6146102d957806384ca5213146102d4578063871ef049146102cf578063886f1195146102ca5780638da5cb5b146102c55780639aa1653d146102c05780639b5d177b146102bb5780639e9923c2146102b65780639feab859146102b1578063a50857bf146102ac578063a96f783e146102a7578063c391425e146102a2578063ca0de8821461029d578063ca4f2d9714610298578063d72d8dd614610293578063d75b4c881461028e578063dd8283f314610289578063e65797ad14610284578063f2fde38b1461027f578063fabc1cbc1461027a5763fd39105a14610275575f80fd5b6122f2565b6121e0565b61214f565b6120bb565b61201c565b611dfe565b611d3e565b611cf1565b611cb7565b611c13565b611bb7565b611a97565b611a5d565b611a19565b611950565b61188d565b611865565b61183a565b61180a565b611794565b6116a4565b611566565b6114db565b611497565b61143d565b6113cb565b6113ae565b6112fa565b6112bc565b611234565b6111c8565b611114565b610df6565b610d8a565b610d4a565b610d06565b610cd9565b610cac565b610c09565b610ba0565b610b78565b610b46565b610acc565b610a9d565b610966565b61092b565b6108f0565b61084a565b61081c565b61076b565b610620565b6105be565b6104c5565b61048d565b6103bc565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460051b0101116103b857565b5f80fd5b346103b85760203660031901126103b8576004356001600160401b0381116103b8576103ec903690600401610388565b906104046103fe600480600154161490565b15612338565b5f5b82811061040f57005b806104876104206001938686612384565b3561042a816105e6565b838060a01b0381165f52609960205260405f2061046060ff8660405193610450856106a0565b80548552015416602083016123a1565b61048161047c6104708351612e1f565b6001600160c01b031690565b612eb4565b91612f96565b01610406565b346103b85760203660031901126103b8576004355f526098602052602060405f2054604051908152f35b63ffffffff8116036103b857565b346103b85760603660031901126103b8576024356105056104ff6004356104eb846104b7565b604435905f52609860205260405f20611423565b506123d3565b63ffffffff8082511692169182106105895760408161054d61057594610535602061055b96015163ffffffff1690565b9063ffffffff821615918215610579575b5050612404565b01516001600160c01b031690565b6040516001600160c01b0390911681529081906020820190565b0390f35b63ffffffff161190505f80610546565b60405162461bcd60e51b8152602060048201526003602482015262189b8f60ea1b6044820152606490fd5b5f9103126103b857565b346103b8575f3660031901126103b857609d546040516001600160a01b039091168152602090f35b6001600160a01b038116036103b857565b60043590610604826105e6565b565b60243590610604826105e6565b60443590610604826105e6565b346103b85760203660031901126103b85760043561063d816105e6565b61064561306c565b6001600160a01b03165f81815260c860205260408120805460ff191660011790557f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f9080a2005b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176106bb57604052565b61068c565b606081019081106001600160401b038211176106bb57604052565b90601f801991011681019081106001600160401b038211176106bb57604052565b604051906106046040836106db565b604051906106046060836106db565b6001600160401b0381116106bb57601f01601f191660200190565b9291926107418261071a565b9161074f60405193846106db565b8294818452818301116103b8578281602093845f960137010152565b346103b85760203660031901126103b8576004356001600160401b0381116103b857366023820112156103b8576107ac903690602481600401359101610735565b335f52609960205260ff600160405f2001541660038110156108175760016107d49114612436565b335f5260996020527fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa61081260405f2054926040519182918261248e565b0390a2005b61119d565b346103b85760203660031901126103b85760043561083861306c565b60a055005b60643590610604826105e6565b346103b85760203660031901126103b85760048035610868816105e6565b5f5460405163755b36bd60e11b815292602091849190829060101c6001600160a01b03165afa9182156108eb576108ba926108b5915f916108bc575b506001600160a01b031633146124bf565b6130c4565b005b6108de915060203d6020116108e4575b6108d681836106db565b81019061249f565b5f6108a4565b503d6108cc565b6124b4565b346103b85760203660031901126103b85760043561090d816105e6565b60018060a01b03165f52609f602052602060405f2054604051908152f35b346103b85760203660031901126103b857600435610948816105e6565b60018060a01b03165f526099602052602060405f2054604051908152f35b346103b85760203660031901126103b8576004355f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb576109bf915f91610a6e575b50612536565b60015481811603610a0357806001557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806108123394829190602083019252565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610a90915060203d602011610a96575b610a8881836106db565b81019061251e565b5f6109b9565b503d610a7e565b346103b85760203660031901126103b8576004355f52609a602052602060ff60405f2054166040519015158152f35b346103b85760403660031901126103b8576060610b046104ff602435600435610af3612593565b505f52609860205260405f20611423565b6040519063ffffffff815116825263ffffffff6020820151166020830152604060018060c01b03910151166040820152f35b6004359060ff821682036103b857565b346103b85760203660031901126103b85760ff610b61610b36565b165f52609b602052602060405f2054604051908152f35b346103b8575f3660031901126103b857609e546040516001600160a01b039091168152602090f35b346103b85760203660031901126103b857600435610bbd816105e6565b610bc561306c565b6001600160a01b03165f81815260c860205260408120805460ff191690557f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc9080a2005b346103b85760203660031901126103b8576040516308f6629d60e31b815260048035908201526020816024816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa80156108eb57610575915f91610c8d575b506040516001600160a01b0390911681529081906020820190565b610ca6915060203d6020116108e4576108d681836106db565b5f610c72565b346103b85760203660031901126103b8576108ba600435610ccc816105e6565b610cd461306c565b6131bb565b346103b85760203660031901126103b8576108ba600435610cf9816105e6565b610d0161306c565b613219565b346103b8575f3660031901126103b8576040517f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b03168152602090f35b346103b85760203660031901126103b857600435610d67816105e6565b60018060a01b03165f5260c8602052602060ff60405f2054166040519015158152f35b346103b85760203660031901126103b8576040610db1600435610dac816105e6565b6125c9565b610dc78251809260208091805184520151910152565bf35b9181601f840112156103b8578235916001600160401b0383116103b857602083818601950101116103b857565b346103b85760403660031901126103b8576004356001600160401b0381116103b857610e26903690600401610388565b906024356001600160401b0381116103b857610e4783913690600401610dc9565b610e5b6103fe949294600480600154161490565b610e7a610e6a60965460ff1690565b610e75368488610735565b6133e2565b50610e8681841461262f565b7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316935f5b828110610ebc57005b610ee1610edb610ecd83868661266d565b356001600160f81b03191690565b60f81c90565b610eec828787612679565b6040516379a0849160e11b815260ff841660048201526020816024818d5afa9081156108eb57610f2c9163ffffffff915f91611047575b501682146126d2565b5f90815b8688838510610f9c575050505050509060019143610f598260ff165f52609b60205260405f2090565b557f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db460ff60405192169180610f9343829190602083019252565b0390a201610eb3565b86611038611031600195948b61103f95611022610fc3610fbe8d8f8e90612384565b612394565b9861100d611008610fec610fe78d60018060a01b03165f52609960205260405f2090565b6123ad565b99610ffa6104708c51612e1f565b60ff600192161c1660011490565b612709565b8a8060a01b03168a8060a01b038a1611612740565b61102b8261278a565b926127b8565b3691610735565b9083612f96565b920191610f30565b611068915060203d811161106e575b61106081836106db565b8101906126bd565b8c610f23565b503d611056565b6001600160401b0381116106bb5760051b60200190565b60206003198201126103b857600435906001600160401b0382116103b857806023830112156103b85781600401356110c381611075565b926110d160405194856106db565b8184526024602085019260051b8201019283116103b857602401905b8282106110fa5750505090565b602080918335611109816105e6565b8152019101906110ed565b346103b8576111223661108c565b61112a61306c565b5f5b81518110156108ba576001906001600160a01b0361114a82856127dd565b51165f5260c860205260405f2060ff19815416905561116981846127dd565b5160a083901b839003167f9354cd337eebad48c93d70f7321b188732c3061fa5c48fe32b8e6f9480c52fcc5f80a20161112c565b634e487b7160e01b5f52602160045260245ffd5b6003111561081757565b9060038210156108175752565b346103b85760203660031901126103b8576004356111e5816105e6565b6111ed6125b1565b5060018060a01b03165f52609960205260405f2061121560ff600160405193610450856106a0565b60405180916105756020604084019280518552015160208401906111bb565b346103b8575f3660031901126103b8575f5460405163237dfb4760e11b8152336004820152906020908290602490829060101c6001600160a01b03165afa80156108eb57611288915f91610a6e5750612536565b5f196001556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b346103b85760203660031901126103b8576020600160ff6112db610b36565b161b806001541614604051908152f35b359061ffff821682036103b857565b346103b85760803660031901126103b857611313610b36565b60603660231901126103b85760405161132b816106c0565b602435611337816104b7565b815260443561ffff811681036103b857602082015260643561ffff811681036103b857604082015261136761306c565b60ff6096541660ff83161015611380576108ba91613469565b60405162461bcd60e51b815260206004820152600660248201526552433a71214560d01b6044820152606490fd5b346103b8575f3660031901126103b8576020600154604051908152f35b346103b8575f3660031901126103b8576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054821015611438575f5260205f2001905f90565b61140f565b346103b85760203660031901126103b857600435609c548110156103b857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c01546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b8576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b346103b8576114e93661108c565b6114f161306c565b5f5b81518110156108ba576001906001600160a01b0361151182856127dd565b51165f5260c860205260405f208260ff1982541617905561153281846127dd565b5160a083901b839003167f8a3be376fdc726be3f3cee8e59ba5698a268a9b59f69cdabcf06d2ec2c90658f5f80a2016114f3565b346103b85760403660031901126103b857600435611583816105e6565b6024356001600160401b0381116103b8576115a2903690600401610dc9565b609e549192916001600160a01b03163303611672576001600160a01b0382165f908152609f602090815260408083204290556099909152902080546001611612816116096116036104706115f860965460ff1690565b610e75368b8e610735565b94612e1f565b94015460ff1690565b61161b816111b1565b14918261165f575b82611646575b505061163157005b6108ba92611640913691610735565b906135c9565b81166001600160c01b0390811691161490505f80611629565b6001600160c01b03821615159250611623565b60405162461bcd60e51b815260206004820152600a602482015269292190b2b532b1ba37b960b11b6044820152606490fd5b346103b8575f3660031901126103b8576116bc61306c565b606480546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b91908260409103126103b857604051611717816106a0565b8092803560ff811681036103b857825260209081013591611737836105e6565b0152565b9092919261174881611075565b9361175660405195866106db565b602085838152019160061b8301928184116103b857915b83831061177a5750505050565b602060409161178984866116ff565b81520192019161176d565b346103b85760a03660031901126103b8576004356117b1816105e6565b60243590604435906001600160401b0382116103b857366023830112156103b857610575926117ed6117fa93369060248160040135910161173b565b60643591608435936127f1565b6040519081529081906020820190565b346103b85760203660031901126103b8576020611828600435612e1f565b6040516001600160c01b039091168152f35b346103b8575f3660031901126103b8575f5460405160109190911c6001600160a01b03168152602090f35b346103b8575f3660031901126103b8576064546040516001600160a01b039091168152602090f35b346103b8575f3660031901126103b857602060ff60965416604051908152f35b6101009060431901126103b857604490565b9181601f840112156103b8578235916001600160401b0383116103b8576020808501948460061b0101116103b857565b9190916060818403126103b85760405190611909826106c0565b819381356001600160401b0381116103b85782019181601f840112156103b85761193d604093928360208695359101610735565b8452602081013560208501520135910152565b346103b8576101a03660031901126103b8576004356001600160401b0381116103b857611981903690600401610dc9565b906024356001600160401b0381116103b8576119a1903690600401610dc9565b6119aa366118ad565b90610144356001600160401b0381116103b8576119cb9036906004016118bf565b929091610164356001600160401b0381116103b8576119ee9036906004016118ef565b9461018435976001600160401b0389116103b857611a136108ba9936906004016118ef565b976128ac565b346103b8575f3660031901126103b8576040517f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03168152602090f35b346103b8575f3660031901126103b85760206040517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de68152f35b346103b8576101603660031901126103b8576004356001600160401b0381116103b857611ac8903690600401610dc9565b906024356001600160401b0381116103b857611ae8903690600401610dc9565b9092611af3366118ad565b92610144356001600160401b0381116103b857611b5c95611b4d611b1e611b559336906004016118ef565b96611b2f6103fe6001808054161490565b335f5260c8602052611b4760ff60405f205416612a07565b33613966565b943691610735565b9233613dd8565b5180511561143857602063ffffffff910151165f8052609760205263ffffffff60405f20541610611b8957005b60405162461bcd60e51b81526020600482015260066024820152650714d61784f760d41b6044820152606490fd5b346103b8575f3660031901126103b857602060a054604051908152f35b60206040818301928281528451809452019201905f5b818110611bf75750505090565b825163ffffffff16845260209384019390920191600101611bea565b346103b85760403660031901126103b857600435611c30816104b7565b602435906001600160401b0382116103b857366023830112156103b857816004013591611c5c83611075565b92611c6a60405194856106db565b8084526024602085019160051b830101913683116103b857602401905b828210611ca757610575611c9b8686612ab4565b60405191829182611bd4565b8135815260209182019101611c87565b346103b8575f3660031901126103b85760206040517f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8152f35b346103b85760203660031901126103b8576004356001600160401b0381116103b857611d38611d276108ba923690600401610dc9565b611031600280600154161415612338565b336135c9565b346103b8575f3660031901126103b8576020609c54604051908152f35b6001600160601b038116036103b857565b81601f820112156103b857803590611d8382611075565b92611d9160405194856106db565b82845260208085019360061b830101918183116103b857602001925b828410611dbb575050505090565b6040848303126103b85760206040918251611dd5816106a0565b8635611de0816105e6565b815282870135611def81611d5b565b83820152815201930192611dad565b346103b857366003190160a081126103b8576060136103b857604051611e23816106c0565b600435611e2f816104b7565b815260243561ffff811681036103b857602082015260443561ffff811681036103b857604082015260643590611e6482611d5b565b608435916001600160401b0383116103b857611e876108ba933690600401611d6c565b91611e9061306c565b6144df565b81601f820112156103b857803590611eac82611075565b92611eba60405194856106db565b828452602060608186019402830101918183116103b857602001925b828410611ee4575050505090565b6060848303126103b8576020606091604051611eff816106c0565b8635611f0a816104b7565b8152611f178388016112eb565b83820152611f27604088016112eb565b6040820152815201930192611ed6565b9080601f830112156103b8578135611f4e81611075565b92611f5c60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210611f845750505090565b602080918335611f9381611d5b565b815201910190611f77565b9080601f830112156103b8578135611fb581611075565b92611fc360405194856106db565b81845260208085019260051b820101918383116103b85760208201905b838210611fef57505050505090565b81356001600160401b0381116103b85760209161201187848094880101611d6c565b815201910190611fe0565b346103b8576101003660031901126103b8576120366105f7565b61203e610606565b90612047610613565b61204f61083d565b60843560a4356001600160401b0381116103b857612071903690600401611e95565b9160c4356001600160401b0381116103b857612091903690600401611f37565b9360e435966001600160401b0388116103b8576120b56108ba983690600401611f9e565b96612b8b565b346103b85760203660031901126103b85760ff6120d6610b36565b6120de612593565b50165f52609760205261057560405f2061ffff604051916120fe836106c0565b5463ffffffff81168352818160201c16602084015260301c16604082015260405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b346103b85760203660031901126103b85760043561216c816105e6565b61217461306c565b6001600160a01b0381161561218c576108ba906138a4565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103b85760203660031901126103b8576004355f5460405163755b36bd60e11b8152906020908290600490829060101c6001600160a01b03165afa80156108eb5761223d915f916108bc57506001600160a01b031633146124bf565b6001541981198116036122875761225381600155565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c908060208101610812565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b346103b85760203660031901126103b85760043561230f816105e6565b60018060a01b03165f526099602052602060ff600160405f20015416610dc760405180926111bb565b1561233f57565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b91908110156114385760051b0190565b3561239e816105e6565b90565b60038210156108175752565b906106046040516123bd816106a0565b602060ff600183968054855201541691016123a1565b906040516123e0816106c0565b604081935463ffffffff8116835263ffffffff8160201c166020840152811c910152565b1561240b57565b606460405162461bcd60e51b815260206004820152600460248201526331371e1960e11b6044820152fd5b1561243d57565b60405162461bcd60e51b81526020600482015260056024820152646f2152656760d81b6044820152606490fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061239e92818152019061246a565b908160209103126103b8575161239e816105e6565b6040513d5f823e3d90fd5b156124c657565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b908160209103126103b8575180151581036103b85790565b1561253d57565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b604051906125a0826106c0565b5f6040838281528260208201520152565b604051906125be826106a0565b5f6020838281520152565b61262a61239e916125d86125b1565b50604080517f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de6602082019081526001600160a01b03909316818301529081526126226060826106db565b519020613277565b6132c4565b1561263657565b60405162461bcd60e51b81526020600482015260066024820152653931a8a632b760d11b6044820152606490fd5b90156114385790565b90821015611438570190565b91908110156114385760051b81013590601e19813603018212156103b85701908135916001600160401b0383116103b8576020018260051b360381136103b8579190565b908160209103126103b8575161239e816104b7565b156126d957565b60405162461bcd60e51b81526020600482015260086024820152673931a8a7b82632b760c11b6044820152606490fd5b1561271057565b60405162461bcd60e51b815260206004820152600860248201526772634f702152656760c01b6044820152606490fd5b1561274757565b60405162461bcd60e51b8152602060048201526007602482015266072634475704f760cc1b6044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b906001820180921161279857565b612776565b9190820180921161279857565b906001116103b85790600190565b909392938483116103b85784116103b8578101920390565b8051156114385760200190565b80518210156114385760209160051b010190565b919493909260405192602084019460e08501917f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a875260018060a01b03166040860152606085015260c060808501528651809152602061010085019701905f5b81811061287e5750505061239e949561262292849260a084015260c083015203601f1981018352826106db565b8251805160ff168a526020908101516001600160a01b0316818b015260409099019890920191600101612851565b611b55819893839a956110316128f5612908999b9a9b6128d26103fe6001808054161490565b335f5260c86020526128ea60ff60405f205416612a07565b611b47888d14612a45565b96612901368c8e61173b565b8833613a9c565b9361293561293061291f610edb610ecd8589612664565b60ff165f52609760205260405f2090565b612a77565b9261294d61294387516127d0565b5163ffffffff1690565b63ffffffff61296c612963875163ffffffff1690565b63ffffffff1690565b91161161297c575b505050505050565b60206129f0611031946129f6936129eb611640986129fc9b6129a4610edb610ecd8b8f612664565b6129d06129bb896129c86129bb60408701516127d0565b516001600160601b031690565b9401516127d0565b906129e36129de8888612664565b612aa9565b923391614230565b612664565b01612394565b936127aa565b5f8080808080612974565b15612a0e57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b6044820152606490fd5b15612a4c57565b606460405162461bcd60e51b815260206004820152600460248201526338a632b760e11b6044820152fd5b90604051612a84816106c0565b604061ffff82945463ffffffff81168452818160201c16602085015260301c16910152565b61239e9036906116ff565b9190805190612ac282611075565b91612ad060405193846106db565b808352612adf601f1991611075565b013660208401375f5b8151811015612b215780612b08612b01600193856127dd565b5187614386565b63ffffffff612b1783876127dd565b9116905201612ae8565b5090925050565b15612b2f57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b9694929091612bd59694925f5498612bbb60ff8b60081c16151515809b81612c4f575b8115612c2f575b50612b28565b89612bcc600160ff195f5416175f55565b612c1857612cf3565b612bdb57565b612be961ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b612c2a61010061ff00195f5416175f55565b612cf3565b303b15915081612c41575b505f612bb5565b60ff1660011490505f612c3a565b600160ff8216109150612bae565b15612c6457565b60405162461bcd60e51b8152602060048201526002602482015261494560f01b6044820152606490fd5b609c54600160401b8110156106bb5760018101609c55609c5481101561143857609c5f527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0180546001600160a01b0319166001600160a01b03909216919091179055565b612d2994610d019394612d24610cd4939b9a999b612d1f8d8b5190518091149081612e06575b50612c5d565b6138a4565b614669565b612d5b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316612c8e565b612d8d7f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316612c8e565b612dbf7f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316612c8e565b5f5b8151811015612dff5780612df9612dda600193856127dd565b51612de86129bb848a6127dd565b612df284886127dd565b51916144df565b01612dc1565b5050509050565b90508c51145f612d19565b5f1981019190821161279857565b805f52609860205260405f20549081155f14612e3b5750505f90565b5f52609860205260405f20905f19810190811161279857612e5b91611423565b505460401c90565b90612e6d8261071a565b612e7a60405191826106db565b8281528092612e8b601f199161071a565b0190602036910137565b5f1981146127985760010190565b908151811015611438570160200190565b5f81805b612f2e5750612eca9061ffff16612e63565b5f5f5b8251821080612f23575b15612f1c576001811b8416612ef5575b612ef090612e95565b612ecd565b906001612ef09160ff60f81b8460f81b165f1a612f128287612ea3565b5301919050612ee7565b5050905090565b506101008110612ed7565b5f1981018181116127985761ffff9116911661ffff8114612798576001019080612eb8565b908160209103126103b857516001600160c01b03811681036103b85790565b61239e939260609260018060a01b031682526020820152816040820152019061246a565b919060016020820151612fa8816111b1565b612fb1816111b1565b0361306757516040516333567f7f60e11b81529160209183918291612fdb91908760048501612f72565b03815f7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19081156108eb575f91613038575b506001600160c01b0316908161302c575050565b61164061060492612eb4565b61305a915060203d602011613060575b61305281836106db565b810190612f53565b5f613018565b503d613048565b505050565b6064546001600160a01b0316330361308057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381161561313e575f54604080516001600160a01b0360109390931c8316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a15f805462010000600160b01b03191660109290921b62010000600160b01b0316919091179055565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b609d54604080516001600160a01b038084168252841660208201529192917f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c9190a16001600160a01b03166001600160a01b03199190911617609d55565b609e54604080516001600160a01b038084168252841660208201529192917f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc99190a16001600160a01b03166001600160a01b03199190911617609e55565b61327f614750565b9060405190602082019261190160f01b845260228301526042820152604281526132aa6062826106db565b51902090565b634e487b7160e01b5f52601260045260245ffd5b5f5160206150af5f395f51905f52906132db6125b1565b505f919006602060c0835b6133db575f935f5160206150af5f395f51905f526003818681818009090860405161331185826106db565b8436823784818560405161332582826106db565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f5160206150af5f395f51905f5260a082015260056107cf195a01fa80156133e05761338f90614dab565b51916133db575f5160206150af5f395f51905f52828009146133c657505f5160206150af5f395f51905f5260015f940892936132e6565b929350506133d26106fc565b92835282015290565b6132b0565bfe5b9060016133f060ff936148e8565b928392161b11156133fe5790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b61352760ff7f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac921692835f52609760205260405f206134bf63ffffffff835116829063ffffffff1663ffffffff19825416179055565b6020820151815465ffff0000000067ffff000000000000604086015160301b169260201b169067ffffffff0000000019161717905560405191829182919091604061ffff81606084019563ffffffff8151168552826020820151166020860152015116910152565b0390a2565b1561353357565b606460405162461bcd60e51b8152602060048201526004602482015263071456d760e41b6044820152fd5b1561356557565b606460405162461bcd60e51b815260206004820152600460248201526310a9bab160e11b6044820152fd5b6001600160a01b03909116815260406020820181905261239e9291019061246a565b60409061239e93928152816020820152019061246a565b6001600160a01b0381165f9081526099602052604090209060018254920161360660016135f7835460ff1690565b613600816111b1565b14612436565b61366661362161047061361b60965460ff1690565b876133e2565b61362a85612e1f565b6001600160c01b039091169061364182151561352c565b6136578282166001600160c01b0316831461355e565b9019166001600160c01b031690565b6136708185614a4b565b6001600160c01b0316156137e9575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b857835f916136d5938360405180968195829463f4e24fe560e01b845260048401613590565b03925af180156108eb576137d5575b507f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316803b156103b8575f604051809263bd29b8cd60e01b82528183816137378989600484016135b2565b03925af180156108eb576137c1575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b031691823b156103b85761379c925f928360405180968195829463bd29b8cd60e01b8452600484016135b2565b03925af180156108eb576137ad5750565b806137bb5f610604936106db565b806105b4565b806137bb5f6137cf936106db565b5f613746565b806137bb5f6137e3936106db565b5f6136e4565b805460ff191660021790557f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b8576040516351b27a6d60e11b81526001600160a01b0383166004820152905f908290602490829084905af180156108eb57613890575b50816001600160a01b0382167f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e45f80a35f61367f565b806137bb5f61389e936106db565b5f61385a565b606480546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b908160209103126103b8575190565b61012090604060c0610604959796949761016084019860018060a01b03168452613932602085018260208091803584520135910152565b80830180356060860152602001356080850152826080820160a08601370160e0830137019060208091805184520151910152565b6040516309aa152760e11b81526001600160a01b0382811660048301529091907f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc4916602083602481845afa9283156108eb575f93613a47575b5082156139cd575050905090565b602092506139fd935f6139df846125c9565b6040516317ef39cb60e31b81529687958694859391600485016138fb565b03925af19081156108eb575f91613a18575b50805f80612f1c565b613a3a915060203d602011613a40575b613a3281836106db565b8101906138ec565b5f613a0f565b503d613a28565b613a6191935060203d602011613a4057613a3281836106db565b915f6139bf565b15613a6f57565b60405162461bcd60e51b8152602060048201526005602482015264063684578760dc1b6044820152606490fd5b91929092602082019283515f52609a60205260ff60405f205416613b155761060494613b0d926040850191613ad48351421115613a68565b613af7613aea88515f52609a60205260405f2090565b805460ff19166001179055565b609d546001600160a01b031696519251936127f1565b905191614c95565b60405162461bcd60e51b815260206004820152600660248201526518da14d85b1d60d21b6044820152606490fd5b60405190613b50826106c0565b60606040838281528260208201520152565b15613b6957565b606460405162461bcd60e51b815260206004820152600460248201526308509a5d60e21b6044820152fd5b15613b9b57565b60405162461bcd60e51b815260206004820152600560248201526410b7b822b560d91b6044820152606490fd5b6001602091835181550191015160038110156108175760ff80198354169116179055565b9060018060a01b031681526040602082015260806040613c17845160608386015260a085019061246a565b9360208101516060850152015191015290565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03909116815260406020820181905261239e93910191613c2a565b9080601f830112156103b8578151613c8381611075565b92613c9160405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613cb95750505090565b602080918351613cc881611d5b565b815201910190613cac565b9190916040818403126103b85780516001600160401b0381116103b85783613cfc918301613c6c565b9260208201516001600160401b0381116103b85761239e9201613c6c565b61239e949260609260018060a01b0316825260208201528160408201520191613c2a565b6020818303126103b8578051906001600160401b0382116103b857019080601f830112156103b8578151613d7181611075565b92613d7f60405194856106db565b81845260208085019260051b8201019283116103b857602001905b828210613da75750505090565b602080918351613db6816104b7565b815201910190613d9a565b60409061239e949281528160208201520191613c2a565b91929394817fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa613ea9613e09613b43565b98613e9d613e2c6104708b610e758c613e2460965460ff1690565b923691610735565b613e3586612e1f565b6001600160c01b0390911690613e4c82151561352c565b60018060c01b0316613e66613e618284161590565b613b62565b6001600160a01b038a165f908152609f60205260409020613e9690613e8f905460a0549061279d565b4211613b94565b1785614a4b565b6040519182918261248e565b0390a26001613ed481613ecc8660018060a01b03165f52609960205260405f2090565b015460ff1690565b613edd816111b1565b03614072575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b8575f6040518092631fd93ca960e11b8252818381613f378b8b8b60048501613c4a565b03925af180156108eb5784935f92849261405e575b50613f6c876040519788948594632550477760e01b865260048601613d1a565b0381837f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165af19283156108eb575f938491859161403a575b5060408701526020860152613fd5604051948593849362bff04d60e01b855260048501613dc1565b0381837f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b03165af19081156108eb575f91614018575b50815290565b61403491503d805f833e61402c81836106db565b810190613d3e565b5f614012565b905061405891503d8086833e61405081836106db565b810190613cd3565b5f613fad565b806137bb8561406c936106db565b5f613f4c565b6140a361407d6106fc565b838152600160208201526001600160a01b0385165f908152609960205260409020613bc8565b7f000000000000000000000000851356ae760d987e095750cceb3bc6014560891c6001600160a01b0316803b156103b857604051639926ee7d60e01b8152915f9183918290849082906140fa908a60048401613bec565b03925af180156108eb5761413f575b50806001600160a01b0383167fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe5f80a35f613ee3565b806137bb5f61414d936106db565b5f614109565b1561415a57565b60405162461bcd60e51b815260206004820152600360248201526206368360ec1b6044820152606490fd5b1561418c57565b60405162461bcd60e51b815260206004820152600360248201526263683160e81b6044820152606490fd5b908160209103126103b8575161239e81611d5b565b156141d357565b60405162461bcd60e51b815260206004820152600360248201526231b41960e91b6044820152606490fd5b1561420557565b60405162461bcd60e51b815260206004820152600360248201526263683360e81b6044820152606490fd5b6020919261428d6142806142b89896976142796142558783015160018060a01b031690565b6001600160a01b039081165f81815260996020526040902054969091161415614153565b5160ff1690565b60ff808516911614614185565b604051635401ed2760e01b8152600481019190915260ff909116602482015294859081906044820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa9283156108eb57610604945f9461433c575b50826143349261432f61431b936001600160601b0361432761431b82998b614d6a565b6001600160601b031690565b9116116141cc565b614d8d565b9116106141fe565b61431b919450926143349261432f6143736001600160601b039660203d60201161437f575b61436b81836106db565b8101906141b7565b969350509250926142f8565b503d614361565b815f52609860205260405f2054905f5b8281106143ca5760405162461bcd60e51b81526020600482015260056024820152644f2152656760d81b6044820152606490fd5b808303838111612798576129636143e091612e11565b6144096143fe826143f9885f52609860205260405f2090565b611423565b505463ffffffff1690565b63ffffffff808516911611156144225750600101614396565b935050505090565b1561443157565b606460405162461bcd60e51b81526020600482015260046024820152630e29ac2f60e31b6044820152fd5b60ff60019116019060ff821161279857565b6080906001600160601b036020939460ff60608401961683521683820152606060408201528451809452019201905f5b8181106144ab5750505090565b825180516001600160a01b031685526020908101516001600160601b0316818601526040909401939092019160010161449e565b91906145226144f060965460ff1690565b9361450060c060ff87161061442a565b61451c61450c8661445c565b60ff1660ff196096541617609655565b84613469565b7f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031691823b156103b857614578925f928360405180968195829463ff694a7760e01b84528a6004850161446e565b03925af180156108eb57614655575b507f00000000000000000000000095401dc811bb5740090279ba06cfa8fcf61137786001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff83166004820152905f908290602490829084905af180156108eb57614641575b507f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b0316803b156103b85760405163136ca0f960e11b815260ff90921660048301525f9082908183816024810161379c565b806137bb5f61464f936106db565b5f6145e8565b806137bb5f614663936106db565b5f614587565b5f5460101c6001600160a01b0316158061473e575b156146c3578161469061060493600155565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a26130c4565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b038116151561467e565b307f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5706001600160a01b0316148061483d575b156147ab577fd8cea607dc87be4701da97f1f02070e2cf469db0dbbbfc55a7d169f75da1f4bc90565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d1160408201527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608201524660808201523060a082015260a081526132aa60c0826106db565b507f0000000000000000000000000000000000000000000000000000000000007a694614614782565b1561486d57565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614966578151156149615761492461491a610edb61490c856127d0565b516001600160f81b03191690565b60ff600191161b90565b6001905b835182101561495c5760019061494761491a610edb61490c8689612ea3565b90614953818311614866565b17910190614928565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b8054600160401b8110156106bb576149fa91600182018155611423565b614a3857815160208084015160409485015163ffffffff909316911b67ffffffff00000000161767ffffffffffffffff199190931b16919091179055565b634e487b7160e01b5f525f60045260245ffd5b90614a5e825f52609860205260405f2090565b5480614aab5750614a7a610604925f52609860205260405f2090565b614aa6614a8561070b565b4363ffffffff168152925b5f60208501526001600160c01b03166040840152565b6149dd565b91614ad663ffffffff93614ad0614aca845f52609860205260405f2090565b91612e11565b90611423565b5090614ae6825463ffffffff1690565b43851694168403614b1157506106049250906001600160401b0382549181199060401b169116179055565b815467ffffffff000000001916602085901b67ffffffff000000001617909155610604929190614aa690614b4d905f52609860205260405f2090565b91614a90614b5961070b565b63ffffffff9095168552565b15614b6c57565b60405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a490fd5b908160209103126103b857516001600160e01b0319811681036103b85790565b15614c0e57565b60405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a490fd5b90813b15614d275791602091614cc193604051809581948293630b135d3f60e11b8452600484016135b2565b03916001600160a01b03165afa80156108eb57610604915f91614cf8575b506001600160e01b031916630b135d3f60e11b14614c07565b614d1a915060203d602011614d20575b614d1281836106db565b810190614be7565b5f614cdf565b503d614d08565b61060492614d3491614df7565b6001600160a01b03908116911614614b65565b906001600160601b03809116911602906001600160601b03821691820361279857565b614d886001600160601b039161ffff60206127109501511690614d47565b160490565b614d886001600160601b039161ffff60406127109501511690614d47565b15614db257565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b61239e91614e0491614e0c565b919091614e84565b815160418103614e38575090614e3491602082015190606060408401519301515f1a90615005565b9091565b604003614e715760406020830151920151918260ff1c91601b830180931161279857614e34936001600160ff1b03169260ff1690615005565b50505f90600290565b6005111561081757565b614e8d81614e7a565b80614e955750565b614e9e81614e7a565b60018103614eeb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b614ef481614e7a565b60028103614f415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b614f4a81614e7a565b60038103614fa25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b80614fae600492614e7a565b14614fb557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608490fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116150a35760ff16601b81141580615098575b61508d576020935f93604051938493608085019385528785015260408401526060830152838052039060015afa156108eb575f516001600160a01b0381161561508557905f90565b505f90600190565b505050505f90600490565b50601c81141561503d565b505050505f9060039056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a264697066735822122008e52422e3bba4dbde50639da22bb14dc5549ff1da95556698281d1600612a1464736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x4826533b4897376654bb4d4ad88b7fafd0c98528": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610011575f80fd5b5f3560e01c8062bff04d146106b157806312d1d74d1461066c57806326d941f21461057f5780632ed583e5146104e55780636d14a987146104a15780638121906f1461046557806389026245146102f6578063a48bb0ac14610279578063bd29b8cd14610132578063caa3cd7614610118578063e2e68580146100d45763f34109221461009c575f80fd5b346100d05760203660031901126100d057602063ffffffff6100c46100bf6108cd565b610cb2565b54821c16604051908152f35b5f80fd5b346100d05760403660031901126100d05760ff6100ef6108cd565b165f52600160205260405f206024355f52602052602063ffffffff60405f205416604051908152f35b346100d0575f3660031901126100d05760206040515f8152f35b346100d05761014036610879565b9190610176337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b4363ffffffff16915f5b84811061018957005b8061019760019287866109ea565b3560f81c805f5260036020526101b260405f20541515610a0a565b805f528260205260405f20845f5260205263ffffffff60405f2054166101d782610cb2565b916101f66101ee63ffffffff855460201c16610a74565b809483610e78565b6102008382610c76565b928584018963ffffffff8254965416145f1461023d575f9150555b82860361022c575b50505001610180565b61023592610bc1565b868080610223565b50815f52600260205263ffffffff60405f2091165f5260205261027460405f20610265610978565b908a82525f6020830152610b7b565b61021b565b346100d05760403660031901126100d0576102f26102cd6102c761029b6108cd565b60ff6102a56108dd565b915f60206102b1610978565b8281520152165f52600360205260405f20610abf565b50610b5b565b60405191829182919091602063ffffffff816040840195828151168552015116910152565b0390f35b346100d05760403660031901126100d05761030f6108cd565b6103176108dd565b9063ffffffff6103278383610ce4565b16610339610334826109d2565b6109ac565b92818452610346826109d2565b602085019390601f19013685375f5b8381106103a0578486604051918291602083019060208452518091526040830191905f5b818110610387575050500390f35b8251845285945060209384019390920191600101610379565b6103b18363ffffffff831684610ddf565b6103bb8288610a8c565b526103c68187610a8c565b51156103d457600101610355565b60405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a490fd5b346100d05760203660031901126100d0576102f26102cd61049c6104876108cd565b5f6020610492610978565b8281520152610cb2565b610b5b565b346100d0575f3660031901126100d0576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b346100d05760603660031901126100d0576104fe6108cd565b6105066108dd565b6044359163ffffffff831683036100d0576102f29261055c9260ff610556935f6020610530610978565b8281520152165f52600260205263ffffffff60405f2091165f5260205260405f20610b42565b50610aa0565b60405191829182919091602080604083019463ffffffff81511684520151910152565b346100d05760203660031901126100d05760ff61059a6108cd565b6105ce337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b16805f52600360205260405f205461060d575f52600360205261060b60405f206105f6610978565b9063ffffffff431682525f6020830152610ad4565b005b60405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b6064820152608490fd5b346100d05760403660031901126100d0576102f261055c6106ac61068e6108cd565b6106966108dd565b905f60206106a2610978565b8281520152610c76565b610aa0565b346100d0576106bf36610879565b906106f4337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146108f0565b610700610334836109d2565b9282845261070d836109d2565b602085019390601f19013685375f5b81811061076d578486604051918291602083019060208452518091526040830191905f5b81811061074e575050500390f35b825163ffffffff16845285945060209384019390920191600101610740565b6107788183866109ea565b3560f81c90815f52600360205261079460405f20541515610a0a565b61079d82610cb2565b600163ffffffff825460201c16019063ffffffff821161086557836107c88361080393600197610e78565b805f52600260205260405f2063ffffffff6107e285610a74565b165f5260205260405f20541561081c575b6107fc83610a74565b9087610bc1565b63ffffffff610812838a610a8c565b911690520161071c565b805f52600260205260405f2063ffffffff61083685610a74565b165f5260205261086060405f2061084b610978565b9063ffffffff431682525f6020830152610b7b565b6107f3565b634e487b7160e01b5f52601160045260245ffd5b60406003198201126100d0576004359160243567ffffffffffffffff81116100d057826023820112156100d05780600401359267ffffffffffffffff84116100d057602484830101116100d0576024019190565b6004359060ff821682036100d057565b6024359063ffffffff821682036100d057565b156108f757565b60405162461bcd60e51b815260206004820152604d60248201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960448201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260648201526c3c9031b7b7b93234b730ba37b960991b608482015260a490fd5b604051906040820182811067ffffffffffffffff82111761099857604052565b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761099857604052565b67ffffffffffffffff81116109985760051b60200190565b908210156109f6570190565b634e487b7160e01b5f52603260045260245ffd5b15610a1157565b60405162461bcd60e51b815260206004820152603560248201527f496e64657852656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b6064820152608490fd5b63ffffffff5f199116019063ffffffff821161086557565b80518210156109f65760209160051b010190565b906001610aab610978565b9263ffffffff815416845201546020830152565b80548210156109f6575f5260205f2001905f90565b8054600160401b81101561099857610af191600182018155610abf565b610b2f578151815460209384015167ffffffffffffffff1990911663ffffffff9290921691909117921b67ffffffff0000000016919091179055565b565b634e487b7160e01b5f525f60045260245ffd5b80548210156109f6575f5260205f209060011b01905f90565b9063ffffffff610b69610978565b9254818116845260201c166020830152565b8054600160401b81101561099857610b9891600182018155610b42565b919091610b2f5760208163ffffffff8060019451161663ffffffff198554161784550151910155565b9160409063ffffffff60ff7f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f69486610bf98583610c76565b80544386169086168103610c3c5750600101555b1691825f526001602052835f20865f52602052835f2082821683198254161790558351928352166020820152a2565b9050610c7191508383165f526002602052865f208587165f52602052865f20610c63610978565b918252896020830152610b7b565b610c0d565b60ff165f90815260026020908152604080832063ffffffff9490941683529290522080545f19810190811161086557610cae91610b42565b5090565b60ff165f90815260036020526040902080545f19810190811161086557610cae91610abf565b8015610865575f190190565b60ff1690815f52600360205260405f2054805b610d845760405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a490fd5b825f52600360205260405f205f1982019082821161086557610da9916102c791610abf565b63ffffffff81511663ffffffff84161015610dce5750610dc890610cd8565b80610cf7565b6020015163ffffffff169392505050565b60ff909291921691825f52600260205260405f2063ffffffff82165f5260205260405f2054805b610e1257505050505f90565b835f52600260205260405f2063ffffffff83165f5260205260405f205f1982019082821161086557610e479161055691610b42565b63ffffffff81511663ffffffff85161015610e6c5750610e6690610cd8565b80610e06565b60200151949350505050565b919063ffffffff81541663ffffffff43168091145f14610eba5750610b2d92509067ffffffff0000000082549160201b169067ffffffff000000001916179055565b91905060ff610b2d93165f52600360205263ffffffff60405f2091610edd610978565b938452166020830152610ad456fea264697066735822122053d4af3d0c4f2686c612617d49f8b839866038606635662e26fbfc230a697ada64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x4c5859f0f772848b2d91f1d83e2fe57935348029": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610022575b3615610018575f80fd5b610020613ef5565b005b5f3560e01c806306045a91146102ec57806310d67a2f146102e7578063136439dd146102e2578063137122b5146102dd578063171f1d5b146102d857806318daeeaf146102d35780632e1a7d4d146102ce57806333cfb7b7146102c95780633bc28c8c146102c4578063416c7e5e146102bf5780634223d551146102ba5780634a5bf632146102b55780634ae07c37146102b0578063595c6a67146102ab5780635ac86ab7146102a65780635c975abb146102a15780635df459461461029c57806368304835146102975780636b3aa72e146102925780636d14a9871461028d57806370a0823114610238578063715018a614610288578063886f1195146102835780638da5cb5b1461027e57806395c6d604146102795780639926ee7d14610274578063a364f4da1461026f578063a98fb3551461026a578063ab21739a14610265578063b099627e14610260578063b753645e1461025b578063b98d090814610256578063d66eaabd14610251578063df5cf7231461024c578063e481af9d14610247578063ea5ca34b14610242578063f2fde38b1461023d578063f474b52014610238578063f7013ef614610233578063f9120af61461022e578063fa534dc014610229578063fabc1cbc14610224578063fc299dee1461021f578063fce36c7d1461021a5763fd4c3b7c0361000e57611f10565b611eb5565b611e8d565b611d7f565b611c81565b611c3a565b611b1e565b6110e5565b611a8d565b611a70565b611a55565b611a11565b611838565b611816565b6117f5565b6117ac565b611457565b61139d565b6112d4565b611249565b6111f8565b6111a3565b61117b565b611120565b6110a1565b61105d565b611019565b610fd5565b610fb8565b610f85565b610eff565b610e76565b610b7c565b610b3f565b610a0c565b6109d5565b6109a1565b610887565b61082d565b6107c5565b61068d565b610548565b6104a6565b61042b565b606435906001600160601b03198216820361030857565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761033b57604052565b61030c565b606081019081106001600160401b0382111761033b57604052565b90601f801991011681019081106001600160401b0382111761033b57604052565b6040519061038c6101008361035b565b565b6040519061038c60408361035b565b9061038c604051928361035b565b6001600160401b03811161033b57601f01601f191660200190565b9291926103d2826103ab565b916103e0604051938461035b565b829481845281830111610308578281602093845f960137010152565b9080601f8301121561030857816020610417933591016103c6565b90565b6001600160a01b0381160361030857565b34610308576101003660031901126103085760243560443560043561044e6102f1565b9260a435926084356001600160401b038511610308576104a2956104796104909636906004016103fc565b9260c4359460e4359661048b8861041a565b611fb5565b60405190151581529081906020820190565b0390f35b3461030857602036600319011261030857600480356104c48161041a565b60fb5460405163755b36bd60e11b81529260209184919082906001600160a01b03165afa918215610543576100209261050f915f91610514575b506001600160a01b031633146120de565b613ff6565b610536915060203d60201161053c575b61052e818361035b565b8101906120be565b5f6104fe565b503d610524565b6120d3565b346103085760203660031901126103085760043560fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa80156105435761059f915f91610653575b50612152565b60fc54818116036105e8578060fc557fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d604051806105e33394829190602083019252565b0390a2005b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b610675915060203d60201161067b575b61066d818361035b565b81019061213d565b5f610599565b503d610663565b60ff81160361030857565b346103085760203660031901126103085760206004356106ac81610682565b60cc54600160ff60405193161b1615158152f35b60409060e319011261030857604051906106d982610320565b60e4358252610104356020830152565b91908260409103126103085760405161070181610320565b6020808294803584520135910152565b9080601f83011215610308576040519161072c60408461035b565b82906040810192831161030857905b8282106107485750505090565b813581526020918201910161073b565b9060806063198301126103085760405161077181610320565b602061078c8294610783816064610711565b845260a4610711565b910152565b919060808382031261030857602061078c604051926107af84610320565b604084966107bd8382610711565b865201610711565b34610308576101203660031901126103085760043560403660231901126103085761081d60409182516107f781610320565b6024358152604435602082015261080d36610758565b90610817366106c0565b926121ed565b8251911515825215156020820152f35b346103085760203660031901126103085760ff60043561084c81610682565b610854614565565b166001811b1960cc541660cc557f5f52704e8e0190647930ccde0e43e14e89902d7d8c49c5f9e2544029f45ec12a5f80a2005b34610308576020366003190112610308576004356108b26108ac60088060fc54161490565b15611f69565b335f5260ca6020528060405f20541061092b57335f90815260ca6020526040812090918291829182916108e68282546122fa565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a2818115610922575b3390f11561054357005b506108fc610918565b335f90815260ca6020526040902061095c91905b54632e2a182f60e11b5f5233600452602491909152604452606490565b5ffd5b60206040818301928281528451809452019201905f5b8181106109825750505090565b82516001600160a01b0316845260209384019390920191600101610975565b34610308576020366003190112610308576104a26109c96004356109c48161041a565b612493565b6040519182918261095f565b34610308576020366003190112610308576100206004356109f58161041a565b6109fd614565565b61465b565b8015150361030857565b3461030857602036600319011261030857600435610a2981610a02565b604051638da5cb5b60e01b81526020816004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa908115610543575f91610b20575b506001600160a01b03163303610a8f57610020906146b9565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b610b39915060203d60201161053c5761052e818361035b565b5f610a76565b602036600319011261030857610020600435610b5a8161041a565b610b6b60108060fc54161415611f69565b34906146f7565b5f91031261030857565b34610308575f3660031901126103085760cb546040516001600160a01b039091168152602090f35b6024359063ffffffff8216820361030857565b359063ffffffff8216820361030857565b6001600160401b03811161033b5760051b60200190565b9080601f83011215610308578135610bf681610bc8565b92610c04604051948561035b565b81845260208085019260051b82010192831161030857602001905b828210610c2c5750505090565b60208091610c3984610bb7565b815201910190610c1f565b81601f82011215610308578035610c5a81610bc8565b92610c68604051948561035b565b81845260208085019260061b8401019281841161030857602001915b838310610c92575050505090565b6020604091610ca184866106e9565b815201920191610c84565b9080601f83011215610308578135610cc381610bc8565b92610cd1604051948561035b565b81845260208085019260051b820101918383116103085760208201905b838210610cfd57505050505090565b81356001600160401b03811161030857602091610d1f87848094880101610bdf565b815201910190610cee565b9190916101808184031261030857610d4061037c565b9281356001600160401b0381116103085781610d5d918401610bdf565b845260208201356001600160401b0381116103085781610d7e918401610c44565b602085015260408201356001600160401b0381116103085781610da2918401610c44565b6040850152610db48160608401610791565b6060850152610dc68160e084016106e9565b60808501526101208201356001600160401b0381116103085781610deb918401610bdf565b60a08501526101408201356001600160401b0381116103085781610e10918401610bdf565b60c08501526101608201356001600160401b03811161030857610e339201610cac565b60e0830152565b90602080835192838152019201905f5b818110610e575750505090565b82516001600160601b0316845260209384019390920191600101610e4a565b3461030857606036600319011261030857600435610e92610ba4565b90604435906001600160401b03821161030857610ef592610eba610ec0933690600401610d2a565b91612c68565b604051928392604084526020610ee182516040808801526080870190610e3a565b910151848203603f19016060860152610e3a565b9060208301520390f35b34610308575f3660031901126103085760fb5460405163237dfb4760e11b815233600482015290602090829060249082906001600160a01b03165afa801561054357610f51915f916106535750612152565b5f1960fc556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2005b34610308576020366003190112610308576020600160ff600435610fa881610682565b161b8060fc541614604051908152f35b34610308575f36600319011261030857602060fc54604051908152f35b34610308575f366003190112610308576040517f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc496001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03168152602090f35b34610308575f366003190112610308576040517f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b03168152602090f35b34610308575f366003190112610308576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b34610308576020366003190112610308576004356111028161041a565b60018060a01b03165f5260ca602052602060405f2054604051908152f35b34610308575f36600319011261030857611138614565565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610308575f3660031901126103085760fb546040516001600160a01b039091168152602090f35b34610308575f366003190112610308576033546040516001600160a01b039091168152602090f35b9181601f84011215610308578235916001600160401b038311610308576020838186019501011161030857565b34610308576040366003190112610308576004356001600160401b0381116103085761123a61122d60209236906004016111cb565b91906024359236916103c6565b82815191012014604051908152f35b34610308576040366003190112610308576004356112668161041a565b602435906001600160401b0382116103085760606003198336030112610308576040519061129382610340565b82600401356001600160401b03811161030857610020936112bc604492600436918401016103fc565b84526024810135602085015201356040830152613551565b34610308575f6020366003190112610308576004356112f28161041a565b611326337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031690813b15610308576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af1801561054357611391575080f35b61002091505f9061035b565b34610308575f6020366003190112610308576004356001600160401b0381116103085736602382011215610308576113df9036906024816004013591016103c6565b6113e7614565565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316803b156103085760405163a98fb35560e01b815260206004820152915f918391829084908290611445906024830190613631565b03925af1801561054357611391575080f35b34610308576060366003190112610308576004356024356114778161041a565b6044356001600160401b03811161030857611496903690600401610d2a565b60cb546001600160a01b03163381900361179657506114bc6108ac60028060fc54161490565b5a6040805160208101868152606086901b6001600160601b031916928201929092526114f581605481015b03601f19810183528261035b565b5190209161150b835f5260c960205260405f2090565b92835463ffffffff6115208263ffffffff1690565b16156117825760201c60ff1661177057835464ff0000000019166401000000001784556001600160a01b0385165f90815260ca602052604090205493600181015480951061172d575461157b92919063ffffffff1690612c68565b50936115a86001600160601b036115a26115958851612397565b516001600160601b031690565b16613655565b60208601906115d16115c56115c06115958551612397565b613694565b6001600160601b031690565b116116e0575f808080888861163b61163461162f8b8b7f8511746b73275e06971968773119b9601fc501d7bdf3824d8754042d148940e2604051806116258a82919091602081019260018060a01b03169052565b0390a25a906122fa565b6123b5565b3a90613681565b9080821084146116d85750905b6001600160a01b0381165f90815260ca6020526040902061166a8382546122fa565b90556001600160a01b03165f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a260cb546116bf906116b3906001600160a01b031681565b6001600160a01b031690565b8282156116cf575bf11561054357005b506108fc6116c7565b905090611648565b61095c9061170c6115c06115956117056117006115c56115958d51612397565b613655565b9351612397565b63530f5c4560e11b5f526004919091526001600160601b0316602452604490565b61095c868661174c8260018060a01b03165f5260ca60205260405f2090565b54632e2a182f60e11b5f526001600160a01b03909216600452602452604452606490565b634e78d7f960e11b5f5260045260245ffd5b6311cb69a760e11b5f52600482905260245ffd5b632cbe419560e01b5f523360045260245260445ffd5b34610308576020366003190112610308576004355f5260c9602052606060405f206001815491015460ff6040519263ffffffff8116845260201c16151560208301526040820152f35b3461030857602036600319011261030857600435611811614565565b60cc55005b34610308575f36600319011261030857602060ff609754166040519015158152f35b6060366003190112610308576004356024356001600160401b038111610308576118669036906004016111cb565b91906044359261187d6108ac60018060fc54161490565b60408051602081018581523360601b6001600160601b031916928201929092526118aa81605481016114e7565b5190209063ffffffff6118d26118c8845f5260c960205260405f2090565b5463ffffffff1690565b166119fd57346119b5575b335f90815260ca602052604090208590541061199c577f8801fc966deb2c8f563a103c35c9e80740585c292cd97518587e6e7927e6af5593946105e39161198f6119256136b5565b4363ffffffff168082529561194e905f60208401528560408401525f5260c960205260405f2090565b90604060019163ffffffff81511663ffffffff198554161784556020810151151564ff0000000085549160201b169064ff0000000019161784550151910155565b60405194859433866136d3565b335f90815260ca6020526040902061095c90869061093f565b335f90815260ca602052604090206119ce348254612419565b9055335f81815260ca60209081526040918290205491519182525f516020614cf35f395f51905f5291a26118dd565b630c40bc4360e21b5f52600482905260245ffd5b34610308575f366003190112610308576040517f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03168152602090f35b34610308575f366003190112610308576104a26109c9613719565b34610308575f36600319011261030857602060cc54604051908152f35b3461030857602036600319011261030857600435611aaa8161041a565b611ab2614565565b6001600160a01b03811615611aca576100209061497d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346103085760a036600319011261030857600435611b3b8161041a565b611bb2602435611b4a8161041a565b604435611b568161041a565b60643590611b638261041a565b608435925f5495611b98611b82611b7e8960ff9060081c1690565b1590565b80988199611c2c575b8115611c0c575b50613946565b86611ba9600160ff195f5416175f55565b611bf5576139a9565b611bb857005b611bc661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b611c0761010061ff00195f5416175f55565b6139a9565b303b15915081611c1e575b505f611b92565b60ff1660011490505f611c17565b600160ff8216109150611b8b565b3461030857602036600319011261030857600435611c578161041a565b611c5f614565565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055005b346103085760e036600319011261030857604435600435602435611ca36102f1565b916084359260a4356001600160401b03811161030857602094611ccd611d2b9236906004016103fc565b9060c43593611ce36108ac60048060fc54161490565b60405198899788976306045a9160e01b89526004890152602488015260448701526001600160601b0319166064860152608485015261010060a4850152610104840190613631565b9060c48301525f60e48301520381305afa8015610543576104a2915f91611d60575b5060405190151581529081906020820190565b611d79915060203d60201161067b5761066d818361035b565b5f611d4d565b346103085760203660031901126103085760fb5460405163755b36bd60e11b81526004803592602091839182906001600160a01b03165afa801561054357611dd8915f9161051457506001600160a01b031633146120de565b60fc54198119811603611e2257611dee8160fc55565b60405190815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9080602081016105e3565b60405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608490fd5b34610308575f366003190112610308576065546040516001600160a01b039091168152602090f35b34610308576020366003190112610308576004356001600160401b03811161030857366023820112156103085780600401356001600160401b038111610308573660248260051b840101116103085760246100209201613abe565b346103085760203660031901126103085760ff600435611f2f81610682565b611f37614565565b166001811b60cc541760cc557fec54a85c01b5fc7fb41be0f33eabc56f2981110da8317b9817bc7c718f6d7bfe5f80a2005b15611f7057565b60405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606490fd5b9061041797969594939291611fd16108ac60048060fc54161490565b90969092906001600160a01b0381166120875750835b63ffffffff6120016118c8835f5260c960205260405f2090565b161561207b57611b7e61201f612029925f5260c960205260405f2090565b5460201c60ff1690565b6120705760408051602081019485529081019790975260608701919091526001600160601b03191660808601526104179461206781609481016114e7565b51902091613f10565b505050505050505f90565b50505050505050505f90565b6040516120b6816114e760208201948986909160349282526001600160601b03199060601b1660208201520190565b519020611fe7565b9081602091031261030857516104178161041a565b6040513d5f823e3d90fd5b156120e557565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fd5b90816020910312610308575161041781610a02565b1561215957565b60405162461bcd60e51b815260206004820152602860248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526739903830bab9b2b960c11b6064820152608490fd5b634e487b7160e01b5f52603260045260245ffd5b9060028110156121d45760051b0190565b6121af565b634e487b7160e01b5f52601260045260245ffd5b6122c96122a66122cf956122a061229985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261227081610120840103601f19810183528261035b565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614122565b90614168565b926122a06122bb6122b56141f0565b946142e7565b916122c4614403565b614122565b91614437565b9091565b634e487b7160e01b5f52601160045260245ffd5b5f198101919082116122f557565b6122d3565b919082039182116122f557565b90816020910312610308575190565b9081602091031261030857516001600160c01b03811681036103085790565b90816020910312610308575161041781610682565b6040519061235960208361035b565b5f808352366020840137565b9061236f82610bc8565b61237c604051918261035b565b828152809261238d601f1991610bc8565b0190602036910137565b8051156121d45760200190565b9081518110156121d4570160200190565b906201117082018092116122f557565b90602082018092116122f557565b90600182018092116122f557565b90600282018092116122f557565b90600382018092116122f557565b90600482018092116122f557565b90600582018092116122f557565b919082018092116122f557565b6001600160601b0381160361030857565b908160409103126103085760206040519161245183610320565b805161245c8161041a565b8352015161246981612426565b602082015290565b80518210156121d45760209160051b010190565b5f1981146122f55760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f3690911690602081602481855afa90811561054357612513916020915f91612803575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa908115610543575f916127d4575b506001600160c01b0316908115908115612771575b5061276857612549906145bd565b5f91907f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b031690835b8151851015612625576125ce60206125ab6125a561259789876123a4565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa8015610543576001926125ed925f926125f5575b50612419565b940193612579565b61261791925060203d811161261e575b61260f818361035b565b810190612307565b905f6125e7565b503d612605565b612630919450612365565b925f905f5b81518110156127625761264e6125a561259783856123a4565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa918215610543575f92612742575b50905f915b81831061269357505050600101612635565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861270b985f91612714575b50516001600160a01b031690565b92612471565b6001600160a01b039091169052565b612485565b95019190612681565b612735915060403d811161273b575b61272d818361035b565b810190612437565b5f6126e3565b503d612723565b61275b91925060203d811161261e5761260f818361035b565b905f61267c565b50505050565b5061041761234a565b604051639aa1653d60e01b81529150602090829060049082905afa80156105435760ff915f916127a5575b5016155f61253b565b6127c7915060203d6020116127cd575b6127bf818361035b565b810190612335565b5f61279c565b503d6127b5565b6127f6915060203d6020116127fc575b6127ee818361035b565b810190612316565b5f612526565b503d6127e4565b61281a9150823d841161261e5761260f818361035b565b5f6124f3565b6040519061282d82610320565b60606020838281520152565b6040519061284860408361035b565b600182525f6020830152565b1561285b57565b60405162461bcd60e51b815260206004820152604160248201525f516020614d135f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156128c457565b60a460405162461bcd60e51b815260206004820152604460248201525f516020614d135f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b1561292f57565b60405162461bcd60e51b815260206004820152603c60248201525f516020614d135f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b1561298e57565b608460405162461bcd60e51b815260206004820152604060248201525f516020614d135f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b156129ec57565b60405162461bcd60e51b815260206004820152606660248201525f516020614d135f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610308575167ffffffffffffffff19811681036103085790565b15612aa157565b60405162461bcd60e51b815260206004820152606160248201525f516020614d135f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b90816020910312610308575161041781612426565b906001600160601b03809116911603906001600160601b0382116122f557565b15612b6557565b60405162461bcd60e51b815260206004820152604360248201525f516020614d135f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15612bd057565b60405162461bcd60e51b815260206004820152603960248201525f516020614d135f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110612c525750505090565b8251845260209384019390920191600101612c45565b9190612c72612820565b50612c7b612839565b5160408301515114806134ae575b80613498575b8061347d575b612c9e90612854565b612cb0602083015151835151146128bd565b612cc763ffffffff431663ffffffff831610612928565b612ccf61038e565b5f81525f602082015290612ce1612820565b94612cf3612ced612839565b51612365565b6020870152612d03612ced612839565b8652612d0d612820565b90612d1c602086015151612365565b8252612d2c602086015151612365565b6020830152612d39612839565b604051639aa1653d60e01b8152906020826004817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa90811561054357612d91925f9261345c575b5061475a565b965f945b60208701518051871015612f0c57612db087612dc392612471565b5180515f526020015160205260405f2090565b612dd1876020870151612471565b5285612ed7575b612de6866020860151612471565b51602086612e02612df88a8c51612471565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f36165afa91821561054357600192612eb1925f91612eb9575b50838060c01b0316612e82898851612471565b526122a0612e948960208c0151612471565b51612eab8d612ea48c8b51612471565b51166147e1565b90614812565b950194612d95565b612ed1915060203d81116127fc576127ee818361035b565b5f612e6f565b612f07612ee8876020870151612471565b51612f006020870151612efa8a6122e7565b90612471565b5110612987565b612dd8565b50909750612f1f919296959394506148f8565b90612f2c60975460ff1690565b8015613451576040516318891fd760e31b81526020816004817f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b03165afa908115610543575f91613432575b5095909492955b5f965b612f91612839565b518810156133df578661332b575b612fc1612fb3612db08a60408a0151612471565b67ffffffffffffffff191690565b90612fd96125a56125978b612fd4612839565b6123a4565b602087612fed612df88d60a08d0151612471565b604051631a2f32ab60e21b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49165afa9283156105435761308993613074925f916132fd575b5067ffffffffffffffff19918216911614612a9a565b613082896040890151612471565b5190614168565b9061309c6125a56125978a612fd4612839565b6020866130b0612df88c60c08c0151612471565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e165afa8015610543576115958a60208e61314661314d95613158975f916132e0575b506131388585850151612471565b906001600160601b03169052565b0151612471565b6131388a8d51612471565b5f965f5b6020880151518110156132d1578a8a613199613179848451612471565b5161318c6125a561259785612fd4612839565b60ff161c60019081161490565b6131a8575b505060010161315c565b888a9261322d6131ed612df8879f6131e78760e06131de849c60206131d66125a5612597839f612fd4612839565b9a0151612471565b519a0151612471565b51612471565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830195909552919093166064840152829081906084820190565b03817f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b03165afa918215610543576132908e6001948e86955f9261329b575b506126f16131389293519361328b6115958487612471565b612b3e565b019890508a8a61319e565b61313892506132c36126f19160203d81116132ca575b6132bb818361035b565b810190612b29565b9250613273565b503d6132b1565b50600190980197965090612f89565b6132f79150843d81116132ca576132bb818361035b565b5f61312a565b61331e915060203d8111613324575b613316818361035b565b810190612a79565b5f61305e565b503d61330c565b61336560206133426125a56125978c612fd4612839565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03165afa8015610543576133bc915f916133c1575b506133b68463ffffffff891692612419565b116129e5565b612f9f565b6133d9915060203d811161261e5761260f818361035b565b5f6133a4565b60209497506114e7965061341491506134199261342c9661340d929a959a60806060830151920151926121ed565b9190612b5e565b612bc9565b0151604051928391602083019586612c28565b51902090565b61344b915060203d60201161261e5761260f818361035b565b5f612f7f565b5f9590949295612f86565b61347691925060203d6020116127cd576127bf818361035b565b905f612d8b565b50612c9e613489612839565b5160e084015151149050612c95565b506134a1612839565b5160c08301515114612c8f565b506134b7612839565b5160a08301515114612c89565b156134cb57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b613585337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b0316146134c4565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031691823b15610308575f928392604051948580948193639926ee7d60e01b835260018060a01b031660048301526040602483015260406135fa82516060604486015260a4850190613631565b91602081015160648501520151608483015203925af180156105435761361d5750565b8061362b5f61038c9361035b565b80610b72565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906064820291808304606414901517156122f557565b906006820291808304600614901517156122f557565b818102929181159184041417156122f557565b6001600160601b036043911602906001600160601b0382169182036122f557565b604051906136c282610340565b5f6040838281528260208201520152565b95949360609363ffffffff60a0948394600180881b03168a5216602089015260806040890152816080890152838801375f828288010152601f8019910116850101930152565b604051639aa1653d60e01b81527f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031690602081600481855afa80156105435760ff915f91613927575b5016801561391d577f000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e6001600160a01b0316905f9081905b8083106138d957506137b49150612365565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105435760ff915f916138bb575b50168110156138b457604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa918215610543575f92613894575b50905f915b81831061382e575050506001016137b9565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa918215610543576127068b6126f7836126f16116b360019861388b985f916127145750516001600160a01b031690565b9501919061381c565b6138ad91925060203d811161261e5761260f818361035b565b905f613817565b5092505050565b6138d3915060203d81116127cd576127bf818361035b565b5f6137df565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa801561054357600192613914925f926125f55750612419565b920191906137a2565b505061041761234a565b613940915060203d6020116127cd576127bf818361035b565b5f61376a565b1561394d57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b90939291906001600160a01b03811615613a89576001600160a01b03851615613a50576001600160a01b03821615613a1657613a0c613a11926139ef61038c97846149c5565b60018060a01b03166001600160601b0360a01b60cb54161760cb55565b61497d565b614a38565b604051630b0f5aa160e11b815260206004820152601160248201527030b634b3b732b220b3b3b932b3b0ba37b960791b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601060248201526f3932bbb0b93239a4b734ba34b0ba37b960811b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152600c60248201526b34b734ba34b0b627bbb732b960a11b6044820152606490fd5b6065546001600160a01b03163303613cd2577f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b0316915f5b818110613b405750823b1561030857613b2f925f928360405180968195829463fce36c7d60e01b845260048401613de6565b03925af180156105435761361d5750565b5f6020613b9b613b5e6116b383613b5887898b613d52565b01613d74565b6040613b6b86888a613d52565b6040516323b872dd60e01b8152336004820152306024820152910135604482015293849283919082906064820190565b03925af1801561054357613cb6575b50613bbe6116b36020613b58848688613d52565b604051636eb1769f60e11b81523060048201526001600160a01b03861660248201529190602090839060449082905afa801561054357613c616020915f948591613c99575b50613c2e613c196116b385613b58888b8d613d52565b916040613c27878a8c613d52565b0135612419565b60405163095ea7b360e01b81526001600160a01b038a166004820152602481019190915294859283919082906044820190565b03925af191821561054357600192613c7b575b5001613afd565b613c929060203d811161067b5761066d818361035b565b505f613c74565b613cb09150833d811161261e5761260f818361035b565b5f613c03565b613ccd9060203d811161067b5761066d818361035b565b613baa565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b91908110156121d45760051b81013590609e1981360301821215610308570190565b356104178161041a565b916020908281520191905f5b818110613d975750505090565b9091926040806001928635613dab8161041a565b848060a01b031681526001600160601b036020880135613dca81612426565b166020820152019401929101613d8a565b359061038c8261041a565b9180602084016020855252604083019060408160051b85010193835f91609e1982360301905b848410613e1d575050505050505090565b90919293949596603f19828203018752873583811215610308578401908135601e198336030181121561030857820191602083359301906001600160401b038411610308578360061b3603821361030857613ee6836080613edb81613e916020989760019a60a08b9a5260a0870191613d7e565b95613eaf613ea0898301613ddb565b6001600160a01b0316868a0152565b60408101356040860152613ed5613ec860608301610bb7565b63ffffffff166060870152565b01610bb7565b63ffffffff16910152565b99019701959401929190613e0c565b613f0660208060fc54161415611f69565b61038c34336146f7565b93909291601f855116613f775791906020925b85518411613f6e5760018316613f54575f5282850151602052613f4d60405f209260011c936123c5565b9291613f23565b838601515f52602052613f4d60405f209260011c936123c5565b92509350501490565b60405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a490fd5b6001600160a01b038116156140615760fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb691a160018060a01b03166001600160601b0360a01b60fb54161760fb55565b60405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a490fd5b604051906140eb82610320565b5f6020838281520152565b60405190610180614107818461035b565b368337565b6040519061411b60208361035b565b6020368337565b919060409060606141316140de565b9485926020855192614143858561035b565b8436853780518452015160208301528482015260076107cf195a01fa1561416657565bfe5b6020929160806040926141796140de565b9586938186519361418a868661035b565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561416657156141bb57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b6040516141fc81610320565b604090815161420b838261035b565b8236823781526020825191614220848461035b565b8336843701528051614232828261035b565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190614288838361035b565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526142dd8351938461035b565b8252602082015290565b5f516020614cd35f395f51905f52906142fe6140de565b505f919006602060c0835b6143fe575f935f516020614cd35f395f51905f5260038186818180090908604051614334858261035b565b84368237848185604051614348828261035b565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614cd35f395f51905f5260a082015260056107cf195a01fa8015614166576143b290614c86565b51916143fe575f516020614cd35f395f51905f52828009146143e957505f516020614cd35f395f51905f5260015f94089293614309565b929350506143f561038e565b92835282015290565b6121d9565b61440b6140de565b5060405161441881610320565b600181526002602082015290565b90600c8110156121d45760051b0190565b93929091614445604061039d565b9485526020850152614457604061039d565b91825260208201526144676140f6565b925f5b600281106144945750505060206101809261448361410c565b93849160086201d4c0fa9151151590565b806144a060019261366b565b6144aa82856121c3565b51516144b68289614426565b5260206144c383866121c3565b5101516144d86144d2836123d3565b89614426565b526144e382866121c3565b5151516144f26144d2836123e1565b5261450861450083876121c3565b515160200190565b516145156144d2836123ef565b52602061452283876121c3565b510151516145326144d2836123fd565b5261455e6145586145516020614548868a6121c3565b51015160200190565b519261240b565b88614426565b520161446a565b6033546001600160a01b0316330361457957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff6145c9826147e1565b166145d3816103ab565b906145e1604051928361035b565b8082526145f0601f19916103ab565b013660208301375f5f5b8251821080614650575b15614649576001811b8416614622575b61461d90612485565b6145fa565b90600161461d9160ff60f81b8460f81b165f1a61463f82876123a4565b5301919050614614565b5050905090565b506101008110614604565b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b8115614747576001600160a01b03165f81815260ca602052604090208054919282019182106122f55755805f5260ca6020525f516020614cf35f395f51905f52602060405f2054604051908152a2565b50632097692160e11b5f5260045260245ffd5b90600161476860ff93614b9f565b928392161b11156147765790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6147ed575090565b5f1981018181116122f55761ffff9116911661ffff81146122f55760010190806147e5565b9061481b6140de565b5061ffff8116906102008210156148c057600182146148bb5761483c61038e565b5f81525f602082015292906001905f925b61ffff831685101561486157505050505090565b600161ffff831660ff86161c81161461489b575b60016148916148868360ff94614168565b9460011b61fffe1690565b940116929161484d565b9460016148916148866148b08960ff95614168565b989350505050614875565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b6149006140de565b50805190811580614971575b1561492d57505060405161492160408261035b565b5f81525f602082015290565b60205f516020614cd35f395f51905f52910151065f516020614cd35f395f51905f52035f516020614cd35f395f51905f5281116122f557604051916142dd83610320565b5060208101511561490c565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b9060ff5f5460081c16156149df576109fd61038c9261497d565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb546001600160a01b03161580614b0b575b15614a905781614a5d61038c9360fc55565b60405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602090a2613ff6565b60405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a490fd5b506001600160a01b0381161515614a4b565b15614b2457565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b90610100825111614c0f57815115614c0a57614bcd614bc36125a561259785612397565b60ff600191161b90565b6001905b8351821015614c0557600190614bf0614bc36125a561259786896123a4565b90614bfc818311614b1d565b17910190614bd1565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b15614c8d57565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470ea46f246ccfc58f7a93aa09bc6245a6818e97b1a160d186afe78993a3b194a0424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212203f93810e136abc668d4b6e863312064f727ebbe3f1a248a9593f47836096adac64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x4e59b44847b379578588920ca78fbf26c0b4956c": { + "nonce": 2, + "balance": "0x0", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3", + "storage": {} + }, + "0x5fbdb2315678afecb367f032d93f642f64180aa3": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f5ffd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f5ffd5b348015610088575f5ffd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f5ffd5b506100cc610204565b005b3480156100d9575f5ffd5b506100cc6100e836600461049b565b610217565b3480156100f8575f5ffd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f5ffd5b506100cc61013636600461049b565b6102e5565b348015610146575f5ffd5b506100cc610155366004610479565b61031b565b348015610165575f5ffd5b5061009c610174366004610479565b610399565b5f5f5f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f5ffd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f5ffd5b505af1158015610272573d5f5f3e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f5ffd5b505af11580156102db573d5f5f3e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f5f5f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f5ffd5b5f60208284031215610489575f5ffd5b813561049481610465565b9392505050565b5f5f604083850312156104ac575f5ffd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156104f8575f5ffd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f5ffd5b8401601f8101861361053e575f5ffd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f5ffd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea264697066735822122008341f3bd242202e610c1575dfe9dfe1791f0d91d1e9f5c768baf14a32d1efd064736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + "0x5fc8d32690cc91d4c39d9d3abcbd16989f875707": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0x610178da211fef7d417bc0e6fed39f05609ad788": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361061017e575f3560e01c80636fcd0e53116100cd578063c490744211610087578063dda3346c11610062578063dda3346c146105d1578063ee94d67c146105f0578063f074ba621461060f578063f28824611461062e575f5ffd5b8063c490744214610574578063c4d66de814610593578063d06d5587146105b2575f5ffd5b80636fcd0e531461048f5780637439841f146104bb57806374cdd798146104f057806388676cad146105235780639b4e463414610542578063b522538a14610555575f5ffd5b80634665bcda1161013857806354fd4d501161011357806354fd4d5014610404578063587533571461042557806358eaee79146104445780636c0d2d5a14610470575f5ffd5b80634665bcda146102b257806347d28372146102e557806352396a59146103d0575f5ffd5b8063039157d2146101bc5780630b18ff66146101dd5780632340e8d3146102195780633474aa161461023c5780633f65cf191461026d57806342ecff2a1461028c575f5ffd5b366101b8576040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b5f5ffd5b3480156101c7575f5ffd5b506101db6101d6366004613252565b610661565b005b3480156101e8575f5ffd5b506033546101fc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610224575f5ffd5b5061022e60395481565b604051908152602001610210565b348015610247575f5ffd5b506034546001600160401b03165b6040516001600160401b039091168152602001610210565b348015610278575f5ffd5b506101db61028736600461330d565b610996565b348015610297575f5ffd5b50603a5461025590600160401b90046001600160401b031681565b3480156102bd575f5ffd5b506101fc7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b3480156102f0575f5ffd5b506103756040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015290565b60405161021091905f60a0820190508251825262ffffff60208401511660208301526001600160401b036040840151166040830152606083015160070b60608301526001600160401b03608084015116608083015292915050565b3480156103db575f5ffd5b506102556103ea3660046133e4565b603b6020525f90815260409020546001600160401b031681565b34801561040f575f5ffd5b50610418610c1f565b604051610210919061342d565b348015610430575f5ffd5b50603e546101fc906001600160a01b031681565b34801561044f575f5ffd5b5061046361045e36600461347c565b610c4f565b60405161021091906134ee565b34801561047b575f5ffd5b5061022e61048a3660046133e4565b610cb1565b34801561049a575f5ffd5b506104ae6104a93660046134fc565b610dbf565b6040516102109190613513565b3480156104c6575f5ffd5b506104636104d53660046134fc565b5f90815260366020526040902054600160c01b900460ff1690565b3480156104fb575f5ffd5b506101fc7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa81565b34801561052e575f5ffd5b506101db61053d366004613573565b610e6a565b6101db61055036600461358e565b610f5f565b348015610560575f5ffd5b506104ae61056f36600461347c565b6110a6565b34801561057f575f5ffd5b506101db61058e366004613623565b611195565b34801561059e575f5ffd5b506101db6105ad36600461364d565b6112cc565b3480156105bd575f5ffd5b506101db6105cc36600461364d565b611416565b3480156105dc575f5ffd5b506101db6105eb366004613738565b6114aa565b3480156105fb575f5ffd5b50603a54610255906001600160401b031681565b34801561061a575f5ffd5b506101db61062936600461380a565b611609565b348015610639575f5ffd5b506102557f000000000000000000000000000000000000000000000000000000006059f46081565b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa1580156106c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106eb9190613871565b156107095760405163840a48d560e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600860048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561076f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107939190613871565b156107b15760405163840a48d560e01b815260040160405180910390fd5b5f6107f56107bf858061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115610863576108636134ba565b6002811115610874576108746134ba565b81525050905080604001516001600160401b0316876001600160401b0316116108b0576040516337e07ffd60e01b815260040160405180910390fd5b6001816060015160028111156108c8576108c86134ba565b146108e65760405163d49e19a760e01b815260040160405180910390fd5b6109296108f3868061388c565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a3092505050565b6109465760405163161ce5ed60e31b815260040160405180910390fd5b61095861095288610cb1565b87611a58565b61098461096488611afd565b8735610970888061388c565b61097d60208b018b6138d1565b8751611bd4565b61098d5f611d08565b50505050505050565b6033546001600160a01b03163314806109b95750603e546001600160a01b031633145b6109d65760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600260048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610a3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a609190613871565b15610a7e5760405163840a48d560e01b815260040160405180910390fd5b8584148015610a8c57508382145b610aa9576040516343714afd60e01b815260040160405180910390fd5b603a546001600160401b03600160401b9091048116908a1611610adf576040516337e07ffd60e01b815260040160405180910390fd5b610af1610aeb8a610cb1565b89611a58565b5f805b87811015610b8a57610b768b8b358b8b85818110610b1457610b14613913565b9050602002016020810190610b299190613927565b8a8a86818110610b3b57610b3b613913565b9050602002810190610b4d91906138d1565b8a8a88818110610b5f57610b5f613913565b9050602002810190610b71919061388c565b611e88565b610b80908361395f565b9150600101610af4565b5060335460405163a1ca780b60e01b81526001600160a01b0391821660048201525f6024820152604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b158015610bfd575f5ffd5b505af1158015610c0f573d5f5f3e3d5ffd5b5050505050505050505050505050565b6060610c4a7f76302e302e30000000000000000000000000000000000000000000000000000661239b565b905090565b5f5f610c8f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b5f90815260366020526040902054600160c01b900460ff169150505b92915050565b5f610cbf611fff600c613972565b610cd26001600160401b03841642613989565b10610cf057604051637944e66d60e11b815260040160405180910390fd5b604080516001600160401b03841660208201525f918291720f3df6d732807ef1319fb7b8bb8522d0beac02910160408051601f1981840301815290829052610d37916139b3565b5f60405180830381855afa9150503d805f8114610d6f576040519150601f19603f3d011682016040523d82523d5f602084013e610d74565b606091505b5091509150818015610d8657505f8151115b610da35760405163558ad0a360e01b815260040160405180910390fd5b80806020019051810190610db791906139be565b949350505050565b610de6604080516080810182525f8082526020820181905291810182905290606082015290565b5f82815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610e5057610e506134ba565b6002811115610e6157610e616134ba565b90525092915050565b6033546001600160a01b0316331480610e8d5750603e546001600160a01b031633145b610eaa5760405163427a777960e01b815260040160405180910390fd5b604051635ac86ab760e01b8152600660048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190613871565b15610f525760405163840a48d560e01b815260040160405180910390fd5b610f5b82611d08565b5050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f1614610fa857604051633213a66160e21b815260040160405180910390fd5b346801bc16d674ec80000014610fd15760405163049696b360e31b815260040160405180910390fd5b7f00000000000000000000000000000000219ab540356cbb839cbe05303d7705fa6001600160a01b031663228951186801bc16d674ec8000008787611014612469565b8888886040518863ffffffff1660e01b8152600401611038969594939291906139fd565b5f604051808303818588803b15801561104f575f5ffd5b505af1158015611061573d5f5f3e3d5ffd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051611097929190613a4b565b60405180910390a15050505050565b6110cd604080516080810182525f8082526020820181905291810182905290606082015290565b60365f61110e85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123d892505050565b815260208082019290925260409081015f20815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561117a5761117a6134ba565b600281111561118b5761118b6134ba565b9052509392505050565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16146111de57604051633213a66160e21b815260040160405180910390fd5b5f6111ed633b9aca0083613a72565b9050611206633b9aca006001600160401b038316613972565b6034549092506001600160401b039081169082161115611239576040516302c6f54760e21b815260040160405180910390fd5b603480548291905f906112569084906001600160401b0316613a85565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e836040516112b591815260200190565b60405180910390a26112c78383612499565b505050565b5f54610100900460ff16158080156112ea57505f54600160ff909116105b806113035750303b15801561130357505f5460ff166001145b61136b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561138c575f805461ff0019166101001790555b6001600160a01b0382166113b3576040516339b190bb60e11b815260040160405180910390fd5b603380546001600160a01b0319166001600160a01b0384161790558015610f5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b6033546001600160a01b031633146114415760405163719f370360e11b815260040160405180910390fd5b603e54604080516001600160a01b03928316815291831660208301527ffb8129080a19d34dceac04ba253fc50304dc86c729bd63cdca4a969ad19a5eac910160405180910390a1603e80546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031633146114d55760405163719f370360e11b815260040160405180910390fd5b604051635ac86ab760e01b8152600560048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561153b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190613871565b1561157d5760405163840a48d560e01b815260040160405180910390fd5b825184511461159f576040516343714afd60e01b815260040160405180910390fd5b5f5b8451811015611602576115fa838583815181106115c0576115c0613913565b60200260200101518784815181106115da576115da613913565b60200260200101516001600160a01b03166125ae9092919063ffffffff16565b6001016115a1565b5050505050565b604051635ac86ab760e01b8152600760048201819052907f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b031690635ac86ab790602401602060405180830381865afa15801561166f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116939190613871565b156116b15760405163840a48d560e01b815260040160405180910390fd5b603a54600160401b90046001600160401b03165f8190036116e557604051631a544f4960e01b815260040160405180910390fd5b6040805160a081018252603c548152603d5462ffffff811660208301526001600160401b0363010000008204811693830193909352600160581b810460070b6060830152600160981b9004909116608082015261174c61174483611afd565b825188612600565b5f805b858110156119b5573687878381811061176a5761176a613913565b905060200281019061177c9190613aa4565b80355f908152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156117ec576117ec6134ba565b60028111156117fd576117fd6134ba565b905250905060018160600151600281111561181a5761181a6134ba565b146118265750506119ad565b856001600160401b031681604001516001600160401b03161061184a5750506119ad565b5f808061185a848a8f35886126c1565b60208b018051939650919450925061187182613ac2565b62ffffff1690525060808801805184919061188d908390613adf565b6001600160401b03169052506060880180518391906118ad908390613afe565b60070b9052506118bd8188613adf565b85355f908152603660209081526040918290208751815492890151938901516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060880151939a50879390929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115611961576119616134ba565b021790555050845160405164ffffffffff90911691506001600160401b038b16907fa91c59033c3423e18b54d0acecebb4972f9ea95aedf5f4cae3b677b02eaf3a3f905f90a350505050505b60010161174f565b506001600160401b038084165f908152603b60205260408120805484939192916119e191859116613adf565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061098d826127e4565b5f815f81518110611a2157611a21613913565b60200260200101519050919050565b5f81600381518110611a4457611a44613913565b60200260200101515f5f1b14159050919050565b611a6460036020613972565b611a7160208301836138d1565b905014611a91576040516313717da960e21b815260040160405180910390fd5b611ae0611aa160208301836138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525086925050843590506003612a13565b610f5b576040516309bde33960e01b815260040160405180910390fd5b5f5f7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f6001600160a01b0316632704351a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7f9190613b2d565b9050806001600160401b03165f03611baa576040516341a02cc960e01b815260040160405180910390fd5b806001600160401b0316836001600160401b03161115611bcb576001611bcd565b5f5b9392505050565b60088414611bf55760405163200591bd60e01b815260040160405180910390fd5b5f611bff88612a2a565b905080611c0e6028600161395f565b611c18919061395f565b611c23906020613972565b8314611c42576040516313717da960e21b815260040160405180910390fd5b5f611c7e8787808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612a5292505050565b90505f64ffffffffff8416611c956028600161395f565b600b901b179050611cdf86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508d9250869150859050612a13565b611cfc576040516309bde33960e01b815260040160405180910390fd5b50505050505050505050565b603a54600160401b90046001600160401b031615611d385760405162be9bc360e81b815260040160405180910390fd5b603a546001600160401b03428116911603611d66576040516367db5b8b60e01b815260040160405180910390fd5b6034545f906001600160401b0316611d82633b9aca0047613a72565b611d8c9190613a85565b9050818015611da257506001600160401b038116155b15611dc0576040516332dea95960e21b815260040160405180910390fd5b5f6040518060a00160405280611dd542610cb1565b815260395462ffffff1660208201526001600160401b0380851660408301525f60608301819052608090920191909152603a805442909216600160401b026fffffffffffffffff0000000000000000199092169190911790559050611e39816127e4565b805160208083015160405162ffffff90911681526001600160401b034216917f575796133bbed337e5b39aa49a30dc2556a91e0c6c2af4b7b886ae77ebef1076910160405180910390a3505050565b5f5f611ec58484808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611a0e92505050565b5f818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff166002811115611f3357611f336134ba565b6002811115611f4457611f446134ba565b90525090505f81606001516002811115611f6057611f606134ba565b14611f7e576040516335e09e9d60e01b815260040160405180910390fd5b6001600160401b038016611fc38686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612ce292505050565b6001600160401b031603611fea57604051631958236d60e21b815260040160405180910390fd5b6001600160401b03801661202f8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d0692505050565b6001600160401b03161461205657604051632eade63760e01b815260040160405180910390fd5b61205e612469565b61206790613b48565b6120a28686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b14806120f757506120b1612d31565b6120ba90613b48565b6120f58686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d1d92505050565b145b61211457604051633772dd5360e11b815260040160405180910390fd5b5f6121508686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612d4d92505050565b905061216961215e8c611afd565b8b88888c8c8f611bd4565b60398054905f61217883613b6b565b9091555050603a545f90600160401b90046001600160401b0316156121af57603a54600160401b90046001600160401b03166121bc565b603a546001600160401b03165b6040805160808101825264ffffffffff8d1681526001600160401b03858116602083015283169181019190915290915060608101600190525f858152603660209081526040918290208351815492850151938501516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b031990951691909216179290921792831682178155606084015190929091839160ff60c01b1990911668ffffffffffffffffff60801b1990911617600160c01b836002811115612291576122916134ba565b021790555050603d80548492506013906122bc908490600160981b90046001600160401b0316613adf565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c104414498a60405161231c919064ffffffffff91909116815260200190565b60405180910390a16040805164ffffffffff8c1681526001600160401b03838116602083015284168183015290517f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df9181900360600190a161238b633b9aca006001600160401b038416613972565b9c9b505050505050505050505050565b60605f6123a783612d64565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f81516030146123fb57604051634f88323960e11b815260040160405180910390fd5b6040516002906124119084905f90602001613b83565b60408051601f198184030181529082905261242b916139b3565b602060405180830381855afa158015612446573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610cab91906139be565b60405160609061248590600160f81b905f903090602001613ba7565b604051602081830303815290604052905090565b804710156124e95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401611362565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612532576040519150601f19603f3d011682016040523d82523d5f602084013e612537565b606091505b50509050806112c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401611362565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112c7908490612d8b565b5f61260a84612a2a565b905061261781600361395f565b612622906020613972565b61262f60208401846138d1565b90501461264f576040516313717da960e21b815260040160405180910390fd5b6003811b600c176126a461266660208501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250508635905084612a13565b611602576040516309bde33960e01b815260040160405180910390fd5b83516020850151905f908190816126d9878388612e5e565b9050846001600160401b0316816001600160401b031614612753576126fe8582613be5565b6040805164ffffffffff851681526001600160401b038b8116602083015284168183015290519195507f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df919081900360600190a15b6001600160401b0380821660208b0181905290891660408b01525f036127d85760398054905f61278283613c14565b9091555050600260608a015261279784613c29565b92508164ffffffffff16886001600160401b03167f2a02361ffa66cf2c2da4682c2355a6adcaa9f6c227b6e6563e68480f9587626a60405160405180910390a35b50509450945094915050565b602081015162ffffff1615612884578051603c556020810151603d80546040840151606085015160809095015162ffffff9094166affffffffffffffffffffff199092169190911763010000006001600160401b0392831602176fffffffffffffffffffffffffffffffff60581b1916600160581b9482169490940267ffffffffffffffff60981b191693909317600160981b9390921692909202179055565b60808101516034545f916128a0916001600160401b0316613adf565b90505f826060015183604001516128b79190613afe565b60408401516034805492935090915f906128db9084906001600160401b0316613adf565b82546101009290920a6001600160401b03818102199093169183160217909155603a8054600160401b810483166001600160801b03199091161790555f915061292b90633b9aca00908516613972565b90505f612940633b9aca00600785900b613c4e565b603a546040518281529192506001600160401b0316907f525408c201bc1576eb44116f6478f1c2a54775b19a043bcfdc708364f74f8e449060200160405180910390a260335460405163a1ca780b60e01b81526001600160a01b03918216600482015260248101849052604481018390527f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a1ca780b906064015f604051808303815f87803b1580156129f6575f5ffd5b505af1158015612a08573d5f5f3e3d5ffd5b505050505050505050565b5f83612a20868585612f3c565b1495945050505050565b5f80826001811115612a3e57612a3e6134ba565b14612a4a576006610cab565b600592915050565b5f5f60028351612a629190613a72565b90505f816001600160401b03811115612a7d57612a7d613668565b604051908082528060200260200182016040528015612aa6578160200160208202803683370190505b5090505f5b82811015612ba057600285612ac08383613972565b81518110612ad057612ad0613913565b602002602001015186836002612ae69190613972565b612af190600161395f565b81518110612b0157612b01613913565b6020026020010151604051602001612b23929190918252602082015260400190565b60408051601f1981840301815290829052612b3d916139b3565b602060405180830381855afa158015612b58573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612b7b91906139be565b828281518110612b8d57612b8d613913565b6020908102919091010152600101612aab565b50612bac600283613a72565b91505b8115612cbf575f5b82811015612cac57600282612bcc8383613972565b81518110612bdc57612bdc613913565b602002602001015183836002612bf29190613972565b612bfd90600161395f565b81518110612c0d57612c0d613913565b6020026020010151604051602001612c2f929190918252602082015260400190565b60408051601f1981840301815290829052612c49916139b3565b602060405180830381855afa158015612c64573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190612c8791906139be565b828281518110612c9957612c99613913565b6020908102919091010152600101612bb7565b50612cb8600283613a72565b9150612baf565b805f81518110612cd157612cd1613913565b602002602001015192505050919050565b5f610cab82600581518110612cf957612cf9613913565b6020026020010151613010565b5f610cab82600681518110612cf957612cf9613913565b5f81600181518110611a2157611a21613913565b60405160609061248590600160f91b905f903090602001613ba7565b5f610cab82600281518110612cf957612cf9613913565b5f60ff8216601f811115610cab57604051632cd44ac360e21b815260040160405180910390fd5b5f612ddf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130779092919063ffffffff16565b905080515f1480612dff575080806020019051810190612dff9190613871565b6112c75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611362565b5f612e6b6026600161395f565b612e76906020613972565b612e8360408401846138d1565b905014612ea3576040516313717da960e21b815260040160405180910390fd5b5f612eaf600485613c7d565b64ffffffffff169050612f08612ec860408501856138d1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508992505050602086013584612a13565b612f25576040516309bde33960e01b815260040160405180910390fd5b612f33836020013585613085565b95945050505050565b5f83515f14158015612f59575060208451612f579190613ca6565b155b612f76576040516313717da960e21b815260040160405180910390fd5b604080516020808201909252848152905b8551811161300657612f9a600285613ca6565b5f03612fcc5781515f528086015160205260208260405f60026107d05a03fa612fc1575f5ffd5b600284049350612ff4565b808601515f52815160205260208260405f60026107d05a03fa612fed575f5ffd5b6002840493505b612fff60208261395f565b9050612f87565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b6060610db784845f856130b1565b5f80613092600484613cb9565b61309d906040613ce2565b64ffffffffff169050610db784821b613010565b6060824710156131125760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611362565b5f5f866001600160a01b0316858760405161312d91906139b3565b5f6040518083038185875af1925050503d805f8114613167576040519150601f19603f3d011682016040523d82523d5f602084013e61316c565b606091505b509150915061317d87838387613188565b979650505050505050565b606083156131f65782515f036131ef576001600160a01b0385163b6131ef5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611362565b5081610db7565b610db7838381511561320b5781518083602001fd5b8060405162461bcd60e51b8152600401611362919061342d565b6001600160401b0381168114613239575f5ffd5b50565b5f6040828403121561324c575f5ffd5b50919050565b5f5f5f60608486031215613264575f5ffd5b833561326f81613225565b925060208401356001600160401b03811115613289575f5ffd5b6132958682870161323c565b92505060408401356001600160401b038111156132b0575f5ffd5b6132bc8682870161323c565b9150509250925092565b5f5f83601f8401126132d6575f5ffd5b5081356001600160401b038111156132ec575f5ffd5b6020830191508360208260051b8501011115613306575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215613324575f5ffd5b883561332f81613225565b975060208901356001600160401b03811115613349575f5ffd5b6133558b828c0161323c565b97505060408901356001600160401b03811115613370575f5ffd5b61337c8b828c016132c6565b90975095505060608901356001600160401b0381111561339a575f5ffd5b6133a68b828c016132c6565b90955093505060808901356001600160401b038111156133c4575f5ffd5b6133d08b828c016132c6565b999c989b5096995094979396929594505050565b5f602082840312156133f4575f5ffd5b8135611bcd81613225565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611bcd60208301846133ff565b5f5f83601f84011261344f575f5ffd5b5081356001600160401b03811115613465575f5ffd5b602083019150836020828501011115613306575f5ffd5b5f5f6020838503121561348d575f5ffd5b82356001600160401b038111156134a2575f5ffd5b6134ae8582860161343f565b90969095509350505050565b634e487b7160e01b5f52602160045260245ffd5b600381106134ea57634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610cab82846134ce565b5f6020828403121561350c575f5ffd5b5035919050565b5f6080820190506001600160401b0383511682526001600160401b0360208401511660208301526001600160401b036040840151166040830152606083015161355f60608401826134ce565b5092915050565b8015158114613239575f5ffd5b5f60208284031215613583575f5ffd5b8135611bcd81613566565b5f5f5f5f5f606086880312156135a2575f5ffd5b85356001600160401b038111156135b7575f5ffd5b6135c38882890161343f565b90965094505060208601356001600160401b038111156135e1575f5ffd5b6135ed8882890161343f565b96999598509660400135949350505050565b6001600160a01b0381168114613239575f5ffd5b803561361e816135ff565b919050565b5f5f60408385031215613634575f5ffd5b823561363f816135ff565b946020939093013593505050565b5f6020828403121561365d575f5ffd5b8135611bcd816135ff565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136a4576136a4613668565b604052919050565b5f6001600160401b038211156136c4576136c4613668565b5060051b60200190565b5f82601f8301126136dd575f5ffd5b81356136f06136eb826136ac565b61367c565b8082825260208201915060208360051b860101925085831115613711575f5ffd5b602085015b8381101561372e578035835260209283019201613716565b5095945050505050565b5f5f5f6060848603121561374a575f5ffd5b83356001600160401b0381111561375f575f5ffd5b8401601f8101861361376f575f5ffd5b803561377d6136eb826136ac565b8082825260208201915060208360051b85010192508883111561379e575f5ffd5b6020840193505b828410156137c95783356137b8816135ff565b8252602093840193909101906137a5565b955050505060208401356001600160401b038111156137e6575f5ffd5b6137f2868287016136ce565b92505061380160408501613613565b90509250925092565b5f5f5f6040848603121561381c575f5ffd5b83356001600160401b03811115613831575f5ffd5b61383d8682870161323c565b93505060208401356001600160401b03811115613858575f5ffd5b613864868287016132c6565b9497909650939450505050565b5f60208284031215613881575f5ffd5b8151611bcd81613566565b5f5f8335601e198436030181126138a1575f5ffd5b8301803591506001600160401b038211156138ba575f5ffd5b6020019150600581901b3603821315613306575f5ffd5b5f5f8335601e198436030181126138e6575f5ffd5b8301803591506001600160401b038211156138ff575f5ffd5b602001915036819003821315613306575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613937575f5ffd5b813564ffffffffff81168114611bcd575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610cab57610cab61394b565b8082028115828204841417610cab57610cab61394b565b81810381811115610cab57610cab61394b565b5f81518060208401855e5f93019283525090919050565b5f611bcd828461399c565b5f602082840312156139ce575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b608081525f613a1060808301888a6139d5565b8281036020840152613a2281886133ff565b90508281036040840152613a378186886139d5565b915050826060830152979650505050505050565b602081525f610db76020830184866139d5565b634e487b7160e01b5f52601260045260245ffd5b5f82613a8057613a80613a5e565b500490565b6001600160401b038281168282160390811115610cab57610cab61394b565b5f8235605e19833603018112613ab8575f5ffd5b9190910192915050565b5f62ffffff821680613ad657613ad661394b565b5f190192915050565b6001600160401b038181168382160190811115610cab57610cab61394b565b600781810b9083900b01677fffffffffffffff8113677fffffffffffffff1982121715610cab57610cab61394b565b5f60208284031215613b3d575f5ffd5b8151611bcd81613225565b8051602080830151919081101561324c575f1960209190910360031b1b16919050565b5f60018201613b7c57613b7c61394b565b5060010190565b5f613b8e828561399c565b6001600160801b03199390931683525050601001919050565b6001600160f81b03199390931683526001600160a81b031991909116600183015260601b6bffffffffffffffffffffffff1916600c82015260200190565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715610cab57610cab61394b565b5f81613c2257613c2261394b565b505f190190565b5f8160070b677fffffffffffffff198103613c4657613c4661394b565b5f0392915050565b8082025f8212600160ff1b84141615613c6957613c6961394b565b8181058314821517610cab57610cab61394b565b5f64ffffffffff831680613c9357613c93613a5e565b8064ffffffffff84160491505092915050565b5f82613cb457613cb4613a5e565b500690565b5f64ffffffffff831680613ccf57613ccf613a5e565b8064ffffffffff84160691505092915050565b64ffffffffff818116838216029081169081811461355f5761355f61394b56fea2646970667358221220aab93c0402dc46b0f408f934ba0622d5de849fceb6c035c4c6bc03e51048d0dc64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x663f3ad617193148711d28f5334ee4ed07016602": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806334baeab9146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b610709565b6105e9565b6105a5565b610561565b6101a7565b610152565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f73c457ba000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d75760043567ffffffffffffffff81116100d75780360360406003198201126100d757600482013590602219018112156100d757810160048101359067ffffffffffffffff82116100d7576024019080360382136100d757602461015093013591610d2f565b005b346100d7575f3660031901126100d75760206040517f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac08152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101a03660031901126100d7576101c23661018c565b3660c4116100d7576101d336610199565b366101a4116100d757604051906103808201604052610104356101f581610766565b610124359361020385610766565b6101443561021081610766565b6101643561021d81610766565b610184359161022b83610766565b60808701977f12ac9a25dcd5e1a832a9061a082c15dd1d61aa9c4d553505739d0f5d65dc3be4885260208801957f025aa744581ebe7ad91731911c898569106ff5a2d30f3eee2b23c60ee980acd487526102859089610797565b61028f9088610823565b61029990876108af565b6102a3908661093b565b6102ad90856109c7565b803585527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760209182013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e0850152835161020085015290516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015281356102c084015201356102e08201527f03b03cd5effa95ac9bee94f1f5ef907157bda4812ccf0b4c91f42bb629f83a1c6103008201527f1aa085ff28179a12d922dba0547057ccaae94b9d69cfaa4e60401fea7f3e03336103208201527f110c10134f200b19f6490846d518c9aea868366efb7228ca5c91d2940d0307626103408201527f1e60f31fcbf757e837e867178318832d0b2d74d59e2fea1c7142df187d3fc6d36103609091015280806107cf195a01602092600861030092fa9051165f5260205ff35b346100d7575f3660031901126100d75760206040516001600160801b03197f561f8c992a424deb37ccdf4e19c0e7db00000000000000000000000000000000168152f35b346100d7575f3660031901126100d75760206040516001600160801b03197f41af18736dc9d7921c859fc95ac84da500000000000000000000000000000000168152f35b346100d75760603660031901126100d75760043567ffffffffffffffff81116100d757366023820112156100d75780600401359067ffffffffffffffff82116100d75736602483830101116100d757610150916024359060246044359301610a53565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761067c57604052565b61064c565b60a0810190811067ffffffffffffffff82111761067c57604052565b6060810190811067ffffffffffffffff82111761067c57604052565b90601f8019910116810190811067ffffffffffffffff82111761067c57604052565b604051906106ea6040836106b9565b565b604051906106ea60a0836106b9565b906106ea60405192836106b9565b346100d7575f3660031901126100d75760405161072581610660565b6005815260406020820191640332e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001111561078f57565b5f805260205ff35b604051917f0707b920bc978c02f292fae2036e057be54294114ccc3c8769d883f688a1423f83527f2e32a094b7589554f7bc357bf63481acd2d55555c203383782a4650787ff664260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0bca36e2cbe6394b3e249751853f961511011c7148e336f4fd974644850fc34783527f2ede7c9acf48cf3a3729fa3d68714e2a8435d4fa6db8f7f409c153b1fcdf9b8b60208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f1b8af999dbfbb3927c091cc2aaf201e488cbacc3e2c6b6fb5a25f9112e04f2a783527f2b91a26aa92e1b6f5722949f192a81c850d586d81a60157f3e9cf04f679cccd660208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f2b5f494ed674235b8ac1750bdfd5a7615f002d4a1dcefeddd06eda5a076ccd0d83527f2fe520ad2020aab9cbba817fcbb9a863b8a76ff88f14f912c5e71665b2ad5e8260208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b604051917f0f1c3c0d5d9da0fa03666843cde4e82e869ba5252fce3c25d5940320b1c4d49383527f214bfcff74f425f6fe8c0d07b307482d8bc8bb2f3608f68287aa01bd0b69e80960208401526040830190815260408360608160076107cf195a01fa1561078f57815190526020810151606083015260409160809060066107cf195a01fa1561078f57565b91610b08906106ea945f6080604051610a6b81610681565b828152826020820152604051610a8081610660565b83815283602082015260408201528260608201520152610ac1610aa16106db565b915f83525f6020840152610ab36106db565b9081525f60208201526111d1565b90610aca6106ec565b9283527fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e2602084015260408301525f60608301526080820152610f63565b91610d2f565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610b54575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610b8a6040846106b9565b8290604081019283116100d757905b828210610ba65750505090565b8135815260209182019101610b99565b610100818303126100d75760405191610bce8361069d565b610bd88183610b6f565b835280605f830112156100d7576040918251610bf484826106b9565b8060c08301928484116100d75785809101915b848310610c27575050506020850152610c209190610b6f565b9082015290565b602090610c348785610b6f565b8152019101908590610c07565b908160209103126100d7575180151581036100d75790565b905f905b60028210610c6a57505050565b6020806001928551815201930191019091610c5d565b905f905b60058210610c9157505050565b6020806001928551815201930191019091610c84565b919493929094610cbc836101a0810197610c59565b5f604084015b60028210610cea5750505081610ce36101009260c06106ea96950190610c59565b0190610c80565b82515f90825b60028310610d0e575050506020604060019201930191019091610cc2565b6020806001928451815201920192019190610cf0565b6040513d5f823e3d90fd5b90917f73c457ba00000000000000000000000000000000000000000000000000000000610d75610d68610d628686610b0e565b90610b39565b6001600160e01b03191690565b6001600160e01b0319821603610ec2575090610da9610da184610d9960209561104e565b969094610b1c565b810190610bb6565b90610e6482519160408585015194015195610dc460a06106fb565b917f41af18736dc9d7921c859fc95ac84da50000000000000000000000000000000060801c83527f561f8c992a424deb37ccdf4e19c0e7db0000000000000000000000000000000060801c8784015260801c604083015260801c60608201527f04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0608082015260405195869485946334baeab960e01b865260048601610ca7565b0381305afa908115610ebd575f91610e8e575b5015610e7f57565b63439cc0cd60e01b5f5260045ffd5b610eb0915060203d602011610eb6575b610ea881836106b9565b810190610c41565b5f610e77565b503d610e9e565b610d24565b610ef590610ed3610d628686610b0e565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b60031115610f0257565b634e487b7160e01b5f52602160045260245ffd5b60205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610ebd575f5190565b516003811015610f025790565b805191908290602001825e015f815290565b5f61103e602092611032610f75610f16565b611024606084015193805190888101519060406080820151910190610fcc610fb0610fc68d610fbc610fa78751610f44565b610fb081610ef8565b60181b63ff0000001690565b9551015160ff1690565b60ff1690565b604080518d8101988952602089019a909a52870194909452606086019290925260808501919091526001600160e01b031960e091821b811660a086015291901b1660a4830152600160fa1b60a8830152839160aa0190565b03601f1981018352826106b9565b60405191828092610f51565b039060025afa15610ebd575f5190565b8060081c9060081b907cff000000ff000000ff000000ff000000ff000000ff000000ff000000ff7dff000000ff000000ff000000ff000000ff000000ff000000ff000000ff007fff000000ff000000ff000000ff000000ff000000ff000000ff000000ff00000084167eff000000ff000000ff000000ff000000ff000000ff000000ff000000ff000084161760101c931691161760101b176111347bffffffff00000000ffffffff00000000ffffffff00000000ffffffff7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000831660201c921660201b90565b17604081811c77ffffffffffffffff0000000000000000ffffffffffffffff169177ffffffffffffffff0000000000000000ffffffffffffffff19911b16176111876111808260801c90565b9160801b90565b17906111be6111a56111998460801c90565b6001600160801b031690565b60801b6fffffffffffffffffffffffffffffffff191690565b916001600160801b03199060801b169190565b60205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610ebd575f8051825160209384015160408051808701949094528301919091526060820152600160f91b60808201526062815261103e906110326082826106b956fea2646970667358221220861841430d2536f710b26319dae11e545dd94ea7c463902a427104608319647364736f6c634300081b0033", + "storage": {} + }, + "0x68b1d87f95878fe05b998f19b66f4baba5de1aed": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80639100674511610088578063ad8aca7711610063578063ad8aca77146101df578063df595cb8146101f2578063eb5a4e8714610205578063fddbdefd14610218575f5ffd5b80639100674514610196578063950d806e146101b9578063ad5f2210146101cc575f5ffd5b806354fd4d50116100c357806354fd4d5014610124578063628806ef146101425780636bddfa1f14610155578063882a3b3814610175575f5ffd5b806306641201146100e9578063268959e5146100fe5780634f906cf914610111575b5f5ffd5b6100fc6100f7366004610dbd565b61022b565b005b6100fc61010c366004610e0e565b61034c565b6100fc61011f366004610e0e565b610427565b61012c6104ca565b6040516101399190610e3f565b60405180910390f35b6100fc610150366004610e74565b6104fa565b610168610163366004610e74565b610588565b6040516101399190610ed0565b610188610183366004610e0e565b6105b1565b604051610139929190610ee2565b6101a96101a4366004610e0e565b610712565b6040519015158152602001610139565b6100fc6101c7366004610dbd565b610782565b6101686101da366004610e74565b610893565b6101a96101ed366004610e0e565b610939565b6101a9610200366004610dbd565b61095a565b6100fc610213366004610e0e565b6109af565b610168610226366004610f44565b610a7d565b836102368133610712565b61025357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906102758585610abb565b6001600160a01b0387165f908152600484016020526040902090915061029b9082610ae8565b6102b85760405163262118cd60e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206102db9082610aff565b505f81815260058301602052604090206102f59087610b0a565b50856001600160a01b0316876001600160a01b03167f18242326b6b862126970679759169f01f646bd55ec5bfcab85ba9f337a74e0c6878760405161033b929190610f84565b60405180910390a350505050505050565b816103578133610712565b61037457604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602081905260409091206002019061039b82610b1e565b116103b9576040516310ce892b60e31b815260040160405180910390fd5b6103c38184610b0a565b6103e057604051630716d81b60e51b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce906020015b60405180910390a250505050565b816104328133610712565b61044f57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206104708184610b0a565b61048d5760405163bed8295f60e01b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fd706ed7ae044d795b49e54c9f519f663053951011985f663a862cd9ee72a9ac790602001610419565b60606104f57f76302e302e300000000000000000000000000000000000000000000000000006610b27565b905090565b6001600160a01b0381165f90815260016020526040902061051b8133610b0a565b6105385760405163bed8295f60e01b815260040160405180910390fd5b6105456002820133610b64565b506040513381526001600160a01b038316907fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff979060200160405180910390a25050565b6001600160a01b0381165f9081526001602052604090206060906105ab90610b78565b92915050565b6001600160a01b038083165f9081526001602090815260408083209385168352600490930190529081206060918291906105ea82610b1e565b90505f8167ffffffffffffffff81111561060657610606610fa7565b60405190808252806020026020018201604052801561062f578160200160208202803683370190505b5090505f8267ffffffffffffffff81111561064c5761064c610fa7565b604051908082528060200260200182016040528015610675578160200160208202803683370190505b5090505f5b83811015610704576106a861068f8683610b84565b606081901c9160a09190911b6001600160e01b03191690565b8483815181106106ba576106ba610fbb565b602002602001018484815181106106d3576106d3610fbb565b6001600160e01b0319909316602093840291909101909201919091526001600160a01b03909116905260010161067a565b509097909650945050505050565b6001600160a01b0382165f90815260016020526040812061073590600201610b1e565b5f0361075757816001600160a01b0316836001600160a01b03161490506105ab565b6001600160a01b0383165f90815260016020526040902061077b9060020183610b8f565b9392505050565b8361078d8133610712565b6107aa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0385165f908152600160205260408120906107cc8585610abb565b6001600160a01b0387165f90815260048401602052604090209091506107f29082610ae8565b156108105760405163ad8efeb760e01b815260040160405180910390fd5b6001600160a01b0386165f90815260048301602052604090206108339082610bb0565b505f818152600583016020526040902061084d9087610b64565b50856001600160a01b0316876001600160a01b03167f037f03a2ad6b967df4a01779b6d2b4c85950df83925d9e31362b519422fc0169878760405161033b929190610f84565b6001600160a01b0381165f9081526001602052604090206060906108b990600201610b1e565b5f03610911576040805160018082528183019092525f916020808301908036833701905050905082815f815181106108f3576108f3610fbb565b6001600160a01b039092166020928302919091019091015292915050565b6001600160a01b0382165f9081526001602052604090206105ab90600201610b78565b919050565b6001600160a01b0382165f90815260016020526040812061077b9083610b8f565b5f6109658585610712565b806109a657506109a66109788484610abb565b6001600160a01b038088165f908152600160209081526040808320938a168352600490930190522090610ae8565b95945050505050565b816109ba8133610712565b6109d757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0383165f9081526001602052604090206109fb6002820184610b8f565b15610a195760405163130160e560e31b815260040160405180910390fd5b610a238184610b64565b610a40576040516319abede360e11b815260040160405180910390fd5b6040516001600160a01b0384811682528516907fb14b9a3d448c5b04f0e5b087b6f5193390db7955482a6ffb841e7b3ba61a460c90602001610419565b60605f610a8a8484610abb565b6001600160a01b0386165f90815260016020908152604080832084845260050190915290209091506109a690610b78565b60609190911b6bffffffffffffffffffffffff191660a09190911c6bffffffff0000000000000000161790565b5f818152600183016020526040812054151561077b565b5f61077b8383610bbb565b5f61077b836001600160a01b038416610bbb565b5f6105ab825490565b60605f610b3383610c9e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f61077b836001600160a01b038416610cc5565b60605f61077b83610d11565b5f61077b8383610d6a565b6001600160a01b0381165f908152600183016020526040812054151561077b565b5f61077b8383610cc5565b5f8181526001830160205260408120548015610c95575f610bdd600183610fcf565b85549091505f90610bf090600190610fcf565b9050818114610c4f575f865f018281548110610c0e57610c0e610fbb565b905f5260205f200154905080875f018481548110610c2e57610c2e610fbb565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610c6057610c60610fee565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506105ab565b5f9150506105ab565b5f60ff8216601f8111156105ab57604051632cd44ac360e21b815260040160405180910390fd5b5f818152600183016020526040812054610d0a57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556105ab565b505f6105ab565b6060815f01805480602002602001604051908101604052809291908181526020018280548015610d5e57602002820191905f5260205f20905b815481526020019060010190808311610d4a575b50505050509050919050565b5f825f018281548110610d7f57610d7f610fbb565b905f5260205f200154905092915050565b80356001600160a01b0381168114610934575f5ffd5b80356001600160e01b031981168114610934575f5ffd5b5f5f5f5f60808587031215610dd0575f5ffd5b610dd985610d90565b9350610de760208601610d90565b9250610df560408601610d90565b9150610e0360608601610da6565b905092959194509250565b5f5f60408385031215610e1f575f5ffd5b610e2883610d90565b9150610e3660208401610d90565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610e84575f5ffd5b61077b82610d90565b5f8151808452602084019350602083015f5b82811015610ec65781516001600160a01b0316865260209586019590910190600101610e9f565b5093949350505050565b602081525f61077b6020830184610e8d565b604081525f610ef46040830185610e8d565b82810360208401528084518083526020830191506020860192505f5b81811015610f385783516001600160e01b031916835260209384019390920191600101610f10565b50909695505050505050565b5f5f5f60608486031215610f56575f5ffd5b610f5f84610d90565b9250610f6d60208501610d90565b9150610f7b60408501610da6565b90509250925092565b6001600160a01b039290921682526001600160e01b031916602082015260400190565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b818103818111156105ab57634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603160045260245ffdfea2646970667358221220d27fc578553d9b089fb6c1e7b6c2d45f132cb089bd090ffcdf7dad08628d4e8464736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x70e0ba845a1a0f2da3359c97e0285013525ffc49": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033", + "storage": { + "0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f": "0x0000000000000013000000000000000000000000000000000000000000000000", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042" + } + }, + "0x7969c5ed335650692bc04293b07f5bf2e7a673c0": { + "nonce": 1, + "balance": "0x0", + "code": "0x608080604052600436101561009b575b50361561001a575f80fd5b60fb546001600160a01b0316330361002e57005b335f5260fd60205260405f208054903482018092116100875755335f5260fd6020525f60016040822001556040513481527f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77060203392a2005b634e487b7160e01b5f52601160045260245ffd5b5f905f3560e01c90816317d89c4e14611442575080632df4e21e1461140a5780632e1a7d4d1461130a5780633659cfe61461100e5780633f4ba83a14610f7b5780634d5431ea14610f405780634f1ef28614610be657806352d1902d14610b2457806358b96e2714610afc5780635c975abb14610ada578063715018a614610a7f57806373e289d014610a635780638456cb5914610a0a5780638da5cb5b146109e2578063953ef807146109ba578063a69df4b51461092c578063a7d3180914610651578063c0c53b8b146103b6578063c392299e146102f0578063c89109131461029f578063f2fde38b1461020e5763f83d08ba0361000f573461020b578060031936011261020b576101ad6115d9565b33815260fd6020526040812054156101f85733815260fd602052806001604082200155337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd8280a280f35b63366095e160e11b815233600452602490fd5b80fd5b503461020b57602036600319011261020b57610228611479565b61023061161d565b6001600160a01b0381161561024b5761024890611675565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461020b57602036600319011261020b576060906040906001600160a01b036102c7611479565b16815260fd60205220805490600260018201549101549060405192835260208301526040820152f35b50604036600319011261020b578060043561030961148f565b9061031261161d565b60fb546001600160a01b031691823b156103b157838093602460405180968193632e1a7d4d60e01b83528760048401525af19283156103a6578493610389575b50829182918290821561037f575b6001600160a01b031690f1156103735780f35b604051903d90823e3d90fd5b6108fc9150610360565b83610396919492946114a5565b6103a25782915f610352565b5050fd5b6040513d86823e3d90fd5b505050fd5b503461020b57606036600319011261020b576004356001600160a01b0381169081900361064d576103e561148f565b906044356001600160a01b03811691908290036106495783549260ff8460081c16159384809561063c575b8015610625575b156105c95760ff1981166001178655846105b8575b50811561057a576001600160a01b038116156105345782156104fe5761049a9061046560ff875460081c16610460816116bd565b6116bd565b61046e33611675565b61048b60ff875460081c16610482816116bd565b610460816116bd565b60ff1960655416606555611675565b6001600160601b0360a01b60fb54161760fb556001600160601b0360a01b60fc54161760fc556104c75780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b604051630b0f5aa160e11b815260206004820152600d60248201526c18985d18da195c95d85b1b195d609a1b6044820152606490fd5b604051630b0f5aa160e11b815260206004820152601a60248201527f626174636865725061796d656e74536572766963654f776e65720000000000006044820152606490fd5b604051630b0f5aa160e11b815260206004820152601560248201527430b634b3b732b229b2b93b34b1b2a6b0b730b3b2b960591b6044820152606490fd5b61ffff19166101011785555f61042c565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156104175750600160ff821614610417565b50600160ff821610610410565b8380fd5b5080fd5b50346107c65760c03660031901126107c65760243560043567ffffffffffffffff82116107c657366023830112156107c65781600401359267ffffffffffffffff84116107c65736602485850101116107c6576044359167ffffffffffffffff83116107c657366023840112156107c657826004013567ffffffffffffffff81116107c6573660248260051b860101116107c65760fc546084359660643593916001600160a01b03163303610919576107086115d9565b821561090a5787156108fb578361071f848a6115c6565b11156108da575f5b8363ffffffff821610156107ca576024641fffffffe0600583901b16880101356001600160a01b03811691908290036107c657815f5260fd60205260405f208054928b84106107ab57506002810180545f1981146100875763ffffffff946107959260018f930190556114f7565b90551663ffffffff811461008757600101610727565b838c91634f779ceb60e01b5f5260045260245260445260645ffd5b5f80fd5b5060fb5494955087946001600160a01b031687813b156107c6575f91602487608486946040519788968795869363d66eaabd60e01b85528c60048601526060828601528260648601520184840137818101830188905260a4356044830152601f01601f191681010301925af180156108cf576108b1575b5084936108968594610891869586957f8638c7c92bcf4c8e36871a7c8178f8e1c1c30ea1c68a0debdac8d56d3a68f73c60408051888152846020820152a260fc546001600160a01b0316946115c6565b6114f7565b908282156108a8575bf1156103735780f35b506108fc61089f565b6108969550936108c55f61089195966114a5565b5f95509392610841565b6040513d5f823e3d90fd5b836108e5848a6115c6565b90637899ec7160e01b5f5260045260245260445ffd5b6351d432c560e11b5f5260045ffd5b630c43ac2960e41b5f5260045ffd5b6302a5785160e31b5f523360045260245ffd5b346107c6575f3660031901126107c6576109446115d9565b335f5260fd60205260405f2054156109a757610e10420180421161008757335f81815260fd6020908152604091829020600101849055905192835290917f43e8fb9d4f009c90c55a3fa108b177b794704d61af7af6f6512db7883f8ed8439190a2005b63b38340cf60e01b5f523360045260245ffd5b346107c6575f3660031901126107c65760fb546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6576033546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c657610a2261161d565b610a2a6115d9565b600160ff1960655416176065557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346107c6575f3660031901126107c6576020604051610e108152f35b346107c6575f3660031901126107c657610a9761161d565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346107c6575f3660031901126107c657602060ff606554166040519015158152f35b346107c6575f3660031901126107c65760fc546040516001600160a01b039091168152602090f35b346107c6575f3660031901126107c6577f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b03163003610b7b5760206040515f5160206118105f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b60403660031901126107c657610bfa611479565b60243567ffffffffffffffff81116107c657366023820112156107c6578060040135610c25816114db565b90610c3360405192836114a5565b808252602082019236602483830101116107c657815f92602460209301863783010152610cad7f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b5f5160206118105f395f51905f52546001600160a01b031614611565565b610cb561161d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610cec575050610cea9061171d565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610f0c575b50610d765760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203610eb557610d928461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610ead575b610dcb57005b833b15610e5c5750610cea925f92839251915af43d15610e55573d610def816114db565b90610dfd60405192836114a5565b81523d5f602083013e5b60405191610e166060846114a5565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b60408401526117b4565b6060610e07565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610dc5565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610f38575b81610f28602093836114a5565b810103126107c657519086610d15565b3d9150610f1b565b346107c65760203660031901126107c6576001600160a01b03610f61611479565b165f5260fd6020526020600160405f200154604051908152f35b346107c6575f3660031901126107c657610f9361161d565b60655460ff811615610fd25760ff19166065557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346107c65760203660031901126107c657611027611479565b6110607f0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c06001600160a01b0316610c8f30821415611504565b61106861161d565b60209060405161107883826114a5565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110bd575050610cea915061171d565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f91816112db575b506111465760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206118105f395f51905f5203611284576111628461171d565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061127d575b61119b57005b833b1561122c5750610cea93925f92839251915af43d15611224573d906111c1826114db565b916111cf60405193846114a5565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051936112086060866114a5565b60278552840152660819985a5b195960ca1b60408401526117b4565b6060906111d8565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f611195565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611303575b6112f381836114a5565b810103126107c6575190876110e5565b503d6112e9565b346107c65760203660031901126107c6576004356113266115d9565b335f5260fd60205260405f20908154918183106113f35760018101908154801580156113ea575b6113d4575061135e835f94956114f7565b905555337fc5f84593e7086c66a205abab7ee44e1a8e6db58e50bf18ca46cb8239118b5ecd5f80a2805f81156113cb575b5f80809381933390f1156108cf576040519081527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d60203392a2005b506108fc61138f565b635f6e272d60e11b5f526004524260245260445ffd5b5042811161134d565b50906321c3d50f60e01b5f5260045260245260445ffd5b346107c65760203660031901126107c6576001600160a01b0361142b611479565b165f5260fd602052602060405f2054604051908152f35b346107c65760203660031901126107c6576020906001600160a01b03611466611479565b165f5260fd8252600260405f2001548152f35b600435906001600160a01b03821682036107c657565b602435906001600160a01b03821682036107c657565b90601f8019910116810190811067ffffffffffffffff8211176114c757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116114c757601f01601f191660200190565b9190820391821161008757565b1561150b57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561156c57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b8181029291811591840414171561008757565b60ff606554166115e557565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b6033546001600160a01b0316330361163157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b156116c457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156117595760018060a01b03166001600160601b0360a01b5f5160206118105f395f51905f525416175f5160206118105f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b909190156117c0575090565b8151156117d05750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c744ec1e96c5cf26e15b252ac9b803717aa2db960126b08e41b9920bda86d72864736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x7a2088a1bfc9d81c55368ae168c2c02570cb814f": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637a8b2637116100d9578063c4d66de811610093578063df6fadc11161006e578063df6fadc114610361578063e3dae51c1461037c578063f3e738751461038f578063fabc1cbc146103a2575f5ffd5b8063c4d66de814610328578063ce7c2ac21461033b578063d9caed121461034e575f5ffd5b80637a8b2637146102ad578063886f1195146102c05780638c871019146102e75780638f6a6240146102fa578063a6ab36f21461030d578063ab5921e114610320575f5ffd5b806347e7ef2411610144578063595c6a671161011f578063595c6a67146102655780635ac86ab71461026d5780635c975abb1461029c57806361b01b5d146102a4575f5ffd5b806347e7ef241461022a57806354fd4d501461023d578063553ca5f814610252575f5ffd5b806311c70c9d1461018b578063136439dd146101a05780632495a599146101b357806339b70e38146101e35780633a98ef391461020a57806343fe08b014610221575b5f5ffd5b61019e6101993660046112e7565b6103b5565b005b61019e6101ae366004611307565b610474565b6032546101c6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c67f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021360335481565b6040519081526020016101da565b61021360645481565b610213610238366004611335565b610545565b610245610691565b6040516101da919061135f565b610213610260366004611394565b6106c1565b61019e6106d4565b61028c61027b3660046113c4565b6001805460ff9092161b9081161490565b60405190151581526020016101da565b600154610213565b61021360655481565b6102136102bb366004611307565b610783565b6101c67f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6102136102f5366004611307565b6107cc565b610213610308366004611394565b6107d6565b61019e61031b3660046113df565b6107e3565b6102456108be565b61019e610336366004611394565b6108de565b610213610349366004611394565b6109a4565b61019e61035c366004611415565b610a36565b606454606554604080519283526020830191909152016101da565b61021361038a366004611307565b610b53565b61021361039d366004611307565b610b8a565b61019e6103b0366004611307565b610b94565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610411573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104359190611453565b6001600160a01b0316336001600160a01b0316146104665760405163794821ff60e01b815260040160405180910390fd5b6104708282610caa565b5050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156104d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fa919061146e565b61051757604051631d77d47760e21b815260040160405180910390fd5b600154818116811461053c5760405163c61dca5d60e01b815260040160405180910390fd5b61047082610d4e565b600180545f91829181160361056d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146105b6576040516348da714f60e01b815260040160405180910390fd5b6105c08484610d8b565b6033545f6105d06103e8836114a1565b90505f6103e86105de610de2565b6105e891906114a1565b90505f6105f587836114b4565b90508061060284896114c7565b61060c91906114de565b9550855f0361062e57604051630c392ed360e11b815260040160405180910390fd5b61063886856114a1565b60338190556f4b3b4ca85a86c47a098a223fffffffff101561066d57604051632f14e8a360e11b815260040160405180910390fd5b610686826103e860335461068191906114a1565b610e4c565b505050505092915050565b60606106bc7f76302e302e300000000000000000000000000000000000000000000000000006610e98565b905090565b5f6106ce6102bb836109a4565b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610736573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075a919061146e565b61077757604051631d77d47760e21b815260040160405180910390fd5b6107815f19610d4e565b565b5f5f6103e860335461079591906114a1565b90505f6103e86107a3610de2565b6107ad91906114a1565b9050816107ba85836114c7565b6107c491906114de565b949350505050565b5f6106ce82610b53565b5f6106ce61039d836109a4565b5f54610100900460ff161580801561080157505f54600160ff909116105b8061081a5750303b15801561081a57505f5460ff166001145b61083f5760405162461bcd60e51b8152600401610836906114fd565b60405180910390fd5b5f805460ff191660011790558015610860575f805461ff0019166101001790555b61086a8484610caa565b61087382610ed5565b80156108b8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60606040518060800160405280604d8152602001611594604d9139905090565b5f54610100900460ff16158080156108fc57505f54600160ff909116105b806109155750303b15801561091557505f5460ff166001145b6109315760405162461bcd60e51b8152600401610836906114fd565b5f805460ff191660011790558015610952575f805461ff0019166101001790555b61095b82610ed5565b8015610470575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b60405163fe243a1760e01b81526001600160a01b0382811660048301523060248301525f917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063fe243a1790604401602060405180830381865afa158015610a12573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ce919061154b565b60018054600290811603610a5d5760405163840a48d560e01b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610aa6576040516348da714f60e01b815260040160405180910390fd5b610ab1848484611020565b60335480831115610ad557604051630b469df360e41b815260040160405180910390fd5b5f610ae26103e8836114a1565b90505f6103e8610af0610de2565b610afa91906114a1565b90505f82610b0887846114c7565b610b1291906114de565b9050610b1e86856114b4565b603355610b3e610b2e82846114b4565b6103e860335461068191906114a1565b610b49888883611053565b5050505050505050565b5f5f6103e8603354610b6591906114a1565b90505f6103e8610b73610de2565b610b7d91906114a1565b9050806107ba83866114c7565b5f6106ce82610783565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c149190611453565b6001600160a01b0316336001600160a01b031614610c455760405163794821ff60e01b815260040160405180910390fd5b60015480198219811614610c6c5760405163c61dca5d60e01b815260040160405180910390fd5b600182905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a180821115610d435760405163052b07b760e21b815260040160405180910390fd5b606491909155606555565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b606454811115610dae5760405163052b07b760e21b815260040160405180910390fd5b606554610db9610de2565b1115610dd85760405163d86bae6760e01b815260040160405180910390fd5b6104708282611067565b6032546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610e28573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bc919061154b565b7fd2494f3479e5da49d386657c292c610b5b01df313d07c62eb0cfa49924a31be881610e8084670de0b6b3a76400006114c7565b610e8a91906114de565b604051908152602001610998565b60605f610ea483611095565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f54610100900460ff16610f3f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610836565b603280546001600160a01b0319166001600160a01b038316179055610f635f610d4e565b7f1c540707b00eb5427b6b774fc799d756516a54aee108b64b327acc55af55750760325f9054906101000a90046001600160a01b0316826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190611562565b604080516001600160a01b03909316835260ff90911660208301520160405180910390a150565b6032546001600160a01b0383811691161461104e57604051630312abdd60e61b815260040160405180910390fd5b505050565b61104e6001600160a01b03831684836110bc565b6032546001600160a01b0383811691161461047057604051630312abdd60e61b815260040160405180910390fd5b5f60ff8216601f8111156106ce57604051632cd44ac360e21b815260040160405180910390fd5b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261104e928692915f9161114b9185169084906111ca565b905080515f148061116b57508080602001905181019061116b919061146e565b61104e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610836565b60606107c484845f85855f5f866001600160a01b031685876040516111ef919061157d565b5f6040518083038185875af1925050503d805f8114611229576040519150601f19603f3d011682016040523d82523d5f602084013e61122e565b606091505b509150915061123f8783838761124a565b979650505050505050565b606083156112b85782515f036112b1576001600160a01b0385163b6112b15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610836565b50816107c4565b6107c483838151156112cd5781518083602001fd5b8060405162461bcd60e51b8152600401610836919061135f565b5f5f604083850312156112f8575f5ffd5b50508035926020909101359150565b5f60208284031215611317575f5ffd5b5035919050565b6001600160a01b0381168114611332575f5ffd5b50565b5f5f60408385031215611346575f5ffd5b82356113518161131e565b946020939093013593505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156113a4575f5ffd5b81356113af8161131e565b9392505050565b60ff81168114611332575f5ffd5b5f602082840312156113d4575f5ffd5b81356113af816113b6565b5f5f5f606084860312156113f1575f5ffd5b8335925060208401359150604084013561140a8161131e565b809150509250925092565b5f5f5f60608486031215611427575f5ffd5b83356114328161131e565b925060208401356114428161131e565b929592945050506040919091013590565b5f60208284031215611463575f5ffd5b81516113af8161131e565b5f6020828403121561147e575f5ffd5b815180151581146113af575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106ce576106ce61148d565b818103818111156106ce576106ce61148d565b80820281158282048414176106ce576106ce61148d565b5f826114f857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b5f6020828403121561155b575f5ffd5b5051919050565b5f60208284031215611572575f5ffd5b81516113af816113b6565b5f82518060208501845e5f92019182525091905056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a26469706673582212201bf813d399ed67e60831d6c869463a21fc5e5056e06db53bb05441d14a88432a64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x7bc06c482dead17c0e297afbc32f6e63d3846650": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000000000000000fb": "0x000000000000000000000000851356ae760d987e095750cceb3bc6014560891c", + "0x00000000000000000000000000000000000000000000000000000000000000fc": "0x0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007969c5ed335650692bc04293b07f5bf2e7a673c0" + } + }, + "0x84ea74d481ee0a5332c457a4d796187f6ba67feb": { + "nonce": 1, + "balance": "0x0", + "code": "0x60808060405260043610156011575f80fd5b5f3560e01c63c2985578146023575f80fd5b346039575f366003190112603957805f60209252f35b5f80fdfea264697066735822122013c5f1468a1f1f0157f23ba5e12ee6155a4a92bac6399a4b6487606dad4ea56864736f6c634300081b0033", + "storage": {} + }, + "0x851356ae760d987e095750cceb3bc6014560891c": { + "nonce": 1, + "balance": "0xde0b6b3a7640000", + "code": "0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x00000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65", + "0x00000000000000000000000000000000000000000000000000000000000000fb": "0x000000000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc9", + "0x00000000000000000000000000000000000000000000000000000000000000fc": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000004c5859f0f772848b2d91f1d83e2fe57935348029", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", + "0xf30de5dd89e866564a2ae4ccd6bce63a4b4930da9725a34e42ab718be7984ae8": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000" + } + }, + "0x8a791620dd6260079bf849dc5567adc3f2fdc318": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000068b1d87f95878fe05b998f19b66f4baba5de1aed", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0x95401dc811bb5740090279ba06cfa8fcf6113778": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033", + "storage": { + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000004826533b4897376654bb4d4ad88b7fafd0c98528", + "0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", + "0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e": "0x0000000000000000000000000000000000000000000000000000000000000013" + } + }, + "0x959922be3caee4b8cd9a407cc3ac1c251c2007b1": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b50600436106103b3575f3560e01c8063886f1195116101f5578063de02e50311610114578063f6efbb59116100a9578063fabc1cbc11610079578063fabc1cbc14610a33578063fbf1e2c114610a46578063fce36c7d14610a59578063ff9f6cce14610a6c575f5ffd5b8063f6efbb59146109e7578063f74e8eac146109fa578063f8cd844814610a0d578063f96abf2e14610a20575f5ffd5b8063ed71e6a2116100e4578063ed71e6a214610967578063f22cef8514610994578063f2f07ab4146109a7578063f2fde38b146109d4575f5ffd5b8063de02e50314610907578063e063f81f1461091a578063e810ce211461092d578063ea4d3c9b14610940575f5ffd5b8063a50a1d9c1161018a578063bf21a8aa1161015a578063bf21a8aa14610879578063c46db606146108a0578063ca8aa7c7146108cd578063dcbb03b3146108f4575f5ffd5b8063a50a1d9c14610807578063aebd8bae1461081a578063b3dbb0e014610847578063bb7e451f1461085a575f5ffd5b80639cb9a5fa116101c55780639cb9a5fa146107a75780639d45c281146107ba5780639de4b35f146107e1578063a0169ddd146107f4575f5ffd5b8063886f11951461074c5780638da5cb5b146107735780639104c319146107845780639be3d4e41461079f575f5ffd5b80634596021c116102e15780635c975abb11610276578063715018a611610246578063715018a6146106ff5780637b8f8b0514610707578063863cb9a91461070f578063865c695314610722575f5ffd5b80635c975abb146106a25780635e9d8348146106aa57806363f6a798146106bd5780636d21117e146106d2575f5ffd5b806354fd4d50116102b157806354fd4d501461064f57806358baaa3e14610664578063595c6a67146106775780635ac86ab71461067f575f5ffd5b80634596021c146105d85780634657e26a146105eb5780634b943960146106125780634d18cc3514610638575f5ffd5b8063149bc8721161035757806339b70e381161032757806339b70e38146105745780633a8c07861461059b5780633ccc861d146105b25780633efe1db6146105c5575f5ffd5b8063149bc872146104d95780632b9f64a4146104fa57806336af41fa1461053a57806337838ed01461054d575f5ffd5b80630e9a53cf116103925780630e9a53cf1461043f5780630eb383451461048c578063131433b41461049f578063136439dd146104c6575f5ffd5b806218572c146103b757806304a0c502146103ee5780630ca298991461042a575b5f5ffd5b6103d96103c5366004613bb9565b60d16020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104157f0000000000000000000000000000000000000000000000000000000000278d0081565b60405163ffffffff90911681526020016103e5565b61043d610438366004613c31565b610a7f565b005b610447610d44565b6040516103e591905f6080820190508251825263ffffffff602084015116602083015263ffffffff604084015116604083015260608301511515606083015292915050565b61043d61049a366004613c8d565b610e44565b6104157f0000000000000000000000000000000000000000000000000000000065fb788081565b61043d6104d4366004613cc4565b610ec4565b6104ec6104e7366004613cdb565b610f99565b6040519081526020016103e5565b610522610508366004613bb9565b60cc6020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b61043d610548366004613cf5565b61100e565b6104157f000000000000000000000000000000000000000000000000000000000076a70081565b6105227f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b60cb5461041590600160a01b900463ffffffff1681565b61043d6105c0366004613d44565b61119d565b61043d6105d3366004613d9a565b6111e2565b61043d6105e6366004613dc4565b6113d6565b6105227f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b610625610620366004613bb9565b611457565b60405161ffff90911681526020016103e5565b60cb5461041590600160c01b900463ffffffff1681565b6106576114b2565b6040516103e59190613e16565b61043d610672366004613e4b565b6114e2565b61043d6114f6565b6103d961068d366004613e64565b606654600160ff9092169190911b9081161490565b6066546104ec565b6103d96106b8366004613e84565b6115a5565b60cb5461062590600160e01b900461ffff1681565b6103d96106e0366004613eb5565b60cf60209081525f928352604080842090915290825290205460ff1681565b61043d611630565b60ca546104ec565b61043d61071d366004613bb9565b611641565b6104ec610730366004613edf565b60cd60209081525f928352604080842090915290825290205481565b6105227f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b0316610522565b61052273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b610447611652565b61043d6107b5366004613f0b565b6116ee565b6104157f0000000000000000000000000000000000000000000000000000000000093a8081565b6106256107ef366004613f42565b611887565b61043d610802366004613bb9565b61190a565b61043d610815366004613f7e565b611915565b6103d9610828366004613eb5565b60d260209081525f928352604080842090915290825290205460ff1681565b61043d610855366004613f97565b611926565b6104ec610868366004613bb9565b60ce6020525f908152604090205481565b6104157f00000000000000000000000000000000000000000000000000000000005c490081565b6103d96108ae366004613eb5565b60d060209081525f928352604080842090915290825290205460ff1681565b6105227f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b61043d610902366004613fc1565b611a6f565b610447610915366004613cc4565b611bda565b610625610928366004613edf565b611c6a565b61041561093b366004613cc4565b611ccf565b6105227f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b6103d9610975366004613eb5565b60d360209081525f928352604080842090915290825290205460ff1681565b61043d6109a2366004613edf565b611d50565b6103d96109b5366004613eb5565b60d760209081525f928352604080842090915290825290205460ff1681565b61043d6109e2366004613bb9565b611eba565b61043d6109f5366004614005565b611f35565b61043d610a08366004614063565b61206a565b6104ec610a1b366004613cdb565b612250565b61043d610a2e366004613e4b565b612260565b61043d610a41366004613cc4565b6123af565b60cb54610522906001600160a01b031681565b61043d610a67366004613cf5565b6124c5565b61043d610a7a366004613cf5565b612614565b60665460099061020090811603610aa95760405163840a48d560e01b815260040160405180910390fd5b610ab66020850185613bb9565b610abf81612793565b610adc5760405163932d94f760e01b815260040160405180910390fd5b610ae461283d565b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc75890610b309088906004016140ce565b602060405180830381865afa158015610b4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6f91906140dc565b610b8c57604051631fb1705560e21b815260040160405180910390fd5b5f5b83811015610d325736858583818110610ba957610ba96140f7565b9050602002810190610bbb919061410b565b90505f60ce81610bce60208b018b613bb9565b6001600160a01b031681526020808201929092526040015f90812054925090610bf9908a018a613bb9565b8284604051602001610c0d93929190614333565b6040516020818303038152906040528051906020012090505f610c2f84612896565b9050600160d75f610c4360208e018e613bb9565b6001600160a01b0316815260208082019290925260409081015f9081208682529092529020805460ff1916911515919091179055610c82836001614376565b60ce5f610c9260208e018e613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f208190555081336001600160a01b03167ffff0759ccb371dfb5691798724e70b4fa61cb3bfe730a33ac19fb86a48efc7568c8688604051610cf393929190614389565b60405180910390a3610d22333083610d116040890160208a01613bb9565b6001600160a01b0316929190612a81565b505060019092019150610b8e9050565b50610d3d6001609755565b5050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca545b8015610e1c575f60ca610d7f6001846143ae565b81548110610d8f57610d8f6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161580156060830181905291925090610dfe5750806040015163ffffffff164210155b15610e095792915050565b5080610e14816143c1565b915050610d6b565b5050604080516080810182525f80825260208201819052918101829052606081019190915290565b610e4c612aec565b6001600160a01b0382165f81815260d1602052604080822054905160ff9091169284151592841515927f4de6293e668df1398422e1def12118052c1539a03cbfedc145895d48d7685f1c9190a4506001600160a01b03919091165f90815260d160205260409020805460ff1916911515919091179055565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610f26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4a91906140dc565b610f6757604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610f8c5760405163c61dca5d60e01b815260040160405180910390fd5b610f9582612b46565b5050565b5f80610fa86020840184613bb9565b8360200135604051602001610ff19392919060f89390931b6001600160f81b031916835260609190911b6bffffffffffffffffffffffff19166001830152601582015260350190565b604051602081830303815290604052805190602001209050919050565b6066546001906002908116036110375760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661106657604051635c427cd960e01b815260040160405180910390fd5b61106e61283d565b5f5b8281101561118d573684848381811061108b5761108b6140f7565b905060200281019061109d91906143d6565b335f81815260ce602090815260408083205490519495509391926110c79290918591879101614468565b6040516020818303038152906040528051906020012090506110e883612b83565b335f90815260d0602090815260408083208484529091529020805460ff1916600190811790915561111a908390614376565b335f81815260ce602052604090819020929092559051829184917f51088b8c89628df3a8174002c2a034d0152fce6af8415d651b2a4734bf2704829061116190889061448e565b60405180910390a4611182333060408601803590610d119060208901613bb9565b505050600101611070565b506111986001609755565b505050565b6066546002906004908116036111c65760405163840a48d560e01b815260040160405180910390fd5b6111ce61283d565b6111d88383612c6e565b6111986001609755565b60665460039060089081160361120b5760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b0316331461123657604051635c427cd960e01b815260040160405180910390fd5b60cb5463ffffffff600160c01b90910481169083161161126957604051631ca7e50b60e21b815260040160405180910390fd5b428263ffffffff161061128f576040516306957c9160e11b815260040160405180910390fd5b60ca5460cb545f906112ae90600160a01b900463ffffffff16426144a0565b6040805160808101825287815263ffffffff87811660208084018281528684168587018181525f6060880181815260ca8054600181018255925297517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee160029092029182015592517f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee290930180549151975193871667ffffffffffffffff1990921691909117600160201b978716979097029690961760ff60401b1916600160401b921515929092029190911790945560cb805463ffffffff60c01b1916600160c01b840217905593519283529394508892908616917fecd866c3c158fa00bf34d803d5f6023000b57080bcb48af004c2b4b46b3afd08910160405180910390a45050505050565b6066546002906004908116036113ff5760405163840a48d560e01b815260040160405180910390fd5b61140761283d565b5f5b838110156114465761143e858583818110611426576114266140f7565b905060200281019061143891906144bc565b84612c6e565b600101611409565b506114516001609755565b50505050565b6001600160a01b0381165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff16908201526114ac90612ef6565b92915050565b60606114dd7f76302e302e300000000000000000000000000000000000000000000000000006612f66565b905090565b6114ea612aec565b6114f381612fa3565b50565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157c91906140dc565b61159957604051631d77d47760e21b815260040160405180910390fd5b6115a35f19612b46565b565b5f6116288260ca6115b96020830183613e4b565b63ffffffff16815481106115cf576115cf6140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152613014565b506001919050565b611638612aec565b6115a35f6131b7565b611649612aec565b6114f381613208565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8054611685906001906143ae565b81548110611695576116956140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff1615156060820152919050565b6066546005906020908116036117175760405163840a48d560e01b815260040160405180910390fd5b8361172181612793565b61173e5760405163932d94f760e01b815260040160405180910390fd5b61174661283d565b5f5b83811015610d325736858583818110611763576117636140f7565b9050602002810190611775919061410b565b6001600160a01b0388165f90815260ce60209081526040808320549051939450926117a6918b918591879101614333565b6040516020818303038152906040528051906020012090505f6117c884612896565b6001600160a01b038b165f90815260d3602090815260408083208684529091529020805460ff19166001908117909155909150611806908490614376565b6001600160a01b038b165f81815260ce60205260409081902092909255905183919033907ffc8888bffd711da60bc5092b33f677d81896fe80ecc677b84cfab8184462b6e0906118599088908a906144d0565b60405180910390a4611877333083610d116040890160208a01613bb9565b5050600190920191506117489050565b6001600160a01b0382165f90815260d66020526040812061190390826118ba6118b5368790038701876144e8565b613263565b815260208082019290925260409081015f208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152612ef6565b9392505050565b33610f9581836132c6565b61191d612aec565b6114f381613329565b60665460079060809081160361194f5760405163840a48d560e01b815260040160405180910390fd5b8261195981612793565b6119765760405163932d94f760e01b815260040160405180910390fd5b60cb545f9061199290600160a01b900463ffffffff16426144a0565b6001600160a01b0386165f90815260d5602090815260408083208151606081018352905461ffff80821683526201000082041693820193909352600160201b90920463ffffffff1690820152919250906119eb90612ef6565b6001600160a01b0387165f90815260d560205260409020909150611a10908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388169133917fd1e028bd664486a46ad26040e999cd2d22e1e9a094ee6afe19fcf64678f16f749181900360600190a3505050505050565b606654600690604090811603611a985760405163840a48d560e01b815260040160405180910390fd5b83611aa281612793565b611abf5760405163932d94f760e01b815260040160405180910390fd5b60cb545f90611adb90600160a01b900463ffffffff16426144a0565b6001600160a01b038781165f90815260d460209081526040808320938a1683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff1692810192909252919250611b4290612ef6565b6001600160a01b038089165f90815260d460209081526040808320938b16835292905220909150611b74908684613394565b6040805163ffffffff8416815261ffff838116602083015287168183015290516001600160a01b0388811692908a169133917f48e198b6ae357e529204ee53a8e514c470ff77d9cc8e4f7207f8b5d490ae6934919081900360600190a450505050505050565b604080516080810182525f80825260208201819052918101829052606081019190915260ca8281548110611c1057611c106140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff161515606082015292915050565b6001600160a01b038281165f90815260d46020908152604080832093851683529281528282208351606081018552905461ffff80821683526201000082041692820192909252600160201b90910463ffffffff16928101929092529061190390612ef6565b60ca545f905b63ffffffff811615611d36578260ca611cef600184614550565b63ffffffff1681548110611d0557611d056140f7565b905f5260205f2090600202015f015403611d2457611903600182614550565b80611d2e8161456c565b915050611cd5565b5060405163504570e360e01b815260040160405180910390fd5b81611d5a81612793565b611d775760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dff91906140dc565b80611e93575060405163ba1a84e560e01b81526001600160a01b0384811660048301525f917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063ba1a84e590602401602060405180830381865afa158015611e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e91919061458a565b115b611eb05760405163fb494ea160e01b815260040160405180910390fd5b61119883836132c6565b611ec2612aec565b6001600160a01b038116611f2c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6114f3816131b7565b5f54610100900460ff1615808015611f5357505f54600160ff909116105b80611f6c5750303b158015611f6c57505f5460ff166001145b611fcf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611f23565b5f805460ff191660011790558015611ff0575f805461ff0019166101001790555b611ff985612b46565b612002866131b7565b61200b84613208565b61201483612fa3565b61201d82613329565b8015612062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b606654600890610100908116036120945760405163840a48d560e01b815260040160405180910390fd5b8361209e81612793565b6120bb5760405163932d94f760e01b815260040160405180910390fd5b6040516304c1b8eb60e31b81526001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063260dc758906121079087906004016140ce565b602060405180830381865afa158015612122573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214691906140dc565b61216357604051631fb1705560e21b815260040160405180910390fd5b60cb545f9061217f90600160a01b900463ffffffff16426144a0565b6001600160a01b0387165f90815260d660205260408120919250906121b190826118ba6118b5368b90038b018b6144e8565b6001600160a01b0388165f90815260d6602052604081209192506121f691906121e26118b5368b90038b018b6144e8565b81526020019081526020015f208684613394565b866001600160a01b0316336001600160a01b03167f14918b3834ab6752eb2e1b489b6663a67810efb5f56f3944a97ede8ecf1fd9f18885858a60405161223f94939291906145a1565b60405180910390a350505050505050565b5f6001610fa86020840184613bb9565b6066546003906008908116036122895760405163840a48d560e01b815260040160405180910390fd5b60cb546001600160a01b031633146122b457604051635c427cd960e01b815260040160405180910390fd5b60ca5463ffffffff8316106122dc576040516394a8d38960e01b815260040160405180910390fd5b5f60ca8363ffffffff16815481106122f6576122f66140f7565b905f5260205f20906002020190508060010160089054906101000a900460ff161561233457604051631b14174b60e01b815260040160405180910390fd5b6001810154600160201b900463ffffffff16421061236557604051630c36f66560e21b815260040160405180910390fd5b60018101805460ff60401b1916600160401b17905560405163ffffffff8416907fd850e6e5dfa497b72661fa73df2923464eaed9dc2ff1d3cb82bccbfeabe5c41e905f90a2505050565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561240b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242f91906145d5565b6001600160a01b0316336001600160a01b0316146124605760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146124875760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b6066545f906001908116036124ed5760405163840a48d560e01b815260040160405180910390fd5b6124f561283d565b5f5b8281101561118d5736848483818110612512576125126140f7565b905060200281019061252491906143d6565b335f81815260ce6020908152604080832054905194955093919261254e9290918591879101614468565b60405160208183030381529060405280519060200120905061256f83612b83565b335f90815260cf602090815260408083208484529091529020805460ff191660019081179091556125a1908390614376565b335f81815260ce602052604090819020929092559051829184917f450a367a380c4e339e5ae7340c8464ef27af7781ad9945cfe8abd828f89e6281906125e890889061448e565b60405180910390a4612609333060408601803590610d119060208901613bb9565b5050506001016124f7565b60665460049060109081160361263d5760405163840a48d560e01b815260040160405180910390fd5b335f90815260d1602052604090205460ff1661266c57604051635c427cd960e01b815260040160405180910390fd5b61267461283d565b5f5b8281101561118d5736848483818110612691576126916140f7565b90506020028101906126a391906143d6565b335f81815260ce602090815260408083205490519495509391926126cd9290918591879101614468565b6040516020818303038152906040528051906020012090506126ee83612b83565b335f90815260d2602090815260408083208484529091529020805460ff19166001908117909155612720908390614376565b335f81815260ce602052604090819020929092559051829184917f5251b6fdefcb5d81144e735f69ea4c695fd43b0289ca53dc075033f5fc80068b9061276790889061448e565b60405180910390a4612788333060408601803590610d119060208901613bb9565b505050600101612676565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015612819573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ac91906140dc565b60026097540361288f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611f23565b6002609755565b5f6128c96128a483806145f0565b6128b46080860160608701613e4b565b6128c460a0870160808801613e4b565b613463565b5f6128d760408401846145f0565b9050116128f75760405163796cc52560e01b815260040160405180910390fd5b4261290860a0840160808501613e4b565b6129186080850160608601613e4b565b61292291906144a0565b63ffffffff16106129465760405163150358a160e21b815260040160405180910390fd5b5f80805b61295760408601866145f0565b9050811015612a48573661296e60408701876145f0565b8381811061297e5761297e6140f7565b6040029190910191505f90506129976020830183613bb9565b6001600160a01b0316036129be57604051630863a45360e11b815260040160405180910390fd5b6129cb6020820182613bb9565b6001600160a01b0316836001600160a01b0316106129fc576040516310fb47f160e31b815260040160405180910390fd5b5f816020013511612a20576040516310eb483f60e21b815260040160405180910390fd5b612a2d6020820182613bb9565b9250612a3d602082013585614376565b93505060010161294a565b506f4b3b4ca85a86c47a098a223fffffffff821115612a7a5760405163070b5a6f60e21b815260040160405180910390fd5b5092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526114519085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613761565b6033546001600160a01b031633146115a35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611f23565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b612bb0612b9082806145f0565b612ba06080850160608601613e4b565b6128c460a0860160808701613e4b565b5f816040013511612bd4576040516310eb483f60e21b815260040160405180910390fd5b6f4b3b4ca85a86c47a098a223fffffffff81604001351115612c095760405163070b5a6f60e21b815260040160405180910390fd5b612c3963ffffffff7f0000000000000000000000000000000000000000000000000000000000278d001642614376565b612c496080830160608401613e4b565b63ffffffff1611156114f357604051637ee2b44360e01b815260040160405180910390fd5b5f60ca612c7e6020850185613e4b565b63ffffffff1681548110612c9457612c946140f7565b5f91825260209182902060408051608081018252600293909302909101805483526001015463ffffffff80821694840194909452600160201b810490931690820152600160401b90910460ff16151560608201529050612cf48382613014565b5f612d056080850160608601613bb9565b6001600160a01b038082165f90815260cc60205260409020549192501680612d2a5750805b336001600160a01b03821614612d5357604051635c427cd960e01b815260040160405180910390fd5b5f5b612d6260a0870187614635565b90508110156120625736612d7960e08801886145f0565b83818110612d8957612d896140f7565b6001600160a01b0387165f90815260cd602090815260408083209302949094019450929091508290612dbd90850185613bb9565b6001600160a01b03166001600160a01b031681526020019081526020015f2054905080826020013511612e035760405163aa385e8160e01b815260040160405180910390fd5b5f612e128260208501356143ae565b6001600160a01b0387165f90815260cd60209081526040822092935085018035929190612e3f9087613bb9565b6001600160a01b031681526020808201929092526040015f2091909155612e809089908390612e7090870187613bb9565b6001600160a01b03169190613834565b86516001600160a01b03808a1691878216918916907f9543dbd55580842586a951f0386e24d68a5df99ae29e3b216588b45fd684ce3190612ec46020890189613bb9565b604080519283526001600160a01b039091166020830152810186905260600160405180910390a4505050600101612d55565b5f816040015163ffffffff165f1480612f285750815161ffff908116148015612f285750816040015163ffffffff1642105b15612f4057505060cb54600160e01b900461ffff1690565b816040015163ffffffff16421015612f595781516114ac565b506020015190565b919050565b60605f612f7283613864565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b60cb546040805163ffffffff600160a01b9093048316815291831660208301527faf557c6c02c208794817a705609cfa935f827312a1adfdd26494b6b95dd2b4b3910160405180910390a160cb805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b80606001511561303757604051631b14174b60e01b815260040160405180910390fd5b806040015163ffffffff1642101561306257604051631437a2bb60e31b815260040160405180910390fd5b61306f60c0830183614635565b905061307e60a0840184614635565b90501461309e576040516343714afd60e01b815260040160405180910390fd5b6130ab60e08301836145f0565b90506130ba60c0840184614635565b9050146130da576040516343714afd60e01b815260040160405180910390fd5b8051613106906130f06040850160208601613e4b565b6130fd604086018661467a565b8660600161388b565b5f5b61311560a0840184614635565b9050811015611198576131af608084013561313360a0860186614635565b84818110613143576131436140f7565b90506020020160208101906131589190613e4b565b61316560c0870187614635565b85818110613175576131756140f7565b9050602002810190613187919061467a565b61319460e08901896145f0565b878181106131a4576131a46140f7565b90506040020161392f565b600101613108565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb546040516001600160a01b038084169216907f237b82f438d75fc568ebab484b75b01d9287b9e98b490b7c23221623b6705dbb905f90a360cb80546001600160a01b0319166001600160a01b0392909216919091179055565b5f815f0151826020015163ffffffff166040516020016132ae92919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b6040516020818303038152906040526114ac906146bc565b6001600160a01b038083165f81815260cc602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917fbab947934d42e0ad206f25c9cab18b5bb6ae144acfb00f40b4e3aa59590ca3129190a4505050565b60cb546040805161ffff600160e01b9093048316815291831660208301527fe6cd4edfdcc1f6d130ab35f73d72378f3a642944fb4ee5bd84b7807a81ea1c4e910160405180910390a160cb805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b61271061ffff831611156133bb5760405163891c63df60e01b815260040160405180910390fd5b8254600160201b900463ffffffff1642116133e957604051637b1e25c560e01b815260040160405180910390fd5b8254600160201b900463ffffffff165f0361341057825461ffff191661ffff178355613427565b825462010000810461ffff1661ffff199091161783555b825463ffffffff909116600160201b0267ffffffff000000001961ffff90931662010000029290921667ffffffffffff00001990911617179055565b826134815760405163796cc52560e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000005c490063ffffffff168163ffffffff1611156134ce57604051630dd0b9f560e21b815260040160405180910390fd5b6134f87f0000000000000000000000000000000000000000000000000000000000093a80826146f3565b63ffffffff161561351c5760405163ee66470560e01b815260040160405180910390fd5b5f8163ffffffff16116135425760405163cb3f434d60e01b815260040160405180910390fd5b61356c7f0000000000000000000000000000000000000000000000000000000000093a80836146f3565b63ffffffff161561359057604051633c1a94f160e21b815260040160405180910390fd5b8163ffffffff167f000000000000000000000000000000000000000000000000000000000076a70063ffffffff16426135c991906143ae565b1115801561360357508163ffffffff167f0000000000000000000000000000000000000000000000000000000065fb788063ffffffff1611155b6136205760405163041aa75760e11b815260040160405180910390fd5b5f805b84811015612062575f86868381811061363e5761363e6140f7565b6136549260206040909202019081019150613bb9565b60405163198f077960e21b81526001600160a01b0380831660048301529192507f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c99091169063663c1de490602401602060405180830381865afa1580156136bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e191906140dc565b8061370857506001600160a01b03811673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0145b61372557604051632efd965160e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b0316106137575760405163dfad9ca160e01b815260040160405180910390fd5b9150600101613623565b5f6137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661396d9092919063ffffffff16565b905080515f14806137d55750808060200190518101906137d591906140dc565b6111985760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611f23565b6040516001600160a01b03831660248201526044810182905261119890849063a9059cbb60e01b90606401612ab5565b5f60ff8216601f8111156114ac57604051632cd44ac360e21b815260040160405180910390fd5b61389660208361471a565b6001901b8463ffffffff16106138be5760405162c6c39d60e71b815260040160405180910390fd5b5f6138c882610f99565b905061391284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508591505063ffffffff8916613983565b612062576040516369ca16c960e01b815260040160405180910390fd5b61393a60208361471a565b6001901b8463ffffffff16106139635760405163054ff4df60e51b815260040160405180910390fd5b5f6138c882612250565b606061397b84845f8561399a565b949350505050565b5f83613990868585613a71565b1495945050505050565b6060824710156139fb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611f23565b5f5f866001600160a01b03168587604051613a16919061472d565b5f6040518083038185875af1925050503d805f8114613a50576040519150601f19603f3d011682016040523d82523d5f602084013e613a55565b606091505b5091509150613a6687838387613b08565b979650505050505050565b5f60208451613a809190614743565b15613a9e576040516313717da960e21b815260040160405180910390fd5b8260205b85518111613aff57613ab5600285614743565b5f03613ad657815f528086015160205260405f209150600284049350613aed565b808601515f528160205260405f2091506002840493505b613af8602082614376565b9050613aa2565b50949350505050565b60608315613b765782515f03613b6f576001600160a01b0385163b613b6f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611f23565b508161397b565b61397b8383815115613b8b5781518083602001fd5b8060405162461bcd60e51b8152600401611f239190613e16565b6001600160a01b03811681146114f3575f5ffd5b5f60208284031215613bc9575f5ffd5b813561190381613ba5565b5f60408284031215613be4575f5ffd5b50919050565b5f5f83601f840112613bfa575f5ffd5b5081356001600160401b03811115613c10575f5ffd5b6020830191508360208260051b8501011115613c2a575f5ffd5b9250929050565b5f5f5f60608486031215613c43575f5ffd5b613c4d8585613bd4565b925060408401356001600160401b03811115613c67575f5ffd5b613c7386828701613bea565b9497909650939450505050565b80151581146114f3575f5ffd5b5f5f60408385031215613c9e575f5ffd5b8235613ca981613ba5565b91506020830135613cb981613c80565b809150509250929050565b5f60208284031215613cd4575f5ffd5b5035919050565b5f60408284031215613ceb575f5ffd5b6119038383613bd4565b5f5f60208385031215613d06575f5ffd5b82356001600160401b03811115613d1b575f5ffd5b613d2785828601613bea565b90969095509350505050565b5f6101008284031215613be4575f5ffd5b5f5f60408385031215613d55575f5ffd5b82356001600160401b03811115613d6a575f5ffd5b613d7685828601613d33565b9250506020830135613cb981613ba5565b803563ffffffff81168114612f61575f5ffd5b5f5f60408385031215613dab575f5ffd5b82359150613dbb60208401613d87565b90509250929050565b5f5f5f60408486031215613dd6575f5ffd5b83356001600160401b03811115613deb575f5ffd5b613df786828701613bea565b9094509250506020840135613e0b81613ba5565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215613e5b575f5ffd5b61190382613d87565b5f60208284031215613e74575f5ffd5b813560ff81168114611903575f5ffd5b5f60208284031215613e94575f5ffd5b81356001600160401b03811115613ea9575f5ffd5b61397b84828501613d33565b5f5f60408385031215613ec6575f5ffd5b8235613ed181613ba5565b946020939093013593505050565b5f5f60408385031215613ef0575f5ffd5b8235613efb81613ba5565b91506020830135613cb981613ba5565b5f5f5f60408486031215613f1d575f5ffd5b8335613f2881613ba5565b925060208401356001600160401b03811115613c67575f5ffd5b5f5f60608385031215613f53575f5ffd5b8235613f5e81613ba5565b9150613dbb8460208501613bd4565b803561ffff81168114612f61575f5ffd5b5f60208284031215613f8e575f5ffd5b61190382613f6d565b5f5f60408385031215613fa8575f5ffd5b8235613fb381613ba5565b9150613dbb60208401613f6d565b5f5f5f60608486031215613fd3575f5ffd5b8335613fde81613ba5565b92506020840135613fee81613ba5565b9150613ffc60408501613f6d565b90509250925092565b5f5f5f5f5f60a08688031215614019575f5ffd5b853561402481613ba5565b945060208601359350604086013561403b81613ba5565b925061404960608701613d87565b915061405760808701613f6d565b90509295509295909350565b5f5f5f60808486031215614075575f5ffd5b833561408081613ba5565b925061408f8560208601613bd4565b9150613ffc60608501613f6d565b80356140a881613ba5565b6001600160a01b0316825263ffffffff6140c460208301613d87565b1660208301525050565b604081016114ac828461409d565b5f602082840312156140ec575f5ffd5b815161190381613c80565b634e487b7160e01b5f52603260045260245ffd5b5f823560be1983360301811261411f575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261413e575f5ffd5b83016020810192503590506001600160401b0381111561415c575f5ffd5b8060061b3603821315613c2a575f5ffd5b8183526020830192505f815f5b848110156141d057813561418d81613ba5565b6001600160a01b0316865260208201356bffffffffffffffffffffffff81168082146141b7575f5ffd5b602088015250604095860195919091019060010161417a565b5093949350505050565b5f5f8335601e198436030181126141ef575f5ffd5b83016020810192503590506001600160401b0381111561420d575f5ffd5b803603821315613c2a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f61424e8283614129565b60c0855261426060c08601828461416d565b915050602083013561427181613ba5565b6001600160a01b0316602085015261428c6040840184614129565b858303604087015280835290915f91906020015b818310156142db5783356142b381613ba5565b6001600160a01b031681526020848101359082015260409384019360019390930192016142a0565b6142e760608701613d87565b63ffffffff81166060890152935061430160808701613d87565b63ffffffff81166080890152935061431c60a08701876141da565b9450925086810360a0880152613a6681858561421b565b60018060a01b0384168152826020820152606060408201525f6143596060830184614243565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156114ac576114ac614362565b614393818561409d565b826040820152608060608201525f6143596080830184614243565b818103818111156114ac576114ac614362565b5f816143cf576143cf614362565b505f190190565b5f8235609e1983360301811261411f575f5ffd5b5f6143f58283614129565b60a0855261440760a08601828461416d565b915050602083013561441881613ba5565b6001600160a01b031660208501526040838101359085015263ffffffff61444160608501613d87565b16606085015263ffffffff61445860808501613d87565b1660808501528091505092915050565b60018060a01b0384168152826020820152606060408201525f61435960608301846143ea565b602081525f61190360208301846143ea565b63ffffffff81811683821601908111156114ac576114ac614362565b5f823560fe1983360301811261411f575f5ffd5b828152604060208201525f61397b6040830184614243565b5f60408284031280156144f9575f5ffd5b50604080519081016001600160401b038111828210171561452857634e487b7160e01b5f52604160045260245ffd5b604052823561453681613ba5565b815261454460208401613d87565b60208201529392505050565b63ffffffff82811682821603908111156114ac576114ac614362565b5f63ffffffff82168061458157614581614362565b5f190192915050565b5f6020828403121561459a575f5ffd5b5051919050565b60a081016145af828761409d565b63ffffffff94909416604082015261ffff92831660608201529116608090910152919050565b5f602082840312156145e5575f5ffd5b815161190381613ba5565b5f5f8335601e19843603018112614605575f5ffd5b8301803591506001600160401b0382111561461e575f5ffd5b6020019150600681901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261464a575f5ffd5b8301803591506001600160401b03821115614663575f5ffd5b6020019150600581901b3603821315613c2a575f5ffd5b5f5f8335601e1984360301811261468f575f5ffd5b8301803591506001600160401b038211156146a8575f5ffd5b602001915036819003821315613c2a575f5ffd5b80516020808301519190811015613be4575f1960209190910360031b1b16919050565b634e487b7160e01b5f52601260045260245ffd5b5f63ffffffff831680614708576147086146df565b8063ffffffff84160691505092915050565b5f82614728576147286146df565b500490565b5f82518060208501845e5f920191825250919050565b5f82614751576147516146df565b50069056fea26469706673582212208a04019b905a2980e90af34d19e8183f44c54753298949b23fe5a0101e0d371864736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x998abeb3e57409262ae5b751f60747921b33613e": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033", + "storage": { + "0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b": "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f": "0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf", + "0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042", + "0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e": "0x000000000de0b6b3a7640000c5a5c42992decbae36851359345fe25997f5c42d" + } + }, + "0x9a676e781a523b5d0c0e43731313a708cb607508": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c8063a1060c88116100bf578063dce974b911610079578063dce974b914610334578063df5cf7231461035b578063ec76f44214610382578063f2fde38b146103b5578063f698da25146103c8578063fabc1cbc146103d0575f5ffd5b8063a1060c881461029a578063a364f4da146102ad578063a98fb355146102c0578063c825fe68146102d3578063cd6dc687146102fa578063d79aceab1461030d575f5ffd5b80635ac86ab7116101105780635ac86ab7146101fa5780635c975abb1461021d578063715018a61461022f578063886f1195146102375780638da5cb5b146102765780639926ee7d14610287575f5ffd5b8063136439dd1461014c578063374823b51461016157806349075da3146101a357806354fd4d50146101dd578063595c6a67146101f2575b5f5ffd5b61015f61015a36600461119f565b6103e3565b005b61018e61016f3660046111ca565b609960209081525f928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b6101d06101b13660046111f4565b609860209081525f928352604080842090915290825290205460ff1681565b60405161019a919061123f565b6101e56104b8565b60405161019a9190611293565b61015f6104e8565b61018e6102083660046112ac565b606654600160ff9092169190911b9081161490565b6066545b60405190815260200161019a565b61015f610597565b61025e7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6040516001600160a01b03909116815260200161019a565b6033546001600160a01b031661025e565b61015f61029536600461133a565b6105a8565b6102216102a8366004611427565b6107c7565b61015f6102bb36600461146a565b610846565b61015f6102ce366004611485565b61092b565b6102217f809c5ac049c45b7a7f050a20f00c16cf63797efbf8b1eb8d749fdfa39ff8f92981565b61015f6103083660046111ca565b610972565b6102217fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102217f4ee65f64218c67b68da66fd0db16560040a6b973290b9e71912d661ee53fe49581565b61025e7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b61015f61039036600461119f565b335f90815260996020908152604080832093835292905220805460ff19166001179055565b61015f6103c336600461146a565b610a8e565b610221610b07565b61015f6103de36600461119f565b610bc0565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610445573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046991906114f3565b61048657604051631d77d47760e21b815260040160405180910390fd5b60665481811681146104ab5760405163c61dca5d60e01b815260040160405180910390fd5b6104b482610ccf565b5050565b60606104e37f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906114f3565b61058b57604051631d77d47760e21b815260040160405180910390fd5b6105955f19610ccf565b565b61059f610d49565b6105955f610da3565b6066545f906001908116036105d05760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038816845290915290205460ff1660018111156106095761060961122b565b0361062757604051631aa528bb60e11b815260040160405180910390fd5b6001600160a01b0383165f90815260996020908152604080832085830151845290915290205460ff161561066e57604051630d4c4c9160e21b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa1580156106d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f691906114f3565b61071357604051639f88c8af60e01b815260040160405180910390fd5b6107378361072b8533866020015187604001516107c7565b84516040860151610df4565b6001600160a01b0383165f81815260996020908152604080832086830151845282528083208054600160ff19918216811790925533808652609885528386208787529094529382902080549094168117909355519092917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b41916107ba919061123f565b60405180910390a3505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd60208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061083d9060c00160405160208183030381529060405280519060200120610e4c565b95945050505050565b6066545f9060019081160361086e5760405163840a48d560e01b815260040160405180910390fd5b6001335f9081526098602090815260408083206001600160a01b038716845290915290205460ff1660018111156108a7576108a761122b565b146108c5576040516352df45c960e01b815260040160405180910390fd5b335f8181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b419161091f919061123f565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610966929190611512565b60405180910390a25050565b5f54610100900460ff161580801561099057505f54600160ff909116105b806109a95750303b1580156109a957505f5460ff166001145b610a115760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610a32575f805461ff0019166101001790555b610a3b82610ccf565b610a4483610da3565b8015610a89575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a96610d49565b6001600160a01b038116610afb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a08565b610b0481610da3565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea610b74610e92565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c409190611540565b6001600160a01b0316336001600160a01b031614610c715760405163794821ff60e01b815260040160405180910390fd5b60665480198219811614610c985760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610966565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b60605f610d1883610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b031633146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b42811015610e1557604051630819bdcd60e01b815260040160405180910390fd5b610e296001600160a01b0385168484610f5b565b610e4657604051638baa579f60e01b815260040160405180910390fd5b50505050565b5f610e55610b07565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60605f610ebe7f76302e302e300000000000000000000000000000000000000000000000000006610d0c565b9050805f81518110610ed257610ed261155b565b602001015160f81c60f81b81600181518110610ef057610ef061155b565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f60ff8216601f811115610f5557604051632cd44ac360e21b815260040160405180910390fd5b92915050565b5f5f5f610f688585610fb9565b90925090505f816004811115610f8057610f8061122b565b148015610f9e5750856001600160a01b0316826001600160a01b0316145b80610faf5750610faf868686610ffb565b9695505050505050565b5f5f8251604103610fed576020830151604084015160608501515f1a610fe1878285856110e2565b94509450505050610ff4565b505f905060025b9250929050565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161102392919061156f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611061919061158f565b5f60405180830381855afa9150503d805f8114611099576040519150601f19603f3d011682016040523d82523d5f602084013e61109e565b606091505b50915091508180156110b257506020815110155b8015610faf57508051630b135d3f60e11b906110d790830160209081019084016115a5565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561111757505f90506003611196565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611168573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611190575f60019250925050611196565b91505f90505b94509492505050565b5f602082840312156111af575f5ffd5b5035919050565b6001600160a01b0381168114610b04575f5ffd5b5f5f604083850312156111db575f5ffd5b82356111e6816111b6565b946020939093013593505050565b5f5f60408385031215611205575f5ffd5b8235611210816111b6565b91506020830135611220816111b6565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061125f57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112a56020830184611265565b9392505050565b5f602082840312156112bc575f5ffd5b813560ff811681146112a5575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611303576113036112cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611332576113326112cc565b604052919050565b5f5f6040838503121561134b575f5ffd5b8235611356816111b6565b9150602083013567ffffffffffffffff811115611371575f5ffd5b830160608186031215611382575f5ffd5b61138a6112e0565b813567ffffffffffffffff8111156113a0575f5ffd5b8201601f810187136113b0575f5ffd5b803567ffffffffffffffff8111156113ca576113ca6112cc565b6113dd601f8201601f1916602001611309565b8181528860208385010111156113f1575f5ffd5b816020840160208301375f6020928201830152835283810135908301525060409182013591810191909152919491935090915050565b5f5f5f5f6080858703121561143a575f5ffd5b8435611445816111b6565b93506020850135611455816111b6565b93969395505050506040820135916060013590565b5f6020828403121561147a575f5ffd5b81356112a5816111b6565b5f5f60208385031215611496575f5ffd5b823567ffffffffffffffff8111156114ac575f5ffd5b8301601f810185136114bc575f5ffd5b803567ffffffffffffffff8111156114d2575f5ffd5b8560208284010111156114e3575f5ffd5b6020919091019590945092505050565b5f60208284031215611503575f5ffd5b815180151581146112a5575f5ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215611550575f5ffd5b81516112a5816111b6565b634e487b7160e01b5f52603260045260245ffd5b828152604060208201525f6115876040830184611265565b949350505050565b5f82518060208501845e5f920191825250919050565b5f602082840312156115b5575f5ffd5b505191905056fea2646970667358221220e0e0523d6fb8eb8aa79da912134baca493d9102de9a054d64ab128b842f8a16b64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b50600436106102b1575f3560e01c80636cfb44811161017b578063a9821821116100e4578063c221d8ae1161009e578063df5cf72311610079578063df5cf7231461072d578063f2fde38b14610754578063f605ce0814610767578063fabc1cbc1461077a575f5ffd5b8063c221d8ae146106f4578063cd6dc68714610707578063d3d96ff41461071a575f5ffd5b8063a982182114610666578063adc2e3d914610679578063b2447af71461068c578063b66bd9891461069f578063b9fbaed1146106b2578063ba1a84e5146106e1575f5ffd5b8063886f119511610135578063886f1195146105d55780638ce64854146105fc5780638da5cb5b1461061c57806394d7d00c1461062d578063952899ee14610640578063a9333ec814610653575f5ffd5b80636cfb4481146105425780636e3492b51461056d5780636e875dba14610580578063715018a61461059357806379ae50cd1461059b5780637bc1ef61146105ae575f5ffd5b80634177a87c1161021d57806354fd4d50116101d757806354fd4d50146104ca57806356c483e6146104df578063595c6a67146104f25780635ac86ab7146104fa5780635c975abb1461051d578063670d3ba21461052f575f5ffd5b80634177a87c1461042a5780634657e26a1461044a5780634a10ffe5146104715780634b5046ef1461049157806350feea20146104a4578063547afb87146104b7575f5ffd5b80632981eb771161026e5780632981eb771461035c5780632b453a9a146103985780632bab2c4a146103b8578063304c10cd146103cb57806336352057146103f657806340120dab14610409575f5ffd5b806310e1b9b8146102b55780631352c3e6146102de578063136439dd1461030157806315fe502814610316578063260dc75814610336578063261f84e014610349575b5f5ffd5b6102c86102c3366004614a50565b61078d565b6040516102d59190614a97565b60405180910390f35b6102f16102ec366004614aca565b6107c8565b60405190151581526020016102d5565b61031461030f366004614afe565b610843565b005b610329610324366004614b15565b610918565b6040516102d59190614b93565b6102f1610344366004614ba5565b610a2f565b610314610357366004614bff565b610a60565b6103837f000000000000000000000000000000000000000000000000000000000000038481565b60405163ffffffff90911681526020016102d5565b6103ab6103a6366004614ce4565b610d3b565b6040516102d59190614d87565b6103ab6103c6366004614dea565b610d51565b6103de6103d9366004614b15565b610df0565b6040516001600160a01b0390911681526020016102d5565b610314610404366004614e6e565b610e1f565b61041c610417366004614ec0565b611629565b6040516102d5929190614f4d565b61043d610438366004614ba5565b6117a4565b6040516102d59190614faa565b6103de7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b61048461047f366004614fbc565b6117c8565b6040516102d59190614fff565b61031461049f36600461504a565b611870565b6103146104b23660046150ca565b61192a565b6104846104c5366004615128565b611a88565b6104d2611b30565b6040516102d5919061516a565b6103146104ed36600461519f565b611b60565b610314611c65565b6102f16105083660046151c9565b606654600160ff9092169190911b9081161490565b6066545b6040519081526020016102d5565b6102f161053d366004614aca565b611d14565b610555610550366004614ec0565b611d25565b6040516001600160401b0390911681526020016102d5565b61031461057b3660046151ff565b611d3a565b61043d61058e366004614ba5565b61211b565b61031461212c565b6103296105a9366004614b15565b61213d565b6103837f00000000000000000000000000000000000000000000000000000000000004b081565b6103de7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b61060f61060a366004615230565b612217565b6040516102d59190615273565b6033546001600160a01b03166103de565b61048461063b366004615285565b6122d3565b61031461064e3660046152e0565b6123bf565b610555610661366004614ec0565b61287e565b610314610674366004615489565b6128ad565b610314610687366004615507565b61295f565b61052161069a366004614ba5565b612cbc565b6103146106ad3660046150ca565b612cde565b6106c56106c0366004614b15565b612e38565b60408051921515835263ffffffff9091166020830152016102d5565b6105216106ef366004614b15565b612ed2565b61043d610702366004614aca565b612ef2565b610314610715366004615549565b612f1b565b610314610728366004614ec0565b613038565b6103de7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc981565b610314610762366004614b15565b61315c565b610555610775366004614ec0565b6131d5565b610314610788366004614afe565b6131e1565b604080516060810182525f80825260208201819052918101829052906107bc856107b6866132f7565b8561335a565b925050505b9392505050565b6001600160a01b0382165f908152609e602052604081208190816107eb856132f7565b815260208082019290925260409081015f2081518083019092525460ff8116151580835261010090910463ffffffff16928201929092529150806108395750806020015163ffffffff164311155b9150505b92915050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156108a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c99190615573565b6108e657604051631d77d47760e21b815260040160405180910390fd5b606654818116811461090b5760405163c61dca5d60e01b815260040160405180910390fd5b610914826134c6565b5050565b6001600160a01b0381165f908152609d602052604081206060919061093c90613503565b90505f816001600160401b0381111561095757610957614974565b60405190808252806020026020018201604052801561099b57816020015b604080518082019091525f80825260208201528152602001906001900390816109755790505b5090505f5b82811015610a27576001600160a01b0385165f908152609d60205260409020610a02906109cd908361350c565b604080518082019091525f80825260208201525060408051808201909152606082901c815263ffffffff909116602082015290565b828281518110610a1457610a14615592565b60209081029190910101526001016109a0565b509392505050565b60208082015182516001600160a01b03165f90815260989092526040822061083d9163ffffffff9081169061351716565b82610a6a8161352e565b610a875760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16610abf576040516348f7dbb960e01b815260040160405180910390fd5b5f5b82811015610d34575f6040518060400160405280876001600160a01b03168152602001868685818110610af657610af6615592565b9050602002810190610b0891906155a6565b610b169060208101906155c4565b63ffffffff168152509050610b60816020015163ffffffff1660985f896001600160a01b03166001600160a01b031681526020019081526020015f206135d890919063ffffffff16565b610b7d57604051631fb1705560e21b815260040160405180910390fd5b7f31629285ead2335ae0933f86ed2ae63321f7af77b4e6eaabc42c057880977e6c6040518060400160405280886001600160a01b03168152602001836020015163ffffffff16815250604051610bd391906155dd565b60405180910390a15f610be5826132f7565b90505f5b868685818110610bfb57610bfb615592565b9050602002810190610c0d91906155a6565b610c1b9060208101906155eb565b9050811015610d2957610c91878786818110610c3957610c39615592565b9050602002810190610c4b91906155a6565b610c599060208101906155eb565b83818110610c6957610c69615592565b9050602002016020810190610c7e9190614b15565b5f848152609960205260409020906135e3565b507f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83888887818110610cc657610cc6615592565b9050602002810190610cd891906155a6565b610ce69060208101906155eb565b84818110610cf657610cf6615592565b9050602002016020810190610d0b9190614b15565b604051610d19929190615630565b60405180910390a1600101610be9565b505050600101610ac1565b5050505050565b6060610d49848484436135f7565b949350505050565b6060610d5f858585856135f7565b90505f5b8451811015610de757610d8f858281518110610d8157610d81615592565b6020026020010151876107c8565b610ddf575f5b8451811015610ddd575f838381518110610db157610db1615592565b60200260200101518281518110610dca57610dca615592565b6020908102919091010152600101610d95565b505b600101610d63565b50949350505050565b6001600160a01b038082165f908152609760205260408120549091168015610e1857806107c1565b5090919050565b606654600190600290811603610e485760405163840a48d560e01b815260040160405180910390fd5b82610e528161352e565b610e6f5760405163932d94f760e01b815260040160405180910390fd5b5f6040518060400160405280866001600160a01b03168152602001856020016020810190610e9d91906155c4565b63ffffffff1690529050610eb460608501856155eb565b9050610ec360408601866155eb565b905014610ee3576040516343714afd60e01b815260040160405180910390fd5b60208082015182516001600160a01b03165f90815260989092526040909120610f159163ffffffff9081169061351716565b610f3257604051631fb1705560e21b815260040160405180910390fd5b610f48610f426020860186614b15565b826107c8565b610f655760405163ebbff49760e01b815260040160405180910390fd5b5f610f7360408601866155eb565b90506001600160401b03811115610f8c57610f8c614974565b604051908082528060200260200182016040528015610fb5578160200160208202803683370190505b5090505f5b610fc760408701876155eb565b90508110156115bb5780158061105a5750610fe560408701876155eb565b610ff060018461566a565b818110610fff57610fff615592565b90506020020160208101906110149190614b15565b6001600160a01b031661102a60408801886155eb565b8381811061103a5761103a615592565b905060200201602081019061104f9190614b15565b6001600160a01b0316115b61107757604051639f1c805360e01b815260040160405180910390fd5b61108460608701876155eb565b8281811061109457611094615592565b905060200201355f1080156110d45750670de0b6b3a76400006110ba60608801886155eb565b838181106110ca576110ca615592565b9050602002013511155b6110f157604051631353603160e01b815260040160405180910390fd5b61114d61110160408801886155eb565b8381811061111157611111615592565b90506020020160208101906111269190614b15565b60995f611132876132f7565b81526020019081526020015f206138e490919063ffffffff16565b61116a576040516331bc342760e11b815260040160405180910390fd5b5f806111bc61117c60208a018a614b15565b611185876132f7565b61119260408c018c6155eb565b878181106111a2576111a2615592565b90506020020160208101906111b79190614b15565b61335a565b805191935091506001600160401b03165f036111d95750506115b3565b5f6112146111ea60608b018b6155eb565b868181106111fa576111fa615592565b85516001600160401b031692602090910201359050613905565b835190915061122f6001600160401b0380841690831661391b565b86868151811061124157611241615592565b60200260200101818152505081835f0181815161125e919061567d565b6001600160401b031690525083518290859061127b90839061567d565b6001600160401b031690525060208401805183919061129b90839061567d565b6001600160401b031690525060208301515f600f9190910b12156113b3575f6112fe6112ca60608d018d6155eb565b888181106112da576112da615592565b9050602002013585602001516112ef9061569c565b6001600160801b031690613905565b9050806001600160401b03168460200181815161131b91906156c0565b600f0b9052507f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61134f60208d018d614b15565b8961135d60408f018f6155eb565b8a81811061136d5761136d615592565b90506020020160208101906113829190614b15565b611393885f0151896020015161392f565b88604001516040516113a99594939291906156ed565b60405180910390a1505b6114056113c360208c018c614b15565b6113cc896132f7565b6113d960408e018e6155eb565b898181106113e9576113e9615592565b90506020020160208101906113fe9190614b15565b878761394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd61143360208c018c614b15565b8861144160408e018e6155eb565b8981811061145157611451615592565b90506020020160208101906114669190614b15565b865160405161147a949392919043906156ed565b60405180910390a16114cb61149260208c018c614b15565b61149f60408d018d6155eb565b888181106114af576114af615592565b90506020020160208101906114c49190614b15565b8651613b86565b6001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91663601bb36f61150760208d018d614b15565b61151460408e018e6155eb565b8981811061152457611524615592565b90506020020160208101906115399190614b15565b875160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526001600160401b0380861660448401521660648201526084015f604051808303815f87803b158015611598575f5ffd5b505af11580156115aa573d5f5f3e3d5ffd5b50505050505050505b600101610fba565b507f80969ad29428d6797ee7aad084f9e4a42a82fc506dcd2ca3b6fb431f85ccebe56115ea6020870187614b15565b836115f860408901896155eb565b8561160660808c018c61573e565b60405161161997969594939291906157a8565b60405180910390a1505050505050565b6001600160a01b0382165f908152609d60205260408120606091829161164e90613503565b90505f816001600160401b0381111561166957611669614974565b6040519080825280602002602001820160405280156116ad57816020015b604080518082019091525f80825260208201528152602001906001900390816116875790505b5090505f826001600160401b038111156116c9576116c9614974565b60405190808252806020026020018201604052801561171257816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816116e75790505b5090505f5b83811015611795576001600160a01b0388165f908152609d60205260408120611744906109cd908461350c565b90508084838151811061175957611759615592565b602002602001018190525061176f89828a61078d565b83838151811061178157611781615592565b602090810291909101015250600101611717565b509093509150505b9250929050565b60605f6107c160995f6117b6866132f7565b81526020019081526020015f20613c08565b60605f83516001600160401b038111156117e4576117e4614974565b60405190808252806020026020018201604052801561180d578160200160208202803683370190505b5090505f5b8451811015610a275761183e85828151811061183057611830615592565b60200260200101518561287e565b82828151811061185057611850615592565b6001600160401b0390921660209283029190910190910152600101611812565b6066545f906001908116036118985760405163840a48d560e01b815260040160405180910390fd5b8382146118b8576040516343714afd60e01b815260040160405180910390fd5b5f5b8481101561192157611919878787848181106118d8576118d8615592565b90506020020160208101906118ed9190614b15565b8686858181106118ff576118ff615592565b9050602002016020810190611914919061583e565b613c14565b6001016118ba565b50505050505050565b836119348161352e565b6119515760405163932d94f760e01b815260040160405180910390fd5b604080518082019091526001600160a01b038616815263ffffffff851660208201525f61197d826132f7565b90506119be826020015163ffffffff1660985f8a6001600160a01b03166001600160a01b031681526020019081526020015f2061351790919063ffffffff16565b6119db57604051631fb1705560e21b815260040160405180910390fd5b5f5b84811015611a7e576119fa868683818110610c6957610c69615592565b611a175760405163585cfb2f60e01b815260040160405180910390fd5b7f7ab260fe0af193db5f4986770d831bda4ea46099dc817e8b6716dcae8af8e88b83878784818110611a4b57611a4b615592565b9050602002016020810190611a609190614b15565b604051611a6e929190615630565b60405180910390a16001016119dd565b5050505050505050565b60605f82516001600160401b03811115611aa457611aa4614974565b604051908082528060200260200182016040528015611acd578160200160208202803683370190505b5090505f5b8351811015610a2757611afe85858381518110611af157611af1615592565b602002602001015161287e565b828281518110611b1057611b10615592565b6001600160401b0390921660209283029190910190910152600101611ad2565b6060611b5b7f76302e302e300000000000000000000000000000000000000000000000000006613d18565b905090565b336001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91614611c5b57611b998261352e565b611bb6576040516348f5c3ed60e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0383811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015611c1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c3e9190615573565b611c5b5760405163ccea9e6f60e01b815260040160405180910390fd5b6109148282613d55565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015611cc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ceb9190615573565b611d0857604051631d77d47760e21b815260040160405180910390fd5b611d125f196134c6565b565b5f6107c183609a5f611132866132f7565b5f5f611d318484613f01565b95945050505050565b606654600290600490811603611d635760405163840a48d560e01b815260040160405180910390fd5b611d78611d736020840184614b15565b61352e565b80611d915750611d91611d736040840160208501614b15565b611dae576040516348f5c3ed60e01b815260040160405180910390fd5b5f5b611dbd60408401846155eb565b905081101561207f575f6040518060400160405280856020016020810190611de59190614b15565b6001600160a01b03168152602001611e0060408701876155eb565b85818110611e1057611e10615592565b9050602002016020810190611e2591906155c4565b63ffffffff168152509050611e72816020015163ffffffff1660985f876020016020810190611e549190614b15565b6001600160a01b0316815260208101919091526040015f2090613517565b611e8f57604051631fb1705560e21b815260040160405180910390fd5b609e5f611e9f6020870187614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f611ec8836132f7565b815260208101919091526040015f205460ff16611ef8576040516325131d4f60e01b815260040160405180910390fd5b611f32611f04826132f7565b609c5f611f146020890189614b15565b6001600160a01b0316815260208101919091526040015f2090614070565b50611f6a611f436020860186614b15565b609a5f611f4f856132f7565b81526020019081526020015f2061407b90919063ffffffff16565b50611f786020850185614b15565b6001600160a01b03167fad34c3070be1dffbcaa499d000ba2b8d9848aefcac3059df245dd95c4ece14fe82604051611fb091906155dd565b60405180910390a2604080518082019091525f815260208101611ff37f00000000000000000000000000000000000000000000000000000000000003844361585f565b63ffffffff169052609e5f61200b6020880188614b15565b6001600160a01b03166001600160a01b031681526020019081526020015f205f612034846132f7565b81526020808201929092526040015f2082518154939092015163ffffffff166101000264ffffffff00199215159290921664ffffffffff199093169290921717905550600101611db0565b506120936103d96040840160208501614b15565b6001600160a01b031663303ca9566120ae6020850185614b15565b6120be6040860160208701614b15565b6120cb60408701876155eb565b6040518563ffffffff1660e01b81526004016120ea94939291906158b4565b5f604051808303815f87803b158015612101575f5ffd5b505af1158015612113573d5f5f3e3d5ffd5b505050505050565b606061083d609a5f6117b6856132f7565b61213461408f565b611d125f6140e9565b6001600160a01b0381165f908152609c602052604081206060919061216190613503565b90505f816001600160401b0381111561217c5761217c614974565b6040519080825280602002602001820160405280156121c057816020015b604080518082019091525f808252602082015281526020019060019003908161219a5790505b5090505f5b82811015610a27576001600160a01b0385165f908152609c602052604090206121f2906109cd908361350c565b82828151811061220457612204615592565b60209081029190910101526001016121c5565b60605f84516001600160401b0381111561223357612233614974565b60405190808252806020026020018201604052801561227c57816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816122515790505b5090505f5b8551811015610de7576122ae86828151811061229f5761229f615592565b6020026020010151868661078d565b8282815181106122c0576122c0615592565b6020908102919091010152600101612281565b60605f83516001600160401b038111156122ef576122ef614974565b604051908082528060200260200182016040528015612318578160200160208202803683370190505b5090505f5b8451811015610de7576001600160a01b0386165f90815260a160205260408120865161238d9287929189908690811061235857612358615592565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2061413a90919063ffffffff16565b82828151811061239f5761239f615592565b6001600160401b039092166020928302919091019091015260010161231d565b6066545f906001908116036123e75760405163840a48d560e01b815260040160405180910390fd5b6123f08361352e565b61240d576040516348f5c3ed60e01b815260040160405180910390fd5b5f5f5f61241986612e38565b915091508161243b5760405163fa55fc8160e01b815260040160405180910390fd5b91505f90505b8351811015610d345783818151811061245c5761245c615592565b6020026020010151604001515184828151811061247b5761247b615592565b60200260200101516020015151146124a6576040516343714afd60e01b815260040160405180910390fd5b5f8482815181106124b9576124b9615592565b602090810291909101810151518082015181516001600160a01b03165f908152609890935260409092209092506124f99163ffffffff9081169061351716565b61251657604051631fb1705560e21b815260040160405180910390fd5b5f61252187836107c8565b90505f5b86848151811061253757612537615592565b60200260200101516020015151811015612873575f87858151811061255e5761255e615592565b602002602001015160200151828151811061257b5761257b615592565b60200260200101519050612592898261ffff613c14565b5f5f6125a18b6107b6886132f7565b91509150806040015163ffffffff165f146125cf57604051630d8fcbe360e41b815260040160405180910390fd5b5f6125dc8785848961414e565b9050612621825f01518c8a815181106125f7576125f7615592565b602002602001015160400151878151811061261457612614615592565b6020026020010151614184565b600f0b602083018190525f0361264a57604051634606179360e11b815260040160405180910390fd5b5f8260200151600f0b121561278e578015612710576126cb61266b886132f7565b6001600160a01b03808f165f90815260a360209081526040808320938a16835292905220908154600160801b90819004600f0b5f818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6126f57f00000000000000000000000000000000000000000000000000000000000003844361585f565b61270090600161585f565b63ffffffff1660408301526127fb565b6127228360200151836020015161392f565b6001600160401b031660208401528a518b908990811061274457612744615592565b602002602001015160400151858151811061276157612761615592565b6020908102919091018101516001600160401b031683525f9083015263ffffffff431660408301526127fb565b5f8260200151600f0b13156127fb576127af8360200151836020015161392f565b6001600160401b0390811660208501819052845190911610156127e557604051636c9be0bf60e01b815260040160405180910390fd5b6127ef894361585f565b63ffffffff1660408301525b6128108c612808896132f7565b86868661394e565b7f1487af5418c47ee5ea45ef4a93398668120890774a9e13487e61e9dc3baf76dd8c8886612845865f0151876020015161392f565b866040015160405161285b9594939291906156ed565b60405180910390a15050600190920191506125259050565b505050600101612441565b6001600160a01b038083165f90815260a16020908152604080832093851683529290529081206107c19061419b565b826128b78161352e565b6128d45760405163932d94f760e01b815260040160405180910390fd5b6001600160a01b0384165f90815260a4602052604090205460ff16612916576001600160a01b0384165f90815260a460205260409020805460ff191660011790555b836001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c94371384846040516129519291906158e0565b60405180910390a250505050565b6066546002906004908116036129885760405163840a48d560e01b815260040160405180910390fd5b826129928161352e565b6129af5760405163932d94f760e01b815260040160405180910390fd5b6040516336b87bd760e11b81526001600160a01b0385811660048301527f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690636d70f7ae90602401602060405180830381865afa158015612a13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a379190615573565b612a545760405163ccea9e6f60e01b815260040160405180910390fd5b5f5b612a6360208501856155eb565b9050811015612c2b57604080518082019091525f9080612a866020880188614b15565b6001600160a01b03168152602001868060200190612aa491906155eb565b85818110612ab457612ab4615592565b9050602002016020810190612ac991906155c4565b63ffffffff90811690915260208083015183516001600160a01b03165f90815260989092526040909120929350612b0592919081169061351716565b612b2257604051631fb1705560e21b815260040160405180910390fd5b612b2c86826107c8565b15612b4a57604051636c6c6e2760e11b815260040160405180910390fd5b612b73612b56826132f7565b6001600160a01b0388165f908152609c60205260409020906135d8565b50612b9f86609a5f612b84856132f7565b81526020019081526020015f206135e390919063ffffffff16565b50856001600160a01b03167f43232edf9071753d2321e5fa7e018363ee248e5f2142e6c08edd3265bfb4895e82604051612bd991906155dd565b60405180910390a26001600160a01b0386165f908152609e60205260408120600191612c04846132f7565b815260208101919091526040015f20805460ff191691151591909117905550600101612a56565b50612c3c6103d96020850185614b15565b6001600160a01b031663c63fd50285612c586020870187614b15565b612c6560208801886155eb565b612c7260408a018a61573e565b6040518763ffffffff1660e01b8152600401612c93969594939291906158f3565b5f604051808303815f87803b158015612caa575f5ffd5b505af1158015611a7e573d5f5f3e3d5ffd5b5f61083d609a5f612ccc856132f7565b81526020019081526020015f20613503565b83612ce88161352e565b612d055760405163932d94f760e01b815260040160405180910390fd5b6040805180820182526001600160a01b03871680825263ffffffff80881660208085018290525f93845260989052939091209192612d44929161351716565b612d6157604051631fb1705560e21b815260040160405180910390fd5b5f612d6b826132f7565b90505f5b84811015611a7e57612db4868683818110612d8c57612d8c615592565b9050602002016020810190612da19190614b15565b5f8481526099602052604090209061407b565b612dd1576040516331bc342760e11b815260040160405180910390fd5b7f7b4b073d80dcac55a11177d8459ad9f664ceeb91f71f27167bb14f8152a7eeee83878784818110612e0557612e05615592565b9050602002016020810190612e1a9190614b15565b604051612e28929190615630565b60405180910390a1600101612d6f565b6001600160a01b0381165f908152609b602090815260408083208151608081018352905463ffffffff80821680845260ff600160201b8404161515958401869052650100000000008304821694840194909452600160481b909104166060820181905284939192919015801590612eb95750826060015163ffffffff164310155b15612ec8575050604081015160015b9590945092505050565b6001600160a01b0381165f90815260986020526040812061083d90613503565b6001600160a01b0382165f908152609f602052604081206060919061083990826117b6866132f7565b5f54610100900460ff1615808015612f3957505f54600160ff909116105b80612f525750303b158015612f5257505f5460ff166001145b612fba5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612fdb575f805461ff0019166101001790555b612fe4826134c6565b612fed836140e9565b8015613033575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b816130428161352e565b61305f5760405163932d94f760e01b815260040160405180910390fd5b60405163b526578760e01b81526001600160a01b03848116600483015283169063b526578790602401602060405180830381865afa1580156130a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130c79190615573565b6130e457604051631d0b13c160e31b815260040160405180910390fd5b6001600160a01b038381165f90815260976020526040902080546001600160a01b0319169184169190911790557f2ae945c40c44dc0ec263f95609c3fdc6952e0aefa22d6374e44f2c997acedf858361313c81610df0565b604080516001600160a01b0393841681529290911660208301520161302a565b61316461408f565b6001600160a01b0381166131c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612fb1565b6131d2816140e9565b50565b5f5f610de78484613f01565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613261919061593f565b6001600160a01b0316336001600160a01b0316146132925760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146132b95760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f815f0151826020015163ffffffff1660405160200161334292919060609290921b6bffffffffffffffffffffffff1916825260a01b6001600160a01b031916601482015260200190565b60405160208183030381529060405261083d9061595a565b6040805180820182525f80825260208083018290528351606081018552828152808201839052808501839052845180860186526001600160a01b03898116855260a18452868520908816855290925293822092939281906133ba9061419b565b6001600160401b0390811682526001600160a01b038981165f81815260a260209081526040808320948c168084529482528083205486169682019690965291815260a082528481208b8252825284812092815291815290839020835160608101855290549283168152600160401b8304600f0b91810191909152600160c01b90910463ffffffff1691810182905291925043101561345c5790925090506134be565b61346d815f0151826020015161392f565b6001600160401b0316815260208101515f600f9190910b12156134ab5761349c8260200151826020015161392f565b6001600160401b031660208301525b5f60408201819052602082015290925090505b935093915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f61083d825490565b5f6107c183836141ae565b5f81815260018301602052604081205415156107c1565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af11580156135b4573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083d9190615573565b5f6107c183836141d4565b5f6107c1836001600160a01b0384166141d4565b606083516001600160401b0381111561361257613612614974565b60405190808252806020026020018201604052801561364557816020015b60608152602001906001900390816136305790505b5090505f7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96001600160a01b031663f0e0e67686866040518363ffffffff1660e01b815260040161369792919061597d565b5f60405180830381865afa1580156136b1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136d891908101906159a1565b90505f5b85518110156138da575f8682815181106136f8576136f8615592565b6020026020010151905085516001600160401b0381111561371b5761371b614974565b604051908082528060200260200182016040528015613744578160200160208202803683370190505b5084838151811061375757613757615592565b60209081029190910101525f5b86518110156138d0575f87828151811061378057613780615592565b6020908102919091018101516001600160a01b038086165f90815260a18452604080822092841682529190935282209092506137bb9061419b565b9050806001600160401b03165f036137d45750506138c8565b5f6137e0858d8561078d565b90508863ffffffff16816040015163ffffffff161115801561380857505f8160200151600f0b125b1561382a5761381e815f0151826020015161392f565b6001600160401b031681525b80515f90613845906001600160401b0390811690851661391b565b905061388c8189898151811061385d5761385d615592565b6020026020010151878151811061387657613876615592565b602002602001015161422090919063ffffffff16565b89888151811061389e5761389e615592565b602002602001015186815181106138b7576138b7615592565b602002602001018181525050505050505b600101613764565b50506001016136dc565b5050949350505050565b6001600160a01b0381165f90815260018301602052604081205415156107c1565b5f6107c18383670de0b6b3a76400006001614234565b5f6107c183670de0b6b3a76400008461428d565b5f6107c1613946836001600160401b0386166156c0565b600f0b614372565b6020808301516001600160a01b038088165f90815260a284526040808220928816825291909352909120546001600160401b03908116911614613a1457602082810180516001600160a01b038881165f81815260a286526040808220938a1680835293875290819020805467ffffffffffffffff19166001600160401b0395861617905593518451918252948101919091529216908201527facf9095feb3a370c9cf692421c69ef320d4db5c66e6a7d29c7694eb02364fc559060600160405180910390a15b6001600160a01b038086165f90815260a060209081526040808320888452825280832093871683529281529082902083518154928501519385015163ffffffff16600160c01b0263ffffffff60c01b196001600160801b038616600160401b026001600160c01b03199095166001600160401b03909316929092179390931716919091179055600f0b15613af6576001600160a01b0385165f908152609f602090815260408083208784529091529020613ace90846135e3565b506001600160a01b0385165f908152609d60205260409020613af090856135d8565b50610d34565b80516001600160401b03165f03610d34576001600160a01b0385165f908152609f602090815260408083208784529091529020613b33908461407b565b506001600160a01b0385165f908152609f602090815260408083208784529091529020613b5f90613503565b5f03610d34576001600160a01b0385165f908152609d602052604090206121139085614070565b6001600160a01b038084165f90815260a160209081526040808320938616835292905220613bb59043836143dd565b604080516001600160a01b038086168252841660208201526001600160401b038316918101919091527f1c6458079a41077d003c11faf9bf097e693bd67979e4e6500bac7b29db779b5c9060600161302a565b60605f6107c1836143f1565b6001600160a01b038381165f90815260a360209081526040808320938616835292905290812054600f81810b600160801b909204900b035b5f81118015613c5e57508261ffff1682105b15610d34576001600160a01b038086165f90815260a3602090815260408083209388168352929052908120613c929061444a565b90505f5f613ca188848961335a565b91509150806040015163ffffffff16431015613cbf57505050610d34565b613ccc888489858561394e565b6001600160a01b038089165f90815260a360209081526040808320938b16835292905220613cf99061449c565b50613d0385615aad565b9450613d0e84615ac5565b9350505050613c4c565b60605f613d2483614519565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6001600160a01b0382165f908152609b60209081526040918290208251608081018452905463ffffffff808216835260ff600160201b830416151593830193909352650100000000008104831693820193909352600160481b909204166060820181905215801590613dd15750806060015163ffffffff164310155b15613deb57604081015163ffffffff168152600160208201525b63ffffffff82166040820152613e217f00000000000000000000000000000000000000000000000000000000000004b04361585f565b613e2c90600161585f565b63ffffffff90811660608381019182526001600160a01b0386165f818152609b602090815260409182902087518154838a0151858b01519851928a1664ffffffffff1990921691909117600160201b91151591909102176cffffffffffffffff0000000000191665010000000000978916979097026cffffffff000000000000000000191696909617600160481b968816968702179055815192835294871694820194909452928301919091527f4e85751d6331506c6c62335f207eb31f12a61e570f34f5c17640308785c6d4db910161302a565b6001600160a01b038281165f81815260a2602090815260408083209486168084529482528083205493835260a38252808320948352939052918220546001600160401b039091169190600f81810b600160801b909204900b03815b8181101561402c576001600160a01b038087165f90815260a3602090815260408083209389168352929052908120613f949083614540565b6001600160a01b038881165f90815260a0602090815260408083208584528252808320938b16835292815290829020825160608101845290546001600160401b0381168252600160401b8104600f0b92820192909252600160c01b90910463ffffffff1691810182905291925043101561400f57505061402c565b61401d86826020015161392f565b95505050806001019050613f5c565b506001600160a01b038086165f90815260a160209081526040808320938816835292905220839061405c9061419b565b614066919061567d565b9150509250929050565b5f6107c183836145af565b5f6107c1836001600160a01b0384166145af565b6033546001600160a01b03163314611d125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612fb1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6107c18383670de0b6b3a7640000614692565b5f61415f8460995f611132896132f7565b80156141685750815b8015611d3157505090516001600160401b031615159392505050565b5f6107c16001600160401b03808516908416615ada565b5f61083d82670de0b6b3a76400006146e7565b5f825f0182815481106141c3576141c3615592565b905f5260205f200154905092915050565b5f81815260018301602052604081205461421957508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561083d565b505f61083d565b5f6107c18383670de0b6b3a764000061428d565b5f5f61424186868661428d565b9050600183600281111561425757614257615b07565b14801561427357505f848061426e5761426e615b1b565b868809115b15611d3157614283600182615b2f565b9695505050505050565b5f80805f19858709858702925082811083820303915050805f036142c4578382816142ba576142ba615b1b565b04925050506107c1565b80841161430b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401612fb1565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f6001600160401b038211156143d95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401612fb1565b5090565b61303383836001600160401b03841661471e565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561443e57602002820191905f5260205f20905b81548152602001906001019080831161442a575b50505050509050919050565b5f6144648254600f81810b600160801b909204900b131590565b1561448257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f9081526001909101602052604090205490565b5f6144b68254600f81810b600160801b909204900b131590565b156144d457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b5f818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b5f60ff8216601f81111561083d57604051632cd44ac360e21b815260040160405180910390fd5b5f5f61456261454e84614821565b855461455d9190600f0b615b42565b61488a565b8454909150600160801b9004600f90810b9082900b1261459557604051632d0483c560e21b815260040160405180910390fd5b600f0b5f9081526001939093016020525050604090205490565b5f8181526001830160205260408120548015614689575f6145d160018361566a565b85549091505f906145e49060019061566a565b9050818114614643575f865f01828154811061460257614602615592565b905f5260205f200154905080875f01848154811061462257614622615592565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061465457614654615b69565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061083d565b5f91505061083d565b82545f90816146a3868683856148f3565b905080156146dd576146c7866146ba60018461566a565b5f91825260209091200190565b54600160201b90046001600160e01b03166107bc565b5091949350505050565b81545f90801561471657614700846146ba60018461566a565b54600160201b90046001600160e01b0316610839565b509092915050565b825480156147d4575f614736856146ba60018561566a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090851610156147885760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036147d257826147a9866146ba60018661566a565b80546001600160e01b0392909216600160201b0263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216600160201b029190921617910155565b5f6001600160ff1b038211156143d95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401612fb1565b80600f81900b81146148ee5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401612fb1565b919050565b5f5b81831015610a27575f6149088484614946565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561493257809250614940565b61493d816001615b2f565b93505b506148f5565b5f6149546002848418615b7d565b6107c190848416615b2f565b6001600160a01b03811681146131d2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156149aa576149aa614974565b60405290565b604051601f8201601f191681016001600160401b03811182821017156149d8576149d8614974565b604052919050565b803563ffffffff811681146148ee575f5ffd5b5f60408284031215614a03575f5ffd5b604080519081016001600160401b0381118282101715614a2557614a25614974565b6040529050808235614a3681614960565b8152614a44602084016149e0565b60208201525092915050565b5f5f5f60808486031215614a62575f5ffd5b8335614a6d81614960565b9250614a7c85602086016149f3565b91506060840135614a8c81614960565b809150509250925092565b81516001600160401b03168152602080830151600f0b9082015260408083015163ffffffff16908201526060810161083d565b5f5f60608385031215614adb575f5ffd5b8235614ae681614960565b9150614af584602085016149f3565b90509250929050565b5f60208284031215614b0e575f5ffd5b5035919050565b5f60208284031215614b25575f5ffd5b81356107c181614960565b80516001600160a01b0316825260209081015163ffffffff16910152565b5f8151808452602084019350602083015f5b82811015614b8957614b73868351614b30565b6040959095019460209190910190600101614b60565b5093949350505050565b602081525f6107c16020830184614b4e565b5f60408284031215614bb5575f5ffd5b6107c183836149f3565b5f5f83601f840112614bcf575f5ffd5b5081356001600160401b03811115614be5575f5ffd5b6020830191508360208260051b850101111561179d575f5ffd5b5f5f5f60408486031215614c11575f5ffd5b8335614c1c81614960565b925060208401356001600160401b03811115614c36575f5ffd5b614c4286828701614bbf565b9497909650939450505050565b5f6001600160401b03821115614c6757614c67614974565b5060051b60200190565b5f82601f830112614c80575f5ffd5b8135614c93614c8e82614c4f565b6149b0565b8082825260208201915060208360051b860101925085831115614cb4575f5ffd5b602085015b83811015614cda578035614ccc81614960565b835260209283019201614cb9565b5095945050505050565b5f5f5f60808486031215614cf6575f5ffd5b614d0085856149f3565b925060408401356001600160401b03811115614d1a575f5ffd5b614d2686828701614c71565b92505060608401356001600160401b03811115614d41575f5ffd5b614d4d86828701614c71565b9150509250925092565b5f8151808452602084019350602083015f5b82811015614b89578151865260209586019590910190600101614d69565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614dde57603f19878603018452614dc9858351614d57565b94506020938401939190910190600101614dad565b50929695505050505050565b5f5f5f5f60a08587031215614dfd575f5ffd5b614e0786866149f3565b935060408501356001600160401b03811115614e21575f5ffd5b614e2d87828801614c71565b93505060608501356001600160401b03811115614e48575f5ffd5b614e5487828801614c71565b925050614e63608086016149e0565b905092959194509250565b5f5f60408385031215614e7f575f5ffd5b8235614e8a81614960565b915060208301356001600160401b03811115614ea4575f5ffd5b830160a08186031215614eb5575f5ffd5b809150509250929050565b5f5f60408385031215614ed1575f5ffd5b8235614edc81614960565b91506020830135614eb581614960565b5f8151808452602084019350602083015f5b82811015614b8957614f3786835180516001600160401b03168252602080820151600f0b9083015260409081015163ffffffff16910152565b6060959095019460209190910190600101614efe565b604081525f614f5f6040830185614b4e565b8281036020840152611d318185614eec565b5f8151808452602084019350602083015f5b82811015614b895781516001600160a01b0316865260209586019590910190600101614f83565b602081525f6107c16020830184614f71565b5f5f60408385031215614fcd575f5ffd5b82356001600160401b03811115614fe2575f5ffd5b614fee85828601614c71565b9250506020830135614eb581614960565b602080825282518282018190525f918401906040840190835b8181101561503f5783516001600160401b0316835260209384019390920191600101615018565b509095945050505050565b5f5f5f5f5f6060868803121561505e575f5ffd5b853561506981614960565b945060208601356001600160401b03811115615083575f5ffd5b61508f88828901614bbf565b90955093505060408601356001600160401b038111156150ad575f5ffd5b6150b988828901614bbf565b969995985093965092949392505050565b5f5f5f5f606085870312156150dd575f5ffd5b84356150e881614960565b93506150f6602086016149e0565b925060408501356001600160401b03811115615110575f5ffd5b61511c87828801614bbf565b95989497509550505050565b5f5f60408385031215615139575f5ffd5b823561514481614960565b915060208301356001600160401b0381111561515e575f5ffd5b61406685828601614c71565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156151b0575f5ffd5b82356151bb81614960565b9150614af5602084016149e0565b5f602082840312156151d9575f5ffd5b813560ff811681146107c1575f5ffd5b5f606082840312156151f9575f5ffd5b50919050565b5f6020828403121561520f575f5ffd5b81356001600160401b03811115615224575f5ffd5b610839848285016151e9565b5f5f5f60808486031215615242575f5ffd5b83356001600160401b03811115615257575f5ffd5b61526386828701614c71565b935050614a7c85602086016149f3565b602081525f6107c16020830184614eec565b5f5f5f60608486031215615297575f5ffd5b83356152a281614960565b925060208401356001600160401b038111156152bc575f5ffd5b6152c886828701614c71565b9250506152d7604085016149e0565b90509250925092565b5f5f604083850312156152f1575f5ffd5b82356152fc81614960565b915060208301356001600160401b03811115615316575f5ffd5b8301601f81018513615326575f5ffd5b8035615334614c8e82614c4f565b8082825260208201915060208360051b850101925087831115615355575f5ffd5b602084015b8381101561547a5780356001600160401b03811115615377575f5ffd5b85016080818b03601f1901121561538c575f5ffd5b615394614988565b6153a18b602084016149f3565b815260608201356001600160401b038111156153bb575f5ffd5b6153ca8c602083860101614c71565b60208301525060808201356001600160401b038111156153e8575f5ffd5b6020818401019250508a601f8301126153ff575f5ffd5b813561540d614c8e82614c4f565b8082825260208201915060208360051b86010192508d83111561542e575f5ffd5b6020850194505b828510156154645784356001600160401b0381168114615453575f5ffd5b825260209485019490910190615435565b604084015250508452506020928301920161535a565b50809450505050509250929050565b5f5f5f6040848603121561549b575f5ffd5b83356154a681614960565b925060208401356001600160401b038111156154c0575f5ffd5b8401601f810186136154d0575f5ffd5b80356001600160401b038111156154e5575f5ffd5b8660208284010111156154f6575f5ffd5b939660209190910195509293505050565b5f5f60408385031215615518575f5ffd5b823561552381614960565b915060208301356001600160401b0381111561553d575f5ffd5b614066858286016151e9565b5f5f6040838503121561555a575f5ffd5b823561556581614960565b946020939093013593505050565b5f60208284031215615583575f5ffd5b815180151581146107c1575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235603e198336030181126155ba575f5ffd5b9190910192915050565b5f602082840312156155d4575f5ffd5b6107c1826149e0565b6040810161083d8284614b30565b5f5f8335601e19843603018112615600575f5ffd5b8301803591506001600160401b03821115615619575f5ffd5b6020019150600581901b360382131561179d575f5ffd5b6060810161563e8285614b30565b6001600160a01b039290921660409190910152919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561083d5761083d615656565b6001600160401b03828116828216039081111561083d5761083d615656565b5f81600f0b60016001607f1b031981036156b8576156b8615656565b5f0392915050565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561083d5761083d615656565b6001600160a01b038616815260c0810161570a6020830187614b30565b6001600160a01b039490941660608201526001600160401b0392909216608083015263ffffffff1660a09091015292915050565b5f5f8335601e19843603018112615753575f5ffd5b8301803591506001600160401b0382111561576c575f5ffd5b60200191503681900382131561179d575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03881681525f60c082016157c6602084018a614b30565b60c060608401528690528660e083015f5b888110156158075782356157ea81614960565b6001600160a01b03168252602092830192909101906001016157d7565b50838103608085015261581a8188614d57565b91505082810360a0840152615830818587615780565b9a9950505050505050505050565b5f6020828403121561584e575f5ffd5b813561ffff811681146107c1575f5ffd5b63ffffffff818116838216019081111561083d5761083d615656565b8183526020830192505f815f5b84811015614b895763ffffffff61589e836149e0565b1686526020958601959190910190600101615888565b6001600160a01b038581168252841660208201526060604082018190525f90614283908301848661587b565b602081525f610d49602083018486615780565b6001600160a01b038781168252861660208201526080604082018190525f9061591f908301868861587b565b8281036060840152615932818587615780565b9998505050505050505050565b5f6020828403121561594f575f5ffd5b81516107c181614960565b805160208083015191908110156151f9575f1960209190910360031b1b16919050565b604081525f61598f6040830185614f71565b8281036020840152611d318185614f71565b5f602082840312156159b1575f5ffd5b81516001600160401b038111156159c6575f5ffd5b8201601f810184136159d6575f5ffd5b80516159e4614c8e82614c4f565b8082825260208201915060208360051b850101925086831115615a05575f5ffd5b602084015b83811015615aa25780516001600160401b03811115615a27575f5ffd5b8501603f81018913615a37575f5ffd5b6020810151615a48614c8e82614c4f565b808282526020820191506020808460051b8601010192508b831115615a6b575f5ffd5b6040840193505b82841015615a8d578351825260209384019390910190615a72565b86525050602093840193919091019050615a0a565b509695505050505050565b5f60018201615abe57615abe615656565b5060010190565b5f81615ad357615ad3615656565b505f190190565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561083d5761083d615656565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b8082018082111561083d5761083d615656565b8082018281125f831280158216821582161715615b6157615b61615656565b505092915050565b634e487b7160e01b5f52603160045260245ffd5b5f82615b9757634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212203c3fd667caf85070715ce20d313fa488db936999ef7ff1875a48d39c4e97cebc64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x9d4454b023096f34b160d6b654540c56a1f81688": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610011575f80fd5b5f3560e01c8062a1f4cb1461012957806313542a4e146100e857806326d941f214610124578063377ed99d1461011f5780633fb279521461011a57806347b314e8146100e35780635f61a88414610115578063605747d51461011057806368bccaac1461010b5780636d14a987146101065780637916cea6146101015780637ff81a87146100fc578063a3db80e2146100f7578063bf79ce58146100f2578063d5254a8c146100ed578063de29fac0146100e8578063e8bb9ae6146100e35763f4e24fe5146100de575f80fd5b610c0a565b6104fd565b6101b1565b610b9d565b6108d6565b61088b565b61084a565b6107d7565b610753565b610618565b61058b565b610529565b61044a565b6102fc565b6101f9565b61015c565b600435906001600160a01b038216820361014457565b5f80fd5b35906001600160a01b038216820361014457565b34610144576020366003190112610144576001600160a01b0361017d61012e565b165f52600360205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b0390f35b34610144576020366003190112610144576001600160a01b036101d261012e565b165f526001602052602060405f2054604051908152f35b6004359060ff8216820361014457565b34610144576020366003190112610144576102126101e9565b610246337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b60ff81165f52600460205260405f2054610298576102726102969160ff165f52600460205260405f2090565b61027a6103a7565b5f81524363ffffffff166020820152905b5f6040830152610d12565b005b60405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b6064820152608490fd5b346101445760203660031901126101445760ff6103176101e9565b165f526004602052602063ffffffff60405f205416604051908152f35b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761036457604052565b610334565b6060810190811067ffffffffffffffff82111761036457604052565b90601f8019910116810190811067ffffffffffffffff82111761036457604052565b604051906103b6606083610385565b565b906103b66040519283610385565b906040600319830112610144576103dd6004610148565b9160243567ffffffffffffffff811161014457816023820112156101445780600401359067ffffffffffffffff82116103645760405192610428601f8401601f191660200185610385565b8284526024838301011161014457815f92602460209301838601378301015290565b34610144577f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e610479366103c6565b906104ae337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c16104ba82610eb4565b508361156f565b60018060a01b0381165f5260016020526104e660405f20549260405193849384610d87565b0390a1005b60209060031901126101445760043590565b346101445761050b366104eb565b5f526002602052602060018060a01b0360405f205416604051908152f35b346101445760203660031901126101445760ff6105446101e9565b61054c610dc7565b50165f5260056020526040805f20600182519161056883610348565b80548352015460208201526105898251809260208091805184520151910152565bf35b34610144576040366003190112610144576105e06105da6105aa6101e9565b60ff602435915f604080516105be81610369565b8281528260208201520152165f52600460205260405f206107c2565b50610dfd565b604051809163ffffffff6040606084019267ffffffffffffffff19815116855282602082015116602086015201511660408301520390f35b34610144576060366003190112610144576106316101e9565b6024359063ffffffff8216809203610144576105da6106679160ff61065560443590565b91165f52600460205260405f206107c2565b9063ffffffff60208301511681106106e857816106ad6106bc9261069560406101ad96015163ffffffff1690565b9063ffffffff8216159182156106d8575b5050610e36565b5167ffffffffffffffff191690565b60405167ffffffffffffffff1990911681529081906020820190565b63ffffffff161190505f806106a6565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e7400006064820152608490fd5b34610144575f366003190112610144576040517f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b03168152602090f35b634e487b7160e01b5f52603260045260245ffd5b8054156107bd575f5260205f20905f90565b610797565b80548210156107bd575f5260205f2001905f90565b34610144576040366003190112610144576107f06101e9565b60ff60243591165f52600460205260405f2090815481101561014457610815916107c2565b50546040805182821b67ffffffffffffffff1916815260c083901c63ffffffff16602082015260e09290921c90820152606090f35b3461014457602036600319011261014457606061086d61086861012e565b610eb4565b610884604051809360208091805184520151910152565b6040820152f35b346101445760203660031901126101445760ff6108a66101e9565b165f52600560205260405f2060018154910154906101ad6040519283928360209093929193604081019481520152565b3461014457610160366003190112610144576108f061012e565b61010036602319011261014457604036610123190112610144576101ad90610942337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b61096061094e36610f6f565b80515f526020015160205260405f2090565b9061098d7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5831415610fea565b6001600160a01b0381165f9081526001602052604090206109af905415611048565b5f828152600260205260409020546109d0906001600160a01b0316156110b7565b604051610a9790610a9290610a3c906020810190610a1381610a0561014435610124356084356064356044356024358a611121565b03601f198101835282610385565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b610a60610a4836610f97565b610a5a83610a5536610f6f565b611737565b9061177d565b90610a82610a6c611805565b91610a5a610a7936610fbf565b91610a556118fc565b90610a8c366111a5565b926119e1565b6111de565b6001600160a01b0381165f908152600360205260409020610ac19060643581556001608435910155565b6001600160a01b0381165f908152600160205260409020829055610b1081610af1845f52600260205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03909116907fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba38280419080610b4b81611278565b0390a26040519081529081906020820190565b60206040818301928281528451809452019201905f5b818110610b815750505090565b825163ffffffff16845260209384019390920191600101610b74565b346101445760403660031901126101445760043567ffffffffffffffff8111610144573660238201121561014457806004013567ffffffffffffffff8111610144573660248284010111610144576101ad91610bfe91602480359201611339565b60405191829182610b5e565b34610144577ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e610c39366103c6565b90610c6e337f000000000000000000000000f5059a5d33d5853360d16c683c16e67980206f366001600160a01b031614610c89565b6104c1610c83610c7d83610eb4565b50611b1e565b8361156f565b15610c9057565b60405162461bcd60e51b815260206004820152604e60248201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460448201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460648201526d393c9031b7b7b93234b730ba37b960911b608482015260a490fd5b80546801000000000000000081101561036457610d34916001820181556107c2565b610d74578151602083015160409384015163ffffffff60c01b60c09290921b919091169190931c1760e09290921b6001600160e01b031916919091179055565b634e487b7160e01b5f525f60045260245ffd5b919260809360209260018060a01b0316845282840152606060408401528051918291826060860152018484015e5f828201840152601f01601f1916010190565b60405190610dd482610348565b5f6020838281520152565b90604051610dec81610348565b602060018294805484520154910152565b90604051610e0a81610369565b604081935467ffffffffffffffff1981831b16835263ffffffff8160c01c16602084015260e01c910152565b15610e3d57565b60405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a490fd5b610ebc610dc7565b5060018060a01b031690815f52600360205260405f2091600160405193610ee285610348565b80548552015460208401525f52600160205260405f2054918215610f04579190565b60405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f74207265676973746572656400006064820152608490fd5b60409060631901126101445760405190610f8882610348565b60643582526084356020830152565b60409060231901126101445760405190610fb082610348565b60243582526044356020830152565b6040906101231901126101445760405190610fd982610348565b610124358252610144356020830152565b15610ff157565b608460405162461bcd60e51b815260206004820152604060248201525f516020611bdf5f395f51905f5260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b65796064820152fd5b1561104f57565b60405162461bcd60e51b815260206004820152604760248201525f516020611bdf5f395f51905f5260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a490fd5b156110be57565b60405162461bcd60e51b815260206004820152604260248201525f516020611bdf5f395f51905f5260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a490fd5b949290916101409694928652602086015260408501526060840152604060a46080850137604060e460c08501376101008301526101208201520190565b9080601f830112156101445760405191611179604084610385565b82906040810192831161014457905b8282106111955750505090565b8135815260209182019101611188565b90608060a319830112610144576040516111be81610348565b60206111d982946111d08160a461115e565b845260e461115e565b910152565b156111e557565b60405162461bcd60e51b815260206004820152606c60248201525f516020611bdf5f395f51905f5260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c490fd5b90604060e4608060c0850194606435815260843560208201528360a4818301370137565b67ffffffffffffffff81116103645760051b60200190565b906112be8261129c565b6112cb6040519182610385565b82815280926112dc601f199161129c565b0190602036910137565b908210156107bd570190565b634e487b7160e01b5f52601160045260245ffd5b8015611312575f190190565b6112f2565b5f1981019190821161131257565b80518210156107bd5760209160051b010190565b919091611345836112b4565b925f5b818110611356575050505090565b61137b6113756113678385876112e6565b356001600160f81b03191690565b60f81c90565b6113908160ff165f52600460205260405f2090565b54801580156114c1575b61143c57805b6113af575b5050600101611348565b8563ffffffff6113ed6113df6113d08660ff165f52600460205260405f2090565b6113d986611317565b906107c2565b505460c01c63ffffffff1690565b161115611403576113fd90611306565b806113a0565b600192915061142061141761143592611317565b63ffffffff1690565b61142a8389611325565b9063ffffffff169052565b905f6113a5565b60405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a490fd5b506114e56114176113df6114e08560ff165f52600460205260405f2090565b6107ab565b861061139a565b9081518110156107bd570160200190565b1561150457565b60405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f742065786973740000006064820152608490fd5b9190611579610dc7565b504363ffffffff16905f5b84518110156117045780836115af6113756115a16001958a6114ec565b516001600160f81b03191690565b6115c48160ff165f52600460205260405f2090565b54906115d18215156114fd565b61165761163861162a611600896115fb6115f68760ff165f52600560205260405f2090565b610ddf565b61177d565b61094e816116198760ff165f52600560205260405f2090565b906020600191805184550151910155565b67ffffffffffffffff191690565b926113d96116518460ff165f52600460205260405f2090565b91611317565b50908361166f611417845463ffffffff9060c01c1690565b03611698575061169292509060401c67ffffffffffffffff60c01b825416179055565b01611584565b81546001600160e01b031660e09490941b6001600160e01b0319169390931790556116ff916116d29060ff165f52600460205260405f2090565b6116ee6116dd6103a7565b67ffffffffffffffff199093168352565b63ffffffff8716602083015261028b565b611692565b5050509050565b6040519061018061171c8184610385565b368337565b60405190611730602083610385565b6020368337565b91906040906060611746610dc7565b94859260208551926117588585610385565b8436853780518452015160208301528482015260076107cf195a01fa1561177b57565bfe5b60209291608060409261178e610dc7565b9586938186519361179f8686610385565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa801561177b57156117d057565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b60405161181181610348565b60409081516118208382610385565b82368237815260208251916118358484610385565b83368437015280516118478282610385565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed602082015281519061189d8383610385565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526118f283519384610385565b8252602082015290565b611904610dc7565b5060405161191181610348565b600181526002602082015290565b9060068202918083046006149015171561131257565b9060028110156107bd5760051b0190565b906001820180921161131257565b906002820180921161131257565b906003820180921161131257565b906004820180921161131257565b906005820180921161131257565b90600c8110156107bd5760051b0190565b156119a457565b60405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b6044820152606490fd5b9290916119ee60406103b8565b9384526020840152611a0060406103b8565b9182526020820152611a1061170b565b915f5b60028110611a4d57505050602061018091611a2c611721565b92839160086107cf195a01fa801561177b57611a479061199d565b51151590565b80611a5960019261191f565b611a638285611935565b5151611a6f828861198c565b526020611a7c8386611935565b510151611a91611a8b83611946565b8861198c565b52611a9c8286611935565b515151611aab611a8b83611954565b52611ac1611ab98387611935565b515160200190565b51611ace611a8b83611962565b526020611adb8387611935565b51015151611aeb611a8b83611970565b52611b17611b11611b0a6020611b01868a611935565b51015160200190565b519261197e565b8761198c565b5201611a13565b611b26610dc7565b50805190811580611bd2575b15611b53575050604051611b47604082610385565b5f81525f602082015290565b60207f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47910151067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47811161131257604051916118f2604084610385565b50602081015115611b3256fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220907abf636d9e883e89ae38478a10f1607c3e4b038b27973de3ffd4e2d7a9915664736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0x9e545e3c0baab3e08cdfd552c960a1050f373042": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f905f3560e01c908163204e1c7a1461045057508063715018a6146103f95780637eff275e146103675780638da5cb5b146103405780639623609d1461024257806399a88ec4146101ad578063f2fde38b146100e75763f3b7dead14610076575f80fd5b346100e45760203660031901126100e457808060046001600160a01b0361009b6104b2565b6040516303e1469160e61b815291165afa6100b4610530565b90156100e25780516020916001600160a01b03916100d991908101840190840161055f565b16604051908152f35b505b80fd5b50346100e45760203660031901126100e4576101016104b2565b61010961057e565b6001600160a01b031680156101595781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346100e45760403660031901126100e457806101c86104b2565b6101d06104c8565b906101d961057e565b6001600160a01b031690813b1561023e57604051631b2ce7f360e11b81526001600160a01b0390911660048201529082908290602490829084905af18015610233576102225750f35b8161022c916104de565b6100e45780f35b6040513d84823e3d90fd5b5050fd5b5060603660031901126100e457806102586104b2565b6102606104c8565b6044359167ffffffffffffffff831161033b573660238401121561033b5782600401359061028d82610514565b9161029b60405193846104de565b80835260208301943660248383010111610337578187926024602093018837840101526102c661057e565b6001600160a01b0316803b15610333578492606460405180968195829463278f794360e11b845260018060a01b03166004840152604060248401525180918160448501528484015e8181018301879052601f01601f1916810103019134905af18015610233576102225750f35b8480fd5b8680fd5b505050fd5b50346100e457806003193601126100e457546040516001600160a01b039091168152602090f35b50346103f55760403660031901126103f5576103816104b2565b6103896104c8565b9061039261057e565b6001600160a01b031690813b156103f5576040516308f2839760e41b81526001600160a01b039091166004820152905f908290602490829084905af180156103ea576103dc575080f35b6103e891505f906104de565b005b6040513d5f823e3d90fd5b5f80fd5b346103f5575f3660031901126103f55761041161057e565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346103f55760203660031901126103f5575f9081906004906001600160a01b036104786104b2565b635c60da1b60e01b8352165afa61048d610530565b90156103f55780516020916001600160a01b03916100d991908101840190840161055f565b600435906001600160a01b03821682036103f557565b602435906001600160a01b03821682036103f557565b90601f8019910116810190811067ffffffffffffffff82111761050057604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161050057601f01601f191660200190565b3d1561055a573d9061054182610514565b9161054f60405193846104de565b82523d5f602084013e565b606090565b908160209103126103f557516001600160a01b03811681036103f55790565b5f546001600160a01b0316330361059157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfea2646970667358221220da783ab89c5c287c74b7661204a758c01ff9259a5a2e0c6e9f8f2eefdc4105bf64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + "0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063c298557814602a575b5f5ffd5b5f60405190815260200160405180910390f3fea26469706673582212209418b3fed5398be22255b6d3eb5d6b8f62c4a07d850ec544a547026b380ff91d64736f6c634300081b0033", + "storage": {} + }, + "0xa513e6e4b8f2a923d98304ec87f64353c4d5c853": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000003e80000000000001c2018a0f92ad9645385e8a8f3db7d0f6cf7abbb0ad4", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000959922be3caee4b8cd9a407cc3ac1c251c2007b1", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b50600436106102ff575f3560e01c8063715018a611610195578063bfae3fd2116100e4578063e4cc3f901161009e578063f2fde38b11610079578063f2fde38b14610848578063f698da251461085b578063fabc1cbc14610863578063fd8aa88d14610876575f5ffd5b8063e4cc3f9014610802578063eea9064b14610815578063f0e0e67614610828575f5ffd5b8063bfae3fd21461074d578063c448feb814610760578063c978f7ac14610794578063ca8aa7c7146107b5578063cd6dc687146107dc578063da8be864146107ef575f5ffd5b80639104c3191161014f578063a17884841161012a578063a1788484146106cc578063a33a3433146106eb578063b7f06ebe146106fe578063bb45fef214610720575f5ffd5b80639104c3191461067e5780639435bb431461069957806399f5371b146106ac575f5ffd5b8063715018a6146105ee578063778e55f3146105f657806378296ec514610620578063886f1195146106335780638da5cb5b1461065a578063900413471461066b575f5ffd5b806354fd4d50116102515780635dd685791161020b57806365da1264116101e657806365da12641461057f57806366d5ba93146105a75780636d70f7ae146105c85780636e174448146105db575f5ffd5b80635dd6857914610538578063601bb36f1461055957806360a0d1ce1461056c575f5ffd5b806354fd4d50146104bc578063595c6a67146104d1578063597b36da146104d95780635ac86ab7146104ec5780635c975abb1461050f5780635d975e8814610517575f5ffd5b806339b70e38116102bc5780633e28391d116102975780633e28391d146104385780634657e26a1461045b5780634665bcda1461048257806354b7c96c146104a9575f5ffd5b806339b70e38146103b85780633c651cf2146103f75780633cdeb5e01461040a575f5ffd5b806304a4f979146103035780630b9f487a1461033d5780630dd8dd0214610350578063136439dd1461037057806325df922e146103855780632aa6d888146103a5575b5f5ffd5b61032a7f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6040519081526020015b60405180910390f35b61032a61034b366004614d3f565b610889565b61036361035e366004614dd6565b610911565b6040516103349190614e14565b61038361037e366004614e4b565b610ba2565b005b610398610393366004614fe0565b610c77565b604051610334919061508e565b6103836103b33660046150f0565b610dd7565b6103df7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6040516001600160a01b039091168152602001610334565b61038361040536600461514e565b610f2b565b6103df610418366004615191565b6001600160a01b039081165f908152609960205260409020600101541690565b61044b610446366004615191565b61107e565b6040519015158152602001610334565b6103df7f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31881565b6103df7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6103836104b73660046151ac565b61109d565b6104c461110b565b6040516103349190615211565b61038361113b565b61032a6104e73660046152df565b6111ea565b61044b6104fa366004615310565b606654600160ff9092169190911b9081161490565b60665461032a565b61052a610525366004614e4b565b611219565b6040516103349291906153e7565b61054b610546366004615191565b611236565b604051610334929190615459565b6103836105673660046154da565b611360565b61038361057a366004615533565b6114d8565b6103df61058d366004615191565b609a6020525f90815260409020546001600160a01b031681565b6105ba6105b5366004615191565b611683565b604051610334929190615572565b61044b6105d6366004615191565b611983565b61032a6105e93660046151ac565b6119bb565b610383611a65565b61032a6106043660046151ac565b609860209081525f928352604080842090915290825290205481565b61038361062e366004615584565b611a76565b6103df7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051281565b6033546001600160a01b03166103df565b6103986106793660046155d4565b611b0c565b6103df73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6103836106a7366004615620565b611be2565b6106bf6106ba366004614e4b565b611cbb565b60405161033491906156bc565b61032a6106da366004615191565b609f6020525f908152604090205481565b6103636106f93660046156ce565b611dd7565b61044b61070c366004614e4b565b609e6020525f908152604090205460ff1681565b61044b61072e3660046157b5565b609c60209081525f928352604080842090915290825290205460ff1681565b61032a61075b3660046151ac565b611def565b60405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000384168152602001610334565b6107a76107a23660046155d4565b611e2b565b6040516103349291906157df565b6103df7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b6103836107ea3660046157b5565b6120b8565b6103636107fd366004615191565b6121d3565b6103836108103660046157fe565b6122fc565b6103836108233660046156ce565b612352565b61083b610836366004615871565b6123bd565b604051610334919061591e565b610383610856366004615191565b612462565b61032a6124db565b610383610871366004614e4b565b612594565b610363610884366004615191565b6126ab565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad60208201526001600160a01b03808616928201929092528187166060820152908516608082015260a0810183905260c081018290525f906109079060e001604051602081830303815290604052805190602001206126ce565b9695505050505050565b60665460609060019060029081160361093d5760405163840a48d560e01b815260040160405180910390fd5b6109456126fc565b5f836001600160401b0381111561095e5761095e614e62565b604051908082528060200260200182016040528015610987578160200160208202803683370190505b50335f908152609a60205260408120549192506001600160a01b03909116905b85811015610b93578686828181106109c1576109c1615930565b90506020028101906109d39190615944565b6109e1906020810190615962565b90508787838181106109f5576109f5615930565b9050602002810190610a079190615944565b610a119080615962565b905014610a31576040516343714afd60e01b815260040160405180910390fd5b5f610a9b33848a8a86818110610a4957610a49615930565b9050602002810190610a5b9190615944565b610a659080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061275592505050565b9050610b6d33848a8a86818110610ab457610ab4615930565b9050602002810190610ac69190615944565b610ad09080615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92508d9150889050818110610b1557610b15615930565b9050602002810190610b279190615944565b610b35906020810190615962565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508892506128a7915050565b848381518110610b7f57610b7f615930565b6020908102919091010152506001016109a7565b5050600160c955949350505050565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c04573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2891906159a7565b610c4557604051631d77d47760e21b815260040160405180910390fd5b6066548181168114610c6a5760405163c61dca5d60e01b815260040160405180910390fd5b610c7382612e42565b5050565b6001600160a01b038084165f908152609a60205260408120546060921690610ca0868387612755565b90505f85516001600160401b03811115610cbc57610cbc614e62565b604051908082528060200260200182016040528015610ce5578160200160208202803683370190505b5090505f5b8651811015610dca576001600160a01b0388165f90815260a260205260408120885182908a9085908110610d2057610d20615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f820154815250509050610da4878381518110610d7257610d72615930565b6020026020010151858481518110610d8c57610d8c615930565b602002602001015183612e7f9092919063ffffffff16565b838381518110610db657610db6615930565b602090810291909101015250600101610cea565b50925050505b9392505050565b610ddf6126fc565b610de83361107e565b15610e0657604051633bf2b50360e11b815260040160405180910390fd5b604051632b6241f360e11b815233600482015263ffffffff841660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b0316906356c483e6906044015f604051808303815f87803b158015610e70575f5ffd5b505af1158015610e82573d5f5f3e3d5ffd5b50505050610e903385612e9d565b610e9a3333612eff565b6040516001600160a01b038516815233907fa453db612af59e5521d6ab9284dc3e2d06af286eb1b1b7b771fce4716c19f2c19060200160405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051610f139291906159c2565b60405180910390a2610f25600160c955565b50505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9161480610f8a5750336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f16145b610fa75760405163045206a560e21b815260040160405180910390fd5b610faf6126fc565b6001600160a01b038481165f908152609a602052604080822054905163152667d960e31b8152908316600482018190528684166024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105391906159f0565b90505f6110618787846131a6565b9050611071838888888886613288565b505050610f25600160c955565b6001600160a01b039081165f908152609a602052604090205416151590565b816110a7816133cd565b6110c45760405163932d94f760e01b815260040160405180910390fd5b6110cc6126fc565b6110d583611983565b6110f2576040516325ec6c1f60e01b815260040160405180910390fd5b6110fc8383612e9d565b611106600160c955565b505050565b60606111367f76302e302e300000000000000000000000000000000000000000000000000006613477565b905090565b60405163237dfb4760e11b81523360048201527f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561119d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c191906159a7565b6111de57604051631d77d47760e21b815260040160405180910390fd5b6111e85f19612e42565b565b5f816040516020016111fc91906156bc565b604051602081830303815290604052805190602001209050919050565b611221614c00565b606061122c836134b4565b9094909350915050565b6060805f611243846126ab565b8051909150806001600160401b0381111561126057611260614e62565b60405190808252806020026020018201604052801561129957816020015b611286614c00565b81526020019060019003908161127e5790505b509350806001600160401b038111156112b4576112b4614e62565b6040519080825280602002602001820160405280156112e757816020015b60608152602001906001900390816112d25790505b5092505f5b818110156113585761131683828151811061130957611309615930565b60200260200101516134b4565b86838151811061132857611328615930565b6020026020010186848151811061134157611341615930565b6020908102919091010191909152526001016112ec565b505050915091565b336001600160a01b037f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe616146113a9576040516323d871a560e01b815260040160405180910390fd5b6113b16126fc565b6001600160a01b038085165f9081526098602090815260408083209387168352929052908120546113ef906001600160401b03808616908516613707565b90505f6113fe8686868661371f565b90505f61140b8284615a1f565b9050611419875f88866137dc565b604080516001600160a01b038881168252602082018490528916917fdd611f4ef63f4385f1756c86ce1f1f389a9013ba6fa07daba8528291bc2d3c30910160405180910390a25f61146987613856565b60405163debe1eab60e01b81526001600160a01b038981166004830152602482018590529192509082169063debe1eab906044015f604051808303815f87803b1580156114b4575f5ffd5b505af11580156114c6573d5f5f3e3d5ffd5b5050505050505050610f25600160c955565b336001600160a01b037f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f161461152157604051633213a66160e21b815260040160405180910390fd5b6115296126fc565b6115328361107e565b156110fc576001600160a01b038381165f908152609a602052604080822054905163152667d960e31b81529083166004820181905273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152927f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa1580156115c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ed91906159f0565b6001600160a01b0386165f90815260a26020908152604080832073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac08452825280832081519283019091525481529192506116538661164b6001600160401b038087169089166138c8565b8491906138dc565b9050611675848873beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0846137dc565b50505050611106600160c955565b6040516394f649dd60e01b81526001600160a01b03828116600483015260609182915f9182917f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906394f649dd906024015f60405180830381865afa1580156116ef573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117169190810190615a8d565b60405163fe243a1760e01b81526001600160a01b03888116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac060248301529294509092505f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f169063fe243a1790604401602060405180830381865afa15801561179c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c09190615b48565b9050805f036117d457509094909350915050565b5f835160016117e39190615a1f565b6001600160401b038111156117fa576117fa614e62565b604051908082528060200260200182016040528015611823578160200160208202803683370190505b5090505f845160016118359190615a1f565b6001600160401b0381111561184c5761184c614e62565b604051908082528060200260200182016040528015611875578160200160208202803683370190505b50905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0828651815181106118a0576118a0615930565b60200260200101906001600160a01b031690816001600160a01b03168152505082818651815181106118d4576118d4615930565b60209081029190910101525f5b8551811015611975578581815181106118fc576118fc615930565b602002602001015183828151811061191657611916615930565b60200260200101906001600160a01b031690816001600160a01b03168152505084818151811061194857611948615930565b602002602001015182828151811061196257611962615930565b60209081029190910101526001016118e1565b509097909650945050505050565b5f6001600160a01b038216158015906119b557506001600160a01b038083165f818152609a6020526040902054909116145b92915050565b60405163152667d960e31b81526001600160a01b03838116600483015282811660248301525f9182917f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe6169063a9333ec890604401602060405180830381865afa158015611a2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f91906159f0565b9050611a5d8484835f61371f565b949350505050565b611a6d6138fa565b6111e85f613954565b82611a80816133cd565b611a9d5760405163932d94f760e01b815260040160405180910390fd5b611aa684611983565b611ac3576040516325ec6c1f60e01b815260040160405180910390fd5b836001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051611afe9291906159c2565b60405180910390a250505050565b60605f82516001600160401b03811115611b2857611b28614e62565b604051908082528060200260200182016040528015611b51578160200160208202803683370190505b5090505f5b8351811015611bda576001600160a01b0385165f9081526098602052604081208551909190869084908110611b8d57611b8d615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054828281518110611bc757611bc7615930565b6020908102919091010152600101611b56565b509392505050565b606654600290600490811603611c0b5760405163840a48d560e01b815260040160405180910390fd5b611c136126fc565b855f5b81811015611ca657611c9e898983818110611c3357611c33615930565b9050602002810190611c459190615b5f565b611c4e90615b73565b888884818110611c6057611c60615930565b9050602002810190611c729190615962565b888886818110611c8457611c84615930565b9050602002016020810190611c999190615b7e565b6139a5565b600101611c16565b5050611cb2600160c955565b50505050505050565b611cc3614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116828501526002830154168185015260038201546060820152600482015463ffffffff1660808201526005820180548551818602810186019096528086529194929360a08601939290830182828015611d7157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611d53575b5050505050815260200160068201805480602002602001604051908101604052809291908181526020018280548015611dc757602002820191905f5260205f20905b815481526020019060010190808311611db3575b5050505050815250509050919050565b6060611de2336121d3565b9050610dd0848484612352565b6001600160a01b038083165f90815260a260209081526040808320938516835292815282822083519182019093529154825290610dd090613de7565b60608082516001600160401b03811115611e4757611e47614e62565b604051908082528060200260200182016040528015611e70578160200160208202803683370190505b50915082516001600160401b03811115611e8c57611e8c614e62565b604051908082528060200260200182016040528015611eb5578160200160208202803683370190505b506001600160a01b038086165f908152609a6020526040812054929350911690611ee0868387612755565b90505f5b85518110156120ad575f611f10878381518110611f0357611f03615930565b6020026020010151613856565b9050806001600160a01b031663fe243a1789898581518110611f3457611f34615930565b60200260200101516040518363ffffffff1660e01b8152600401611f6e9291906001600160a01b0392831681529116602082015260400190565b602060405180830381865afa158015611f89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fad9190615b48565b858381518110611fbf57611fbf615930565b6020026020010181815250505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f89858151811061200257612002615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061208686848151811061205457612054615930565b602002602001015185858151811061206e5761206e615930565b6020026020010151836138dc9092919063ffffffff16565b87848151811061209857612098615930565b60209081029190910101525050600101611ee4565b5050505b9250929050565b5f54610100900460ff16158080156120d657505f54600160ff909116105b806120ef5750303b1580156120ef57505f5460ff166001145b6121575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015612178575f805461ff0019166101001790555b61218182612e42565b61218a83613954565b8015611106575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60606121dd6126fc565b6121e68261107e565b6122035760405163a5c7c44560e01b815260040160405180910390fd5b61220c82611983565b1561222a576040516311ca333560e31b815260040160405180910390fd5b336001600160a01b038316146122e2576001600160a01b038083165f908152609a60205260409020541661225d816133cd565b8061228357506001600160a01b038181165f908152609960205260409020600101541633145b6122a057604051631e499a2360e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a3505b6122eb82613e06565b90506122f7600160c955565b919050565b6066546002906004908116036123255760405163840a48d560e01b815260040160405180910390fd5b61232d6126fc565b61234161233986615b73565b8585856139a5565b61234b600160c955565b5050505050565b61235a6126fc565b6123633361107e565b1561238157604051633bf2b50360e11b815260040160405180910390fd5b61238a83611983565b6123a7576040516325ec6c1f60e01b815260040160405180910390fd5b6123b333848484614065565b6110fc3384612eff565b60605f83516001600160401b038111156123d9576123d9614e62565b60405190808252806020026020018201604052801561240c57816020015b60608152602001906001900390816123f75790505b5090505f5b8451811015611bda5761243d85828151811061242f5761242f615930565b602002602001015185611b0c565b82828151811061244f5761244f615930565b6020908102919091010152600101612411565b61246a6138fa565b6001600160a01b0381166124cf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161214e565b6124d881613954565b50565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea612548614124565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05126001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126149190615b99565b6001600160a01b0316336001600160a01b0316146126455760405163794821ff60e01b815260040160405180910390fd5b6066548019821981161461266c5760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020015b60405180910390a25050565b6001600160a01b0381165f90815260a3602052604090206060906119b5906141c0565b5f6126d76124db565b60405161190160f01b60208201526022810191909152604281018390526062016111fc565b600260c9540361274e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161214e565b600260c955565b60605f82516001600160401b0381111561277157612771614e62565b60405190808252806020026020018201604052801561279a578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b031663547afb8786866040518363ffffffff1660e01b81526004016127ec929190615bb4565b5f60405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261282d9190810190615bd7565b90505f5b845181101561289c576128778786838151811061285057612850615930565b602002602001015184848151811061286a5761286a615930565b60200260200101516131a6565b83828151811061288957612889615930565b6020908102919091010152600101612831565b509095945050505050565b5f6001600160a01b0386166128cf576040516339b190bb60e11b815260040160405180910390fd5b83515f036128f05760405163796cc52560e01b815260040160405180910390fd5b5f84516001600160401b0381111561290a5761290a614e62565b604051908082528060200260200182016040528015612933578160200160208202803683370190505b5090505f85516001600160401b0381111561295057612950614e62565b604051908082528060200260200182016040528015612979578160200160208202803683370190505b5090505f5b8651811015612c75575f61299d888381518110611f0357611f03615930565b90505f60a25f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f8a85815181106129d6576129d6615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f209050612a4f888481518110612a1457612a14615930565b6020026020010151888581518110612a2e57612a2e615930565b602090810291909101810151604080519283019052845482529091906138dc565b848481518110612a6157612a61615930565b602002602001018181525050612aa0888481518110612a8257612a82615930565b602090810291909101810151604080519283019052835482526141cc565b858481518110612ab257612ab2615930565b60209081029190910101526001600160a01b038a1615612b4757612b098a8a8581518110612ae257612ae2615930565b6020026020010151878681518110612afc57612afc615930565b60200260200101516141e0565b612b478a8c8b8681518110612b2057612b20615930565b6020026020010151878781518110612b3a57612b3a615930565b60200260200101516137dc565b5f826001600160a01b031663724af4238d8c8781518110612b6a57612b6a615930565b60200260200101518c8881518110612b8457612b84615930565b60200260200101516040518463ffffffff1660e01b8152600401612baa93929190615c66565b6020604051808303815f875af1158015612bc6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615b48565b9050805f03612c67575f82557f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f8c8b8681518110612c2a57612c2a615930565b6020026020010151612c4f856040518060200160405290815f82015481525050613de7565b604051612c5e93929190615c66565b60405180910390a15b50505080600101905061297e565b506001600160a01b0388165f908152609f60205260408120805491829190612c9c83615c8a565b91905055505f6040518060e001604052808b6001600160a01b031681526020018a6001600160a01b031681526020018b6001600160a01b031681526020018381526020014363ffffffff1681526020018981526020018581525090505f612d02826111ea565b5f818152609e602090815260408083208054600160ff19909116811790915560a4835292819020865181546001600160a01b03199081166001600160a01b039283161783558885015195830180548216968316969096179095559187015160028201805490951692169190911790925560608501516003830155608085015160048301805463ffffffff191663ffffffff90921691909117905560a085015180519394508593612db89260058501920190614c59565b5060c08201518051612dd4916006840191602090910190614cbc565b5050506001600160a01b038b165f90815260a360205260409020612df8908261424a565b507f26b2aae26516e8719ef50ea2f6831a2efbd4e37dccdf0f6936b27bc08e793e30818386604051612e2c93929190615ca2565b60405180910390a19a9950505050505050505050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b5f611a5d82612e97612e9087613de7565b8690614255565b90614255565b6001600160a01b038281165f8181526099602090815260409182902060010180546001600160a01b0319169486169485179055905192835290917f773b54c04d756fcc5e678111f7d730de3be98192000799eee3d63716055a87c6910161269f565b6066545f90600190811603612f275760405163840a48d560e01b815260040160405180910390fd5b5f5f612f3285611683565b915091505f612f425f8685612755565b6001600160a01b038781165f818152609a602052604080822080546001600160a01b031916948b16948517905551939450919290917fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d874330491a35f5b8351811015611cb25773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612fd557612fd5615930565b60200260200101516001600160a01b0316036131455760405163a3d75e0960e01b81526001600160a01b0388811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613053573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061307791906159f0565b90505f60a25f8a6001600160a01b03166001600160a01b031681526020019081526020015f205f8785815181106130b0576130b0615930565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206040518060200160405290815f82015481525050905061312485848151811061310257613102615930565b6020026020010151836001600160401b0316836138dc9092919063ffffffff16565b85848151811061313657613136615930565b60200260200101818152505050505b61319e868886848151811061315c5761315c615930565b60200260200101515f87868151811061317757613177615930565b602002602001015187878151811061319157613191615930565b6020026020010151613288565b600101612f9c565b5f73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeabf196001600160a01b038416016132785760405163a3d75e0960e01b81526001600160a01b0385811660048301525f917f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f9091169063a3d75e0990602401602060405180830381865afa158015613234573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325891906159f0565b90506132706001600160401b038481169083166138c8565b915050610dd0565b506001600160401b031692915050565b805f036132a857604051630a33bc6960e21b815260040160405180910390fd5b81156133c5576001600160a01b038086165f90815260a2602090815260408083209388168352929052206132de81858585614269565b6040805160208101909152815481527f8be932bac54561f27260f95463d9b8ab37e06b2842e5ee2404157cc13df6eb8f908790879061331c90613de7565b60405161332b93929190615c66565b60405180910390a161333c8661107e565b15611cb2576001600160a01b038088165f90815260986020908152604080832093891683529290529081208054859290613377908490615a1f565b92505081905550866001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c8787866040516133bb93929190615c66565b60405180910390a2505b505050505050565b604051631beb2b9760e31b81526001600160a01b0382811660048301523360248301523060448301525f80356001600160e01b0319166064840152917f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3189091169063df595cb8906084016020604051808303815f875af1158015613453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b591906159a7565b60605f613483836142e4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6134bc614c00565b5f82815260a46020908152604091829020825160e08101845281546001600160a01b0390811682526001830154811682850152600283015416818501526003820154606082810191909152600483015463ffffffff1660808301526005830180548651818702810187019097528087529195929460a0860193929083018282801561356e57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311613550575b50505050508152602001600682018054806020026020016040519081016040528092919081815260200182805480156135c457602002820191905f5260205f20905b8154815260200190600101908083116135b0575b50505050508152505091508160a00151516001600160401b038111156135ec576135ec614e62565b604051908082528060200260200182016040528015613615578160200160208202803683370190505b5090505f7f000000000000000000000000000000000000000000000000000000000000038483608001516136499190615ccc565b90505f4363ffffffff168263ffffffff161061367a57613675845f015185602001518660a00151612755565b613691565b613691845f015185602001518660a001518561430b565b90505f5b8460a0015151811015611358576136e28560c0015182815181106136bb576136bb615930565b60200260200101518383815181106136d5576136d5615930565b6020026020010151614439565b8482815181106136f4576136f4615930565b6020908102919091010152600101613695565b5f6137158483856001614444565b611a5d9085615ce8565b6001600160a01b038085165f90815260a560209081526040808320938716835292905290812081906137509061449f565b90505f6137b660016137827f000000000000000000000000000000000000000000000000000000000000038443615cfb565b61378c9190615cfb565b6001600160a01b03808a165f90815260a560209081526040808320938c16835292905220906144b9565b90505f6137c38284615ce8565b90506137d08187876144d5565b98975050505050505050565b6001600160a01b038085165f90815260986020908152604080832093861683529290529081208054839290613812908490615ce8565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051611afe93929190615c66565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146138a1577f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96119b5565b7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f92915050565b5f610dd08383670de0b6b3a76400006144f3565b5f611a5d826138f46138ed87613de7565b86906138c8565b906138c8565b6033546001600160a01b031633146111e85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161214e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60a08401515182146139ca576040516343714afd60e01b815260040160405180910390fd5b83604001516001600160a01b0316336001600160a01b031614613a00576040516316110d3560e21b815260040160405180910390fd5b5f613a0a856111ea565b5f818152609e602052604090205490915060ff16613a3b576040516387c9d21960e01b815260040160405180910390fd5b60605f7f00000000000000000000000000000000000000000000000000000000000003848760800151613a6e9190615ccc565b90508063ffffffff164363ffffffff1611613a9c576040516378f67ae160e11b815260040160405180910390fd5b613ab3875f015188602001518960a001518461430b565b87516001600160a01b03165f90815260a360205260409020909250613ad99150836145d8565b505f82815260a46020526040812080546001600160a01b031990811682556001820180548216905560028201805490911690556003810182905560048101805463ffffffff1916905590613b306005830182614cf5565b613b3d600683015f614cf5565b50505f828152609e602052604090819020805460ff19169055517f1f40400889274ed07b24845e5054a87a0cab969eb1277aafe61ae352e7c32a0090613b869084815260200190565b60405180910390a185516001600160a01b039081165f908152609a6020526040812054885160a08a01519190931692613bc0918490612755565b90505f5b8860a0015151811015613ddc575f613beb8a60a001518381518110611f0357611f03615930565b90505f613c218b60c001518481518110613c0757613c07615930565b60200260200101518785815181106136d5576136d5615930565b9050805f03613c31575050613dd4565b8715613cff57816001600160a01b0316632eae418c8c5f01518d60a001518681518110613c6057613c60615930565b60200260200101518d8d88818110613c7a57613c7a615930565b9050602002016020810190613c8f9190615191565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606481018490526084015f604051808303815f87803b158015613ce4575f5ffd5b505af1158015613cf6573d5f5f3e3d5ffd5b50505050613dd1565b5f5f836001600160a01b03166350ff72258e5f01518f60a001518881518110613d2a57613d2a615930565b6020026020010151866040518463ffffffff1660e01b8152600401613d5193929190615c66565b60408051808303815f875af1158015613d6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d909190615d17565b91509150613dce878e5f01518f60a001518881518110613db257613db2615930565b602002602001015185858b8b8151811061319157613191615930565b50505b50505b600101613bc4565b505050505050505050565b80515f9015613df75781516119b5565b670de0b6b3a764000092915050565b606654606090600190600290811603613e325760405163840a48d560e01b815260040160405180910390fd5b6001600160a01b038084165f818152609a602052604080822080546001600160a01b0319811690915590519316928392917ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467691a35f5f613e9186611683565b9150915081515f03613ea55750505061405f565b81516001600160401b03811115613ebe57613ebe614e62565b604051908082528060200260200182016040528015613ee7578160200160208202803683370190505b5094505f613ef6878585612755565b90505f5b8351811015614059576040805160018082528183019092525f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833750506040805160018082528183019092529293505f92915060208083019080368337019050509050868481518110613f7a57613f7a615930565b6020026020010151835f81518110613f9457613f94615930565b60200260200101906001600160a01b031690816001600160a01b031681525050858481518110613fc657613fc6615930565b6020026020010151825f81518110613fe057613fe0615930565b602002602001018181525050848481518110613ffe57613ffe615930565b6020026020010151815f8151811061401857614018615930565b6020026020010181815250506140318b898585856128a7565b8a858151811061404357614043615930565b6020908102919091010152505050600101613efa565b50505050505b50919050565b6001600160a01b038084165f90815260996020526040902060010154168061408d5750610f25565b6001600160a01b0381165f908152609c6020908152604080832085845290915290205460ff16156140d157604051630d4c4c9160e21b815260040160405180910390fd5b6001600160a01b0381165f908152609c602090815260408083208584528252909120805460ff1916600117905583015161234b908290614118908890889084908890610889565b855160208701516145e3565b60605f6141507f76302e302e300000000000000000000000000000000000000000000000000006613477565b9050805f8151811061416457614164615930565b602001015160f81c60f81b8160018151811061418257614182615930565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b60605f610dd083614635565b5f610dd06141d984613de7565b83906138c8565b6001600160a01b038084165f90815260a560209081526040808320938616835292905290812061420f9061449f565b9050610f254361421f8484615a1f565b6001600160a01b038088165f90815260a560209081526040808320938a16835292905220919061468e565b5f610dd08383614699565b5f610dd083670de0b6b3a7640000846144f3565b825f036142955760408051602081019091528454815261428e908290612e9790613de7565b8455610f25565b6040805160208101909152845481525f906142b19085846138dc565b90505f6142be8483615a1f565b90505f6142d984612e976142d2888a615a1f565b8590614255565b875550505050505050565b5f60ff8216601f8111156119b557604051632cd44ac360e21b815260040160405180910390fd5b60605f83516001600160401b0381111561432757614327614e62565b604051908082528060200260200182016040528015614350578160200160208202803683370190505b5090505f7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe66001600160a01b03166394d7d00c8787876040518463ffffffff1660e01b81526004016143a493929190615d39565b5f60405180830381865afa1580156143be573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143e59190810190615bd7565b90505f5b855181101561442d576144088887838151811061285057612850615930565b83828151811061441a5761441a615930565b60209081029190910101526001016143e9565b50909695505050505050565b5f610dd083836138c8565b5f5f6144518686866144f3565b9050600183600281111561446757614467615d72565b14801561448357505f848061447e5761447e615d86565b868809115b1561449657614493600182615a1f565b90505b95945050505050565b5f6144aa82826146e5565b6001600160e01b031692915050565b5f6144c583838361472a565b6001600160e01b03169392505050565b5f611a5d6144e38385615d9a565b85906001600160401b03166138c8565b5f80805f19858709858702925082811083820303915050805f0361452a5783828161452057614520615d86565b0492505050610dd0565b8084116145715760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161214e565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f610dd08383614773565b4281101561460457604051630819bdcd60e01b815260040160405180910390fd5b6146186001600160a01b0385168484614856565b610f2557604051638baa579f60e01b815260040160405180910390fd5b6060815f0180548060200260200160405190810160405280929190818152602001828054801561468257602002820191905f5260205f20905b81548152602001906001019080831161466e575b50505050509050919050565b6111068383836148aa565b5f8181526001830160205260408120546146de57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556119b5565b505f6119b5565b81545f9080156147225761470b846146fe600184615ce8565b5f91825260209091200190565b5464010000000090046001600160e01b0316611a5d565b509092915050565b82545f908161473b868683856149b0565b9050801561476957614752866146fe600184615ce8565b5464010000000090046001600160e01b0316610907565b5091949350505050565b5f818152600183016020526040812054801561484d575f614795600183615ce8565b85549091505f906147a890600190615ce8565b9050818114614807575f865f0182815481106147c6576147c6615930565b905f5260205f200154905080875f0184815481106147e6576147e6615930565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061481857614818615db9565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506119b5565b5f9150506119b5565b5f5f5f6148638585614a03565b90925090505f81600481111561487b5761487b615d72565b1480156148995750856001600160a01b0316826001600160a01b0316145b806109075750610907868686614a42565b82548015614962575f6148c2856146fe600185615ce8565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b0316602084015291925090851610156149155760405163151b8e3f60e11b815260040160405180910390fd5b805163ffffffff8086169116036149605782614936866146fe600186615ce8565b80546001600160e01b03929092166401000000000263ffffffff9092169190911790555050505050565b505b506040805180820190915263ffffffff92831681526001600160e01b03918216602080830191825285546001810187555f968752952091519051909216640100000000029190921617910155565b5f5b81831015611bda575f6149c58484614b29565b5f8781526020902090915063ffffffff86169082015463ffffffff1611156149ef578092506149fd565b6149fa816001615a1f565b93505b506149b2565b5f5f8251604103614a37576020830151604084015160608501515f1a614a2b87828585614b43565b945094505050506120b1565b505f905060026120b1565b5f5f5f856001600160a01b0316631626ba7e60e01b8686604051602401614a6a929190615dcd565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051614aa89190615de5565b5f60405180830381855afa9150503d805f8114614ae0576040519150601f19603f3d011682016040523d82523d5f602084013e614ae5565b606091505b5091509150818015614af957506020815110155b801561090757508051630b135d3f60e11b90614b1e9083016020908101908401615b48565b149695505050505050565b5f614b376002848418615dfb565b610dd090848416615a1f565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b7857505f90506003614bf7565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bc9573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614bf1575f60019250925050614bf7565b91505f90505b94509492505050565b6040518060e001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f63ffffffff16815260200160608152602001606081525090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614c77565b50614cb8929150614d0c565b5090565b828054828255905f5260205f20908101928215614cac579160200282015b82811115614cac578251825591602001919060010190614cda565b5080545f8255905f5260205f20908101906124d891905b5b80821115614cb8575f8155600101614d0d565b6001600160a01b03811681146124d8575f5ffd5b80356122f781614d20565b5f5f5f5f5f60a08688031215614d53575f5ffd5b8535614d5e81614d20565b94506020860135614d6e81614d20565b93506040860135614d7e81614d20565b94979396509394606081013594506080013592915050565b5f5f83601f840112614da6575f5ffd5b5081356001600160401b03811115614dbc575f5ffd5b6020830191508360208260051b85010111156120b1575f5ffd5b5f5f60208385031215614de7575f5ffd5b82356001600160401b03811115614dfc575f5ffd5b614e0885828601614d96565b90969095509350505050565b602080825282518282018190525f918401906040840190835b8181101561289c578351835260209384019390920191600101614e2d565b5f60208284031215614e5b575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715614e9857614e98614e62565b60405290565b604080519081016001600160401b0381118282101715614e9857614e98614e62565b604051601f8201601f191681016001600160401b0381118282101715614ee857614ee8614e62565b604052919050565b5f6001600160401b03821115614f0857614f08614e62565b5060051b60200190565b5f82601f830112614f21575f5ffd5b8135614f34614f2f82614ef0565b614ec0565b8082825260208201915060208360051b860101925085831115614f55575f5ffd5b602085015b83811015614f7b578035614f6d81614d20565b835260209283019201614f5a565b5095945050505050565b5f82601f830112614f94575f5ffd5b8135614fa2614f2f82614ef0565b8082825260208201915060208360051b860101925085831115614fc3575f5ffd5b602085015b83811015614f7b578035835260209283019201614fc8565b5f5f5f60608486031215614ff2575f5ffd5b8335614ffd81614d20565b925060208401356001600160401b03811115615017575f5ffd5b61502386828701614f12565b92505060408401356001600160401b0381111561503e575f5ffd5b61504a86828701614f85565b9150509250925092565b5f8151808452602084019350602083015f5b82811015615084578151865260209586019590910190600101615066565b5093949350505050565b602081525f610dd06020830184615054565b803563ffffffff811681146122f7575f5ffd5b5f5f83601f8401126150c3575f5ffd5b5081356001600160401b038111156150d9575f5ffd5b6020830191508360208285010111156120b1575f5ffd5b5f5f5f5f60608587031215615103575f5ffd5b843561510e81614d20565b935061511c602086016150a0565b925060408501356001600160401b03811115615136575f5ffd5b615142878288016150b3565b95989497509550505050565b5f5f5f5f60808587031215615161575f5ffd5b843561516c81614d20565b9350602085013561517c81614d20565b93969395505050506040820135916060013590565b5f602082840312156151a1575f5ffd5b8135610dd081614d20565b5f5f604083850312156151bd575f5ffd5b82356151c881614d20565b915060208301356151d881614d20565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dd060208301846151e3565b5f60e08284031215615233575f5ffd5b61523b614e76565b905061524682614d34565b815261525460208301614d34565b602082015261526560408301614d34565b604082015260608281013590820152615280608083016150a0565b608082015260a08201356001600160401b0381111561529d575f5ffd5b6152a984828501614f12565b60a08301525060c08201356001600160401b038111156152c7575f5ffd5b6152d384828501614f85565b60c08301525092915050565b5f602082840312156152ef575f5ffd5b81356001600160401b03811115615304575f5ffd5b611a5d84828501615223565b5f60208284031215615320575f5ffd5b813560ff81168114610dd0575f5ffd5b5f8151808452602084019350602083015f5b828110156150845781516001600160a01b0316865260209586019590910190600101615342565b80516001600160a01b03908116835260208083015182169084015260408083015190911690830152606080820151908301526080808201515f916153b49085018263ffffffff169052565b5060a082015160e060a08501526153ce60e0850182615330565b905060c083015184820360c08601526144968282615054565b604081525f6153f96040830185615369565b82810360208401526144968185615054565b5f82825180855260208501945060208160051b830101602085015f5b8381101561442d57601f19858403018852615443838351615054565b6020988901989093509190910190600101615427565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b828110156154b057605f1987860301845261549b858351615369565b9450602093840193919091019060010161547f565b505050508281036020840152614496818561540b565b6001600160401b03811681146124d8575f5ffd5b5f5f5f5f608085870312156154ed575f5ffd5b84356154f881614d20565b9350602085013561550881614d20565b92506040850135615518816154c6565b91506060850135615528816154c6565b939692955090935050565b5f5f5f60608486031215615545575f5ffd5b833561555081614d20565b9250602084013591506040840135615567816154c6565b809150509250925092565b604081525f6153f96040830185615330565b5f5f5f60408486031215615596575f5ffd5b83356155a181614d20565b925060208401356001600160401b038111156155bb575f5ffd5b6155c7868287016150b3565b9497909650939450505050565b5f5f604083850312156155e5575f5ffd5b82356155f081614d20565b915060208301356001600160401b0381111561560a575f5ffd5b61561685828601614f12565b9150509250929050565b5f5f5f5f5f5f60608789031215615635575f5ffd5b86356001600160401b0381111561564a575f5ffd5b61565689828a01614d96565b90975095505060208701356001600160401b03811115615674575f5ffd5b61568089828a01614d96565b90955093505060408701356001600160401b0381111561569e575f5ffd5b6156aa89828a01614d96565b979a9699509497509295939492505050565b602081525f610dd06020830184615369565b5f5f5f606084860312156156e0575f5ffd5b83356156eb81614d20565b925060208401356001600160401b03811115615705575f5ffd5b840160408187031215615716575f5ffd5b61571e614e9e565b81356001600160401b03811115615733575f5ffd5b8201601f81018813615743575f5ffd5b80356001600160401b0381111561575c5761575c614e62565b61576f601f8201601f1916602001614ec0565b818152896020838501011115615783575f5ffd5b816020840160208301375f60209282018301528352928301359282019290925293969395505050506040919091013590565b5f5f604083850312156157c6575f5ffd5b82356157d181614d20565b946020939093013593505050565b604081525f6153f96040830185615054565b80151581146124d8575f5ffd5b5f5f5f5f60608587031215615811575f5ffd5b84356001600160401b03811115615826575f5ffd5b850160e08188031215615837575f5ffd5b935060208501356001600160401b03811115615851575f5ffd5b61585d87828801614d96565b9094509250506040850135615528816157f1565b5f5f60408385031215615882575f5ffd5b82356001600160401b03811115615897575f5ffd5b8301601f810185136158a7575f5ffd5b80356158b5614f2f82614ef0565b8082825260208201915060208360051b8501019250878311156158d6575f5ffd5b6020840193505b828410156159015783356158f081614d20565b8252602093840193909101906158dd565b945050505060208301356001600160401b0381111561560a575f5ffd5b602081525f610dd0602083018461540b565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615958575f5ffd5b9190910192915050565b5f5f8335601e19843603018112615977575f5ffd5b8301803591506001600160401b03821115615990575f5ffd5b6020019150600581901b36038213156120b1575f5ffd5b5f602082840312156159b7575f5ffd5b8151610dd0816157f1565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f60208284031215615a00575f5ffd5b8151610dd0816154c6565b634e487b7160e01b5f52601160045260245ffd5b808201808211156119b5576119b5615a0b565b5f82601f830112615a41575f5ffd5b8151615a4f614f2f82614ef0565b8082825260208201915060208360051b860101925085831115615a70575f5ffd5b602085015b83811015614f7b578051835260209283019201615a75565b5f5f60408385031215615a9e575f5ffd5b82516001600160401b03811115615ab3575f5ffd5b8301601f81018513615ac3575f5ffd5b8051615ad1614f2f82614ef0565b8082825260208201915060208360051b850101925087831115615af2575f5ffd5b6020840193505b82841015615b1d578351615b0c81614d20565b825260209384019390910190615af9565b8095505050505060208301516001600160401b03811115615b3c575f5ffd5b61561685828601615a32565b5f60208284031215615b58575f5ffd5b5051919050565b5f823560de19833603018112615958575f5ffd5b5f6119b53683615223565b5f60208284031215615b8e575f5ffd5b8135610dd0816157f1565b5f60208284031215615ba9575f5ffd5b8151610dd081614d20565b6001600160a01b03831681526040602082018190525f90611a5d90830184615330565b5f60208284031215615be7575f5ffd5b81516001600160401b03811115615bfc575f5ffd5b8201601f81018413615c0c575f5ffd5b8051615c1a614f2f82614ef0565b8082825260208201915060208360051b850101925086831115615c3b575f5ffd5b6020840193505b82841015610907578351615c55816154c6565b825260209384019390910190615c42565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60018201615c9b57615c9b615a0b565b5060010190565b838152606060208201525f615cba6060830185615369565b82810360408401526109078185615054565b63ffffffff81811683821601908111156119b5576119b5615a0b565b818103818111156119b5576119b5615a0b565b63ffffffff82811682821603908111156119b5576119b5615a0b565b5f5f60408385031215615d28575f5ffd5b505080516020909101519092909150565b6001600160a01b03841681526060602082018190525f90615d5c90830185615330565b905063ffffffff83166040830152949350505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b6001600160401b0382811682821603908111156119b5576119b5615a0b565b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f611a5d60408301846151e3565b5f82518060208501845e5f920191825250919050565b5f82615e1557634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212204237bda705ffecdf1ae6cc73235bd2b7863672d16a08c0bf6df9ae308d2069e464736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + }, + "0xa82ff9afd8f496c3d6ac40e2a0f282e47488cfc9": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f3560e01c90816346fbf68e14610243575080638568520614610153578063ce548428146100745763eab66d7a14610048575f80fd5b34610070575f366003190112610070576001546040516001600160a01b039091168152602090f35b5f80fd5b346100705760203660031901126100705761008d61027b565b6001546001600160a01b038116916100a6338414610291565b6001600160a01b03169182156100f65760407f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892918151908152846020820152a16001600160a01b03191617600155005b60405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608490fd5b346100705760403660031901126100705761016c61027b565b602435908115158092036100705761018f60018060a01b03600154163314610291565b6001600160a01b03169081156101e857816040917f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152935f525f602052825f2060ff1981541660ff831617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608490fd5b34610070576020366003190112610070576020906001600160a01b0361026761027b565b165f525f825260ff60405f20541615158152f35b600435906001600160a01b038216820361007057565b1561029857565b60405162461bcd60e51b815260206004820152602a60248201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160448201526939903ab73830bab9b2b960b11b6064820152608490fdfea2646970667358221220e71c0c74ddb607e4c85c23ba6d84d6508e60f3e2f8ae33144c449252ab1a1e7364736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + }, + "0xb0d4afd8879ed9f52b28595d31b441d079b2ca07": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955", + "0x00000000000000000000000000000000000000000000000000000000000000ca": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a79720", + "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97", + "0x00000000000000000000000000000000000000000000000000000000000000ce": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000001429859428c0abc9c2c47c8ee9fbaf82cfa0f20f" + } + }, + "0xb7f8bc63bbcad18155201308c8f3540b07f84f5e": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea2646970667358221220521ca4c20142a7f693ef7735bad4fe09622e49c3a7bd3c7b54c1ae4e9a37a04864736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788" + } + }, + "0xc5a5c42992decbae36851359345fe25997f5c42d": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000032": "0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef", + "0x0000000000000000000000000000000000000000000000000000000000000064": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007a2088a1bfc9d81c55368ae168c2c02570cb814f", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405236156051577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff35b3d5ffd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e15604d573d5ff3fea264697066735822122041b8d4490d5193f3b96d7ff5b1b77bed64ad921c91766c3d309b69c90549b30064736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955", + "0x00000000000000000000000000000000000000000000000000000000000000ca": "0x00000000000000000000000006530dd13afb697b81e2d602a279ebaec8ca2e31", + "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a79720", + "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x000000000000000000000000663f3ad617193148711d28f5334ee4ed07016602", + "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x4cc11a4ac146ce4fc71493d694a9707194316cbb609603a195ffbe0c4c099c97", + "0x00000000000000000000000000000000000000000000000000000000000000ce": "0x00a18429d092a8e1f58aea6ff650ad715ad4e6d7056600bb201d38460244507b", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000fd471836031dc5108809d173a067e8486b9047a3" + } + }, + "0xcd8a1c3ba11cf5ecfa6267617243239504a98d90": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610011575f80fd5b5f3560e01c806331b36bd914610ce35780633563b0d114610c4a5780634d2b57fe14610b0c5780634f739f741461046d5780635c155662146102b25763cefdc1d41461005b575f80fd5b346102ae5760603660031901126102ae57610074610e37565b60243590610080610f02565b916040926100d78451926100948685610e7c565b60018452601f198601366020860137806100ad85611084565b5285516361c8a12f60e11b81526001600160a01b0386169490925f91849182918760048401611663565b0381875afa9182156102a45763ffffffff6100fe6020946064935f91610282575b50611084565b511691875195869384926304ec635160e01b8452600484015263ffffffff8716602484015260448301525afa918215610278575f92610247575b506001600160c01b038216915f83805b61020e575061ffff169261015b84610ee7565b9361016887519586610e7c565b808552610177601f1991610ee7565b013660208601375f925f5b8551851080610203575b156101da576001811b84166001600160c01b03166101b3575b6101ae90611655565b610182565b9360016101ae9160ff60f81b8760f81b165f1a6101d0828a6110f4565b53019490506101a5565b87836101ff6101ea858a8c611105565b83519384938452806020850152830190610f15565b0390f35b50610100811061018c565b5f1981018181116102335761ffff9116911661ffff8114610233576001019080610148565b634e487b7160e01b5f52601160045260245ffd5b61026a91925060203d602011610271575b6102628183610e7c565b81019061162a565b905f610138565b503d610258565b84513d5f823e3d90fd5b61029e91503d805f833e6102968183610e7c565b810190611579565b5f6100f8565b86513d5f823e3d90fd5b5f80fd5b346102ae5760603660031901126102ae576102cb610e37565b6024356001600160401b0381116102ae576102ea903690600401610fbc565b6102f2610f02565b6040516361c8a12f60e11b815290926001600160a01b03165f828061031b868860048401611663565b0381845afa918215610402575f92610451575b5082519361035461033e86610e9d565b9561034c6040519788610e7c565b808752610e9d565b602086019490601f19013686375f5b815181101561040d5761037681836110a5565b519060208463ffffffff61038a848a6110a5565b516040516304ec635160e01b8152600481019690965263ffffffff92831660248701521616604484015282606481885afa8015610402576001925f916103e4575b50828060c01b03166103dd828a6110a5565b5201610363565b6103fc915060203d8111610271576102628183610e7c565b896103cb565b6040513d5f823e3d90fd5b8587604051918291602083019060208452518091526040830191905f5b818110610438575050500390f35b825184528594506020938401939092019160010161042a565b6104669192503d805f833e6102968183610e7c565b908461032e565b346102ae5760803660031901126102ae57610486610e37565b60243563ffffffff8116908181036102ae57604435926001600160401b0384116102ae57366023850112156102ae578360040135936001600160401b0385116102ae57602481019060248636920101116102ae57606435926001600160401b0384116102ae57366023850112156102ae578360040135956001600160401b0387116102ae5760248501938760051b9560248736920101116102ae57610529611534565b50604051636830483560e01b81526001600160a01b03919091169390602081600481885afa908115610402575f91610aed575b50610565611534565b604080516361c8a12f60e11b8152600481018b90526024810191909152604481018b905290976001600160fb1b038b116102ae5781606481835f948c848401378101030181895afa908115610402575f91610ad3575b50875260018060a01b031691604051986340e03a8160e11b8a528860048b0152604060248b01525f8a806105f36044820186886115fa565b0381875afa998a15610402575f9a610ab7575b5060408801998a5261061782610e9d565b966106256040519889610e7c565b828852610641601f1961063785610e9d565b0160208a016110d8565b606089019788525f5b60ff81168481101561092e575f6106778261066487611052565b8d519061067183836110a5565b526110a5565b505f84868e5b8d8d8386106106fa5750505050505061069581611052565b905f5b8c8282106106ca5760ff959492506106b8939150519061067183836110a5565b501660ff81146102335760010161064a565b9063ffffffff6106e7826106e188600196516110a5565b516110a5565b51166106f382866110a5565b5201610698565b63ffffffff61071b87610713816020986107559a61161a565b3595516110a5565b516040516304ec635160e01b8152600481019590955263ffffffff9283166024860152161660448301529092839190829081906064820190565b03915afa908115610402575f91610910575b506001600160c01b0316801561087f5760018091610786868b8d611649565b3560f81c1c161461079d575b60010184868e61067d565b908960206107ac84898961161a565b356107b8868b8d611649565b60405163dd9846b960e01b815260048101929092523560f81c602482015263ffffffff929092166044830152816064818d5afa908115610402578d85915f93610829575b509163ffffffff610818856106e16001979561082197516110a5565b91169052611655565b919050610792565b925050506020813d8211610877575b8161084560209383610e7c565b810103126102ae57818d63ffffffff6108186001956106e18961086a61082198611568565b97509550509550506107fc565b3d9150610838565b60405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a490fd5b610928915060203d8111610271576102628183610e7c565b5f610767565b5089898c8e8760048a60208f60405193848092632efa2ca360e11b82525afa908115610402575f93610987938593610a86575b506040519687948593849363354952a360e21b85526040600486015260448501916115fa565b602483019190915203916001600160a01b03165afa91821561040257610a05926109f2915f91610a6c575b5090859493929160206109df970190815260405196879660208852516080602089015260a0880190611019565b9051868203601f19016040880152611019565b9051848203601f19016060860152611019565b905190601f19838203016080840152815180825260208201916020808360051b8301019401925f915b838310610a3b5786860387f35b919395509193602080610a5a600193601f198682030187528951611019565b97019301930190928695949293610a2e565b610a8091503d805f833e6102968183610e7c565b866109b2565b610aa991935060203d602011610ab0575b610aa18183610e7c565b8101906110b9565b9189610961565b503d610a97565b610acc919a503d805f833e6102968183610e7c565b988a610606565b610ae791503d805f833e6102968183610e7c565b8a6105bb565b610b06915060203d602011610ab057610aa18183610e7c565b8961055c565b346102ae5760403660031901126102ae57610b25610e37565b6024356001600160401b0381116102ae57610b44903690600401610fbc565b8051610b68610b5282610e9d565b91610b606040519384610e7c565b808352610e9d565b602082019290601f19013684376001600160a01b03909316925f5b8151811015610bfd57610b9681836110a5565b519060405191630a5aec1960e21b83526004830152602082602481895afa8015610402576001925f91610bdf575b50610bcf82866110a5565b90838060a01b0316905201610b83565b610bf7915060203d8111610ab057610aa18183610e7c565b87610bc4565b8383604051918291602083019060208452518091526040830191905f5b818110610c28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610c1a565b346102ae5760603660031901126102ae57610c63610e37565b6024356001600160401b0381116102ae57366023820112156102ae57806004013591610c8e83610ee7565b610c9b6040519182610e7c565b83815236602485850101116102ae575f6020856101ff966024610ccf97018386013783010152610cc9610f02565b91611105565b604051918291602083526020830190610f15565b346102ae5760403660031901126102ae57610cfc610e37565b602435906001600160401b0382116102ae57366023830112156102ae578160040135610d2781610e9d565b92610d356040519485610e7c565b8184526024602085019260051b820101903682116102ae57602401915b818310610e17578385610d658151611052565b6001600160a01b03909216915f5b8251811015610e01576001600160a01b03610d8e82856110a5565b516040516309aa152760e11b81529116600482015290602082602481885afa8015610402575f90610dcf575b60019250610dc882856110a5565b5201610d73565b506020823d8211610df9575b81610de860209383610e7c565b810103126102ae5760019151610dba565b3d9150610ddb565b604051602080825281906101ff90820185610eb4565b82356001600160a01b03811681036102ae57815260209283019201610d52565b600435906001600160a01b03821682036102ae57565b606081019081106001600160401b03821117610e6857604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117610e6857604052565b6001600160401b038111610e685760051b60200190565b90602080835192838152019201905f5b818110610ed15750505090565b8251845260209384019390920191600101610ec4565b6001600160401b038111610e6857601f01601f191660200190565b6044359063ffffffff821682036102ae57565b9080602083519182815201916020808360051b8301019401925f915b838310610f4057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b808210610f805750505060208060019297019301930191939290610f31565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610f61565b9080601f830112156102ae578135610fd381610e9d565b92610fe16040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106110095750505090565b8135815260209182019101610ffc565b90602080835192838152019201905f5b8181106110365750505090565b825163ffffffff16845260209384019390920191600101611029565b9061105c82610e9d565b6110696040519182610e7c565b828152809261107a601f1991610e9d565b0190602036910137565b8051156110915760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156110915760209160051b010190565b908160209103126102ae57516001600160a01b03811681036102ae5790565b5f5b8281106110e657505050565b6060828201526020016110da565b908151811015611091570160200190565b604051636830483560e01b81526001600160a01b0390911692909190602083600481875afa928315610402575f93611513575b50604051634f4c91e160e11b815292602084600481885afa938415610402575f946114ce575b5060206004949560405195868092632efa2ca360e11b82525afa938415610402575f946114ad575b50919493908551926111c161119a85610e9d565b946111a86040519687610e7c565b8086526111b7601f1991610e9d565b01602086016110d8565b5f965b80518810156114a3576111d788826110f4565b51604051638902624560e01b815260f89190911c6004820181905263ffffffff851660248301529790945f866044816001600160a01b0385165afa958615610402575f96611411575b50855161122c81610e9d565b9061123a6040519283610e7c565b808252611249601f1991610e9d565b015f5b8181106113e857505061125f8b896110a5565b5261126a8a886110a5565b505f5b86518110156113d75761128081886110a5565b516040516308f6629d60e31b81526004810191909152906020826024816001600160a01b038e165afa918215610402575f926113b7575b50866112c3828a6110a5565b5160208d6112d1858d6110a5565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff939093166044840152826064816001600160a01b038c165afa908115610402578e925f92611370575b509361135d611369936001600160601b0386946001986040519561134387610e4d565b8a8060a01b0316865260208601521660408401528d6110a5565b519061067183836110a5565b500161126d565b915091506020813d82116113af575b8161138c60209383610e7c565b810103126102ae57516001600160601b03811681036102ae578d9161135d611320565b3d915061137f565b6113d091925060203d8111610ab057610aa18183610e7c565b905f6112b7565b5060019099019890975093506111c4565b6020906040516113f781610e4d565b5f81525f838201525f60408201528282860101520161124c565b9095503d805f833e6114238183610e7c565b8101906020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae57815161145981610e9d565b926114676040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b82821061149357505050945f611220565b8151815260209182019101611482565b5092955050505050565b6114c791945060203d602011610ab057610aa18183610e7c565b925f611186565b9093506020813d60201161150b575b816114ea60209383610e7c565b810103126102ae5751926001600160a01b03841684036102ae57602061115e565b3d91506114dd565b61152d91935060203d602011610ab057610aa18183610e7c565b915f611138565b60405190608082018281106001600160401b03821117610e6857604052606080838181528160208201528160408201520152565b519063ffffffff821682036102ae57565b6020818303126102ae578051906001600160401b0382116102ae57019080601f830112156102ae5781516115ac81610e9d565b926115ba6040519485610e7c565b81845260208085019260051b8201019283116102ae57602001905b8282106115e25750505090565b602080916115ef84611568565b8152019101906115d5565b908060209392818452848401375f828201840152601f01601f1916010190565b91908110156110915760051b0190565b908160209103126102ae57516001600160c01b03811681036102ae5790565b90821015611091570190565b5f1981146102335760010190565b60409063ffffffff61168094931681528160208201520190610eb4565b9056fea26469706673582212205aa9d189ad095bab98556b37227470a01b266e1c907e6602c3b98b12740b02f464736f6c634300081b0033", + "storage": {} + }, + "0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000066": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0xdc64a140aa3e981100a9beca4e685f962f0cf6c9": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df83836040518060600160405280602781526020016107e76027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b031685604051610566919061079b565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107b1565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205d4e17ffe6a54972b03f5d2bbd89c710a091ebdd0e3cea4e8770327f1c6dbf7e64736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000098": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000000000000000cb": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82", + "0x3d2729dff03bf559da35a983e55814217363c2a44a7ea59bdf688ab8754ea49d": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3" + } + }, + "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512": { + "nonce": 1, + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806346fbf68e1461004e5780638568520614610085578063ce5484281461009a578063eab66d7a146100ad575b5f5ffd5b61007061005c36600461027a565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009861009336600461029a565b6100d8565b005b6100986100a836600461027a565b610111565b6001546100c0906001600160a01b031681565b6040516001600160a01b03909116815260200161007c565b6001546001600160a01b031633146101035760405163794821ff60e01b815260040160405180910390fd5b61010d8282610148565b5050565b6001546001600160a01b0316331461013c5760405163794821ff60e01b815260040160405180910390fd5b610145816101cf565b50565b6001600160a01b03821661016f576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0382165f8181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b0381166101f6576040516339b190bb60e11b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610275575f5ffd5b919050565b5f6020828403121561028a575f5ffd5b6102938261025f565b9392505050565b5f5f604083850312156102ab575f5ffd5b6102b48361025f565b9150602083013580151581146102c8575f5ffd5b80915050925092905056fea2646970667358221220db74dd8a1c2636fc45fee53a0fefff90f86f0498901cb732dc4c0ce26247557164736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + }, + "0xf5059a5d33d5853360d16c683c16e67980206f36": { + "nonce": 1, + "balance": "0x0", + "code": "0x60806040526004361015610019575b36610374575b610374565b5f3560e01c80633659cfe6146100685780634f1ef286146100635780635c60da1b1461005e5780638f283970146100595763f851a4400361000e576102c5565b6101c7565b610173565b6100d4565b346100ba5760203660031901126100ba576100816100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014576100b8906100af602061032d565b905f825261043e565b005b5f80fd5b600435906001600160a01b03821682036100ba57565b60403660031901126100ba576100e86100be565b60243567ffffffffffffffff81116100ba57366023820112156100ba5780600401359167ffffffffffffffff83116100ba5736602484840101116100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f60208480602461016161015c6100b899610358565b61032d565b9682885201838701378401015261051d565b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ea5f395f51905f52546040516001600160a01b039091168152602090f35b346100ba5760203660031901126100ba576101e06100be565b5f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f5254604080516001600160a01b03808416825290931660208401819052927f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9190a18115610271576001600160a01b031916175f5160206106ca5f395f51905f5255005b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346100ba575f3660031901126100ba575f5160206106ca5f395f51905f5254336001600160a01b0390911603610014575f5160206106ca5f395f51905f52546040516001600160a01b039091168152602090f35b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761035357604052565b610319565b67ffffffffffffffff811161035357601f01601f191660200190565b5f5160206106ca5f395f51905f52546001600160a01b031633146103c8575f5160206106ea5f395f51905f52545f9081906001600160a01b0316368280378136915af43d5f803e156103c4573d5ff35b3d5ffd5b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906104bb575b6104a6575050565b6104b8916104b261058c565b916105d3565b50565b505f61049e565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b803b156104c2575f5160206106ea5f395f51905f5280546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610584576104a6575050565b50600161049e565b610596606061032d565b9060278252660819985a5b195960ca1b6040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561061a575f8161060f9460208394519201905af43d15610612573d9061060061015c83610358565b9182523d5f602084013e61066e565b90565b60609061066e565b60405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b9091901561067a575090565b81511561068a5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a0851ba576664d27dde363b300db02b006e60152f1efd7b34267485776e1b2f464736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000a82ff9afd8f496c3d6ac40e2a0f282e47488cfc90001", + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000064": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x0000000000000000000000000000000000000000000000000000000000000096": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000000000000000000000000000000000000000009c": "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x000000000000000000000000000000000000000000000000000000000000009d": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x000000000000000000000000000000000000000000000000000000000000009e": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b570", + "0x683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7": "0x00000000000000000000000000000000000000000000000000322af8000000c8", + "0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c": "0x000000000000000000000000998abeb3e57409262ae5b751f60747921b33613e", + "0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539d": "0x00000000000000000000000070e0ba845a1a0f2da3359c97e0285013525ffc49", + "0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539e": "0x00000000000000000000000095401dc811bb5740090279ba06cfa8fcf6113778", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000009e545e3c0baab3e08cdfd552c960a1050f373042" + } + }, + "0xfd471836031dc5108809d173a067e8486b9047a3": { + "nonce": 1, + "balance": "0x0", + "code": "0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630751299c146110e15750806325c36fa5146110c457806327d3bc9a14611095578063294e3ccb1461106d5780633659cfe614610d715780634c46688c14610d495780634f1ef286146109ef57806352d1902d1461092d57806354687ccf146107e95780635bea7ad6146106e1578063616af4f7146106b8578063715018a61461065b57806383501b211461063f5780638da5cb5b146106165780639367a05a146105ce5780639eade0f1146105665780639fc0984b1461051e578063a52f681b146104b6578063f28c3e37146102d5578063f2fde38b146102445763f6e04ac414610105575f80fd5b346102415761011336611191565b60cb54929493929091906001600160a01b0316330361022e57602083868101031261022a5760ca548335958794916001600160a01b03169060fe19820161019b575b85887ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208a83855260c9825260408520600160ff19825416179055604051908152a280f35b60ce54823b15610226576101ea87956101d8976040519889978896879663020a49e360e51b885260048801526060602488015260648701916112aa565b848103600319016044860152916112aa565b03915afa801561021b57610202575b80808080610155565b8161020c91611111565b61021757825f6101f9565b8280fd5b6040513d84823e3d90fd5b8680fd5b5f80fd5b63921f325560e01b865233600452602486fd5b80fd5b50346102415760203660031901126102415761025e6110fb565b6102666112ca565b6001600160a01b038116156102815761027e90611322565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346102415760c0366003190112610241576102ef6110fb565b6024356001600160a01b03811690819003610217576044356001600160a01b038116908190036104b2576064356001600160a01b03811692908390036104ae57845460ff8160081c1615948580966104a1575b801561048a575b1561042e5760ff198216600117875561039a918661041d575b5061037c60ff885460081c166103778161136a565b61136a565b61038533611322565b61039560ff885460081c1661136a565b611322565b6001600160601b0360a01b60cb54161760cb556001600160601b0360a01b60ca54161760ca556001600160601b0360a01b60cc54161760cc5560843560cd5560a43560ce556103e65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011787555f610362565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103495750600160ff831614610349565b50600160ff831610610342565b8480fd5b8380fd5b5034610241576020366003190112610241576104d06110fb565b6104d86112ca565b60cc80546001600160a01b0319166001600160a01b039290921691821790557f80ad03c31df486a2ab8f2fe1f9e0597e290255e749369a3e0cf3b1cf34b180898280a280f35b50346102415760203660031901126102415760043561053b6112ca565b8060ce557fd3ebd423ec4ce2fd9832bee3fff42bfb79c4d946682f5148d26655f99a3855788280a280f35b5034610241576020366003190112610241576105806110fb565b6105886112ca565b60ca80546001600160a01b0319166001600160a01b039290921691821790557fc34d8b9ef5ec2845c44a69730b4523b5d66bc715b6d4820707ff1f40ee5f1a9e8280a280f35b5034610241576020366003190112610241576004356105eb6112ca565b8060cd557f9b30076d63098a951a7d18845ba88073e71ac62778e98e997486aee85a5c42988280a280f35b50346102415780600319360112610241576033546040516001600160a01b039091168152602090f35b5034610241578060031936011261024157602060405160ff8152f35b50346102415780600319360112610241576106746112ca565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461024157806003193601126102415760cc546040516001600160a01b039091168152602090f35b50346102415760603660031901126102415760043567ffffffffffffffff81116107e557366023820112156107e55780600401359067ffffffffffffffff8211610217573660248360051b830101116102175760443567ffffffffffffffff81116104b257610754903690600401611163565b610782604080518381946020830196602435885284840137810188838201520301601f198101835282611111565b5190209083915b838310156107ca5760248360051b83010135908181105f146107b95785526020526001604085205b920191610789565b9085526020526001604085206107b1565b60ff604086602093815260c984522054166040519015158152f35b5080fd5b503461022a576107f836611191565b60cb54909493919291906001600160a01b0316330361091a57602083868101031261022a5760cc548335956001600160a01b039091169360fe19850161087f575b87877ffe3e9e971000ab9c80c7e06aba2933aae5419d0e44693e3046913e9e58053f6260208983855260c9825260408520600160ff19825416179055604051908152a280f35b815f9160209360405192839283378101838152039060025afa1561090f575f519260cd5491813b1561022a575f936108d6936040519687958694859463ab750e7560e01b86526060600487015260648601916112aa565b916024840152604483015203915afa801561090f576108f9575b80808080610839565b6109069193505f90611111565b5f9160206108f0565b6040513d5f823e3d90fd5b63921f325560e01b5f523360045260245ffd5b3461022a575f36600319011261022a577f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b031630036109845760206040515f5160206114bd5f395f51905f528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b604036600319011261022a57610a036110fb565b60243567ffffffffffffffff811161022a573660238201121561022a578060040135610a2e81611147565b90610a3c6040519283611111565b8082526020820192366024838301011161022a57815f92602460209301863783010152610ab67f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b5f5160206114bd5f395f51905f52546001600160a01b031614611249565b610abe6112ca565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610af5575050610af3906113ca565b005b6040516352d1902d60e01b81526001600160a01b03841690602081600481855afa5f9181610d15575b50610b7f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610cbe57610b9b846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610cb6575b610bd457005b833b15610c655750610af3925f92839251915af43d15610c5e573d610bf881611147565b90610c066040519283611111565b81523d5f602083013e5b60405191610c1f606084611111565b602783527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020840152660819985a5b195960ca1b6040840152611461565b6060610c10565b62461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b506001610bce565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091506020813d602011610d41575b81610d3160209383611111565b8101031261022a57519086610b1e565b3d9150610d24565b3461022a575f36600319011261022a5760cb546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a57610d8a6110fb565b610dc37f000000000000000000000000fd471836031dc5108809d173a067e8486b9047a36001600160a01b0316610a98308214156111e8565b610dcb6112ca565b602090604051610ddb8382611111565b5f815282810190601f1984013683377f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e20575050610af391506113ca565b6040516352d1902d60e01b81526001600160a01b038416908581600481855afa5f918161103e575b50610ea95760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b5f5160206114bd5f395f51905f5203610fe757610ec5846113ca565b604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610fe0575b610efe57005b833b15610f8f5750610af393925f92839251915af43d15610f87573d90610f2482611147565b91610f326040519384611111565b82523d5f8484013e5b7f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60405193610f6b606086611111565b60278552840152660819985a5b195960ca1b6040840152611461565b606090610f3b565b62461bcd60e51b815260048101859052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b505f610ef8565b60405162461bcd60e51b815260048101869052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d8311611066575b6110568183611111565b8101031261022a57519087610e48565b503d61104c565b3461022a575f36600319011261022a5760ca546040516001600160a01b039091168152602090f35b3461022a57602036600319011261022a576004355f5260c9602052602060ff60405f2054166040519015158152f35b3461022a575f36600319011261022a57602060ce54604051908152f35b3461022a575f36600319011261022a5760209060cd548152f35b600435906001600160a01b038216820361022a57565b90601f8019910116810190811067ffffffffffffffff82111761113357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161113357601f01601f191660200190565b9181601f8401121561022a5782359167ffffffffffffffff831161022a576020838186019501011161022a57565b90606060031983011261022a576004359160243567ffffffffffffffff811161022a57816111c191600401611163565b929092916044359067ffffffffffffffff821161022a576111e491600401611163565b9091565b156111ef57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561125057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b6033546001600160a01b031633036112de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b1561137157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b803b156114065760018060a01b03166001600160601b0360a01b5f5160206114bd5f395f51905f525416175f5160206114bd5f395f51905f5255565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b9091901561146d575090565b81511561147d5750805190602001fd5b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1eebd63985072e7470bf69ba25c433e587de7320238a395e920a3abca02c0c464736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x00000000000000000000000000000000000000000000000000000000000000ff" + } + } + }' diff --git a/operator/merkle_tree/lib/Cargo.lock b/operator/merkle_tree/lib/Cargo.lock index c07c0a2630..63db2f0700 100644 --- a/operator/merkle_tree/lib/Cargo.lock +++ b/operator/merkle_tree/lib/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -58,7 +58,9 @@ dependencies = [ "hex", "lambdaworks-crypto", "log", + "reqwest 0.12.5", "serde", + "serde_bytes", "serde_json", "serde_repr", "sha3", @@ -104,6 +106,12 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "auto_impl" version = "1.2.0" @@ -154,6 +162,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -901,7 +915,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "syn 2.0.65", @@ -963,7 +977,7 @@ checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" dependencies = [ "chrono", "ethers-core", - "reqwest", + "reqwest 0.11.27", "semver", "serde", "serde_json", @@ -988,7 +1002,7 @@ dependencies = [ "futures-locks", "futures-util", "instant", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "thiserror", @@ -1021,7 +1035,7 @@ dependencies = [ "jsonwebtoken", "once_cell", "pin-project", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "thiserror", @@ -1323,8 +1337,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -1381,6 +1397,25 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" version = "2.4.1" @@ -1475,6 +1510,29 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.1", + "pin-project-lite", +] + [[package]] name = "httparse" version = "1.8.0" @@ -1497,9 +1555,9 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", - "http-body", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -1511,6 +1569,26 @@ dependencies = [ "want", ] +[[package]] +name = "hyper" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.10", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + [[package]] name = "hyper-rustls" version = "0.24.2" @@ -1519,10 +1597,63 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper", - "rustls", + "hyper 0.14.28", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.5.2", + "hyper-util", + "rustls 0.23.26", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.2", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.5.2", + "hyper-util", + "native-tls", "tokio", - "tokio-rustls", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.5.2", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -1715,10 +1846,12 @@ dependencies = [ [[package]] name = "lambdaworks-crypto" -version = "0.10.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa95d94bba7de86cb96611b40d3#efd46f0b0aea3aa95d94bba7de86cb96611b40d3" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" dependencies = [ "lambdaworks-math", + "rand", + "rand_chacha", "serde", "sha2", "sha3", @@ -1726,9 +1859,11 @@ dependencies = [ [[package]] name = "lambdaworks-math" -version = "0.10.0" -source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa95d94bba7de86cb96611b40d3#efd46f0b0aea3aa95d94bba7de86cb96611b40d3" +version = "0.12.0" +source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b#5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b" dependencies = [ + "getrandom", + "rand", "serde", "serde_json", ] @@ -2452,11 +2587,11 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", - "http-body", - "hyper", - "hyper-rustls", + "http-body 0.4.6", + "hyper 0.14.28", + "hyper-rustls 0.24.2", "ipnet", "js-sys", "log", @@ -2464,22 +2599,65 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", - "rustls-pemfile", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "webpki-roots", - "winreg", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.10", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.2", + "hyper-rustls 0.27.5", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.2.0", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.52.0", ] [[package]] @@ -2595,10 +2773,23 @@ checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.8", - "rustls-webpki", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.23.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki 0.103.1", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -2608,6 +2799,21 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -2618,6 +2824,17 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "rustls-webpki" +version = "0.103.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", + "untrusted 0.9.0", +] + [[package]] name = "rustversion" version = "1.0.17" @@ -2776,6 +2993,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" version = "1.0.202" @@ -3014,7 +3240,7 @@ dependencies = [ "fs2", "hex", "once_cell", - "reqwest", + "reqwest 0.11.27", "semver", "serde", "serde_json", @@ -3052,6 +3278,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + [[package]] name = "system-configuration" version = "0.5.1" @@ -3221,7 +3453,17 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls 0.23.26", "tokio", ] @@ -3233,9 +3475,9 @@ checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", - "rustls", + "rustls 0.21.12", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tungstenite 0.20.1", "webpki-roots", ] @@ -3312,6 +3554,27 @@ dependencies = [ "winnow 0.6.8", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.2" @@ -3378,7 +3641,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls", + "rustls 0.21.12", "sha1", "thiserror", "url", @@ -3817,6 +4080,16 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "ws_stream_wasm" version = "0.7.4" diff --git a/operator/merkle_tree/lib/Cargo.toml b/operator/merkle_tree/lib/Cargo.toml index ba5fe61126..ca59bfc7ad 100644 --- a/operator/merkle_tree/lib/Cargo.toml +++ b/operator/merkle_tree/lib/Cargo.toml @@ -7,10 +7,10 @@ edition = "2021" serde = { version = "1.0.201", features = ["derive"] } serde_json = "1.0.117" bincode = "1.3.3" -lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "efd46f0b0aea3aa95d94bba7de86cb96611b40d3", features = ["serde"] } +lambdaworks-crypto = { git = "https://github.com/lambdaclass/lambdaworks.git", rev = "5f8f2cfcc8a1a22f77e8dff2d581f1166eefb80b", features = ["serde"] } hex = "0.4.3" sha3 = "0.10.8" -aligned-sdk = { path = "../../../batcher/aligned-sdk" } +aligned-sdk = { path = "../../../crates/sdk" } ciborium = "=0.2.2" log = "0.4.21" diff --git a/operator/merkle_tree/lib/rust-toolchain b/operator/merkle_tree/lib/rust-toolchain index 22d6c6fd9b..526951c2a6 100644 --- a/operator/merkle_tree/lib/rust-toolchain +++ b/operator/merkle_tree/lib/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2024-04-17" +channel = "stable" components = ["llvm-tools", "rustc-dev", "rustfmt", "rust-src"] diff --git a/operator/merkle_tree/lib/src/lib.rs b/operator/merkle_tree/lib/src/lib.rs index 15f9308998..d2ae136b75 100644 --- a/operator/merkle_tree/lib/src/lib.rs +++ b/operator/merkle_tree/lib/src/lib.rs @@ -1,4 +1,4 @@ -use aligned_sdk::core::types::{ +use aligned_sdk::common::types::{ VerificationCommitmentBatch, VerificationData, VerificationDataCommitment, }; use lambdaworks_crypto::merkle_tree::merkle::MerkleTree; diff --git a/operator/merkle_tree/lib/test_files/merkle_root.bin b/operator/merkle_tree/lib/test_files/merkle_root.bin index 235f4cb7b0..0d2f9a6844 100644 --- a/operator/merkle_tree/lib/test_files/merkle_root.bin +++ b/operator/merkle_tree/lib/test_files/merkle_root.bin @@ -1 +1 @@ -d8f7329e4f522a871373c6251aa3c39be8b89766e54174c9e6457fcd491cd86d \ No newline at end of file +eb0023f410ef49a3e82f9512a6fddc28e213c8d35b2e76df959f58e1c1e9d5fc \ No newline at end of file diff --git a/operator/merkle_tree/lib/test_files/merkle_tree_batch.bin b/operator/merkle_tree/lib/test_files/merkle_tree_batch.bin index 6ad052ec7d..35ca29fca0 100644 Binary files a/operator/merkle_tree/lib/test_files/merkle_tree_batch.bin and b/operator/merkle_tree/lib/test_files/merkle_tree_batch.bin differ diff --git a/operator/merkle_tree/merkle_tree.go b/operator/merkle_tree/merkle_tree.go index 781b933a6e..294f5deb90 100644 --- a/operator/merkle_tree/merkle_tree.go +++ b/operator/merkle_tree/merkle_tree.go @@ -22,7 +22,7 @@ func VerifyMerkleTreeBatch(batchBuffer []byte, merkleRootBuffer [32]byte) (isVer defer func() { rec := recover() if rec != nil { - err = fmt.Errorf("Panic was caught while verifying merkle tree batch: %s", rec) + err = fmt.Errorf("panic was caught while verifying merkle tree batch: %s", rec) } }() @@ -32,7 +32,7 @@ func VerifyMerkleTreeBatch(batchBuffer []byte, merkleRootBuffer [32]byte) (isVer r := (C.int32_t)(C.verify_merkle_tree_batch_ffi(batchPtr, (C.uint)(len(batchBuffer)), merkleRootPtr)) if r == -1 { - err = fmt.Errorf("Panic happened on FFI while verifying merkle tree batch") + err = fmt.Errorf("panic happened on FFI while verifying merkle tree batch") return isVerified, err } diff --git a/operator/mina/lib/Cargo.lock b/operator/mina/lib/Cargo.lock index dcd448035c..f7f2cdd83b 100644 --- a/operator/mina/lib/Cargo.lock +++ b/operator/mina/lib/Cargo.lock @@ -14,18 +14,18 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -44,16 +44,16 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.16", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -63,9 +63,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -73,7 +73,7 @@ dependencies = [ [[package]] name = "aligned-sdk" version = "0.1.0" -source = "git+https://github.com/lambdaclass/aligned_layer.git?rev=cebeee7b86de0fcd3fd6f97bcd8a1096d7708bc5#cebeee7b86de0fcd3fd6f97bcd8a1096d7708bc5" +source = "git+https://github.com/lambdaclass/aligned_layer.git?rev=220546afa12c035a508529224f5148cd6af4ca78#220546afa12c035a508529224f5148cd6af4ca78" dependencies = [ "ciborium", "dialoguer", @@ -93,9 +93,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" @@ -124,13 +124,13 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.37" +version = "0.1.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54e2fbc026948a0f638bf6a94fc0ce6e44652280fed40bb0dd970e3357bc5f2" +checksum = "28e2652684758b0d9b389d248b209ed9fd9989ef489a550265fe4bb8454fe7eb" dependencies = [ "alloy-primitives", "num_enum", - "strum 0.26.3", + "strum 0.27.2", ] [[package]] @@ -165,14 +165,14 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "alloy-core" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb750349efda145ca6aada68d0336067f7f364d7d44ef09e2cf000b040c5e99" +checksum = "05f1ab91967646311bb7dd32db4fee380c69fe624319dcd176b89fb2a420c6b5" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -183,9 +183,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95d76a38cae906fd394a5afb0736aaceee5432efe76addfd71048e623e208af" +checksum = "cf69d3061e2e908a4370bda5d8d6529d5080232776975489eec0b49ce971027e" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -236,7 +236,7 @@ dependencies = [ "derive_more 1.0.0", "once_cell", "serde", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -252,9 +252,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c66eec1acdd96b39b995b8f5ee5239bc0c871d62c527ae1ac9fd1d7fecd455" +checksum = "4584e3641181ff073e9d5bec5b3b8f78f9749d9fb108a1cfbc4399a4a139c72a" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -272,7 +272,7 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -294,7 +294,7 @@ dependencies = [ "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -311,25 +311,24 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb848c43f6b06ae3de2e4a67496cbbabd78ae87db0f1248934f15d76192c6a" +checksum = "777d58b30eb9a4db0e5f59bc30e8c2caef877fee7dc8734cf242a51a60f22e05" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more 1.0.0", + "derive_more 2.0.1", "foldhash", - "hashbrown 0.15.0", - "hex-literal", - "indexmap 2.6.0", + "hashbrown 0.15.5", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", "paste", "proptest", - "rand", + "rand 0.8.5", "ruint", "rustc-hash", "serde", @@ -365,10 +364,10 @@ dependencies = [ "futures-utils-wasm", "lru", "pin-project", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "url", @@ -395,9 +394,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -406,13 +405,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -430,7 +429,7 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", "serde_json", "tokio", @@ -508,7 +507,7 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -525,65 +524,66 @@ dependencies = [ "elliptic-curve", "eth-keystore", "k256", - "rand", - "thiserror", + "rand 0.8.5", + "thiserror 1.0.69", ] [[package]] name = "alloy-sol-macro" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "661c516eb1fa3294cc7f2fb8955b3b609d639c282ac81a4eedb14d3046db503a" +checksum = "e68b32b6fa0d09bb74b4cefe35ccc8269d711c26629bc7cd98a47eeb12fe353f" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecbabb8fc3d75a0c2cea5215be22e7a267e3efde835b0f2a8922f5e3f5d47683" +checksum = "2afe6879ac373e58fd53581636f2cce843998ae0b058ebe1e4f649195e2bd23c" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.6.0", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16517f2af03064485150d89746b8ffdcdbc9b6eeb3d536fb66efd7c2846fbc75" +checksum = "c3ba01aee235a8c699d07e5be97ba215607564e71be72f433665329bec307d28" dependencies = [ "alloy-json-abi", "const-hex", "dunce", "heck 0.5.0", + "macro-string", "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.108", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07ebb0c1674ff8cbb08378d7c2e0e27919d2a2dae07ad3bca26174deda8d389" +checksum = "4c13fc168b97411e04465f03e632f31ef94cad1c7c8951bf799237fd7870d535" dependencies = [ "serde", "winnow", @@ -591,9 +591,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e448d879903624863f608c552d10efb0e0905ddbee98b0049412799911eb062" +checksum = "6e960c4b52508ef2ae1e37cae5058e905e9ae099b107900067a503f8c454036f" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -614,7 +614,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tower", "tracing", @@ -629,7 +629,7 @@ checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde_json", "tower", "tracing", @@ -664,8 +664,8 @@ dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http 1.1.0", - "rustls 0.23.14", + "http 1.3.1", + "rustls 0.23.34", "serde_json", "tokio", "tokio-tungstenite 0.23.1", @@ -673,12 +673,6 @@ dependencies = [ "ws_stream_wasm", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -690,9 +684,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -705,43 +699,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "ark-ec" @@ -795,6 +790,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.3.0" @@ -814,6 +829,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-ff-macros" version = "0.3.0" @@ -838,6 +863,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-poly" version = "0.3.0" @@ -872,6 +910,18 @@ dependencies = [ "num-bigint", ] +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + [[package]] name = "ark-serialize-derive" version = "0.3.0" @@ -889,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", "rayon", ] @@ -900,7 +950,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", ] [[package]] @@ -915,12 +975,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - [[package]] name = "ascii-canvas" version = "3.0.0" @@ -960,18 +1014,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -994,28 +1048,34 @@ dependencies = [ "critical-section", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -1023,7 +1083,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1052,9 +1112,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bcs" @@ -1063,7 +1123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b6598a2f5d564fb7855dc6b06fd1c38cff5a72bd8b863a4d021938497b440a" dependencies = [ "serde", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1112,7 +1172,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -1121,6 +1190,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -1129,9 +1204,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitvec" @@ -1156,9 +1231,9 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", @@ -1167,9 +1242,9 @@ dependencies = [ [[package]] name = "blake2s_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" +checksum = "e90f7deecfac93095eb874a40febd69427776e24e1bd7f87f33ac62d6f0174df" dependencies = [ "arrayref", "arrayvec", @@ -1178,9 +1253,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -1209,9 +1284,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.13" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -1234,21 +1309,21 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ - "sha2 0.10.8", + "sha2 0.10.9", "tinyvec", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "byteorder" @@ -1258,9 +1333,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -1277,12 +1352,11 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -1303,18 +1377,18 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.9" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -1327,18 +1401,19 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "cc" -version = "1.1.28" +version = "1.2.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -1346,23 +1421,22 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1404,9 +1478,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -1414,9 +1488,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -1426,27 +1500,30 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cobs" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.17", +] [[package]] name = "coins-bip32" @@ -1460,8 +1537,8 @@ dependencies = [ "hmac", "k256", "serde", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -1475,9 +1552,9 @@ dependencies = [ "hmac", "once_cell", "pbkdf2 0.12.2", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -1495,28 +1572,25 @@ dependencies = [ "ripemd", "serde", "serde_derive", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "combine" -version = "3.8.1" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "ascii", - "byteorder", - "either", + "bytes", "memchr", - "unreachable", ] [[package]] @@ -1543,15 +1617,14 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.13.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -1560,6 +1633,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -1605,33 +1698,33 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "critical-section" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1648,15 +1741,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -1665,7 +1758,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1701,12 +1794,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1725,16 +1818,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -1750,13 +1843,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.20.10", + "darling_core 0.21.3", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -1770,20 +1863,20 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.12", ] [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -1791,12 +1884,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -1812,15 +1905,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -1829,7 +1922,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -1840,7 +1942,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", "unicode-xid", ] @@ -1853,7 +1967,7 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -1926,6 +2040,17 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d102f1a462fdcdddce88d6d46c06c074a2d2749b262230333726b06c52bb7585" +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "doctest-file" version = "1.0.0" @@ -1944,6 +2069,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "ecdsa" version = "0.16.9" @@ -1958,11 +2089,23 @@ dependencies = [ "spki", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -1977,7 +2120,7 @@ dependencies = [ "generic-array", "group", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -2012,9 +2155,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2030,13 +2173,33 @@ dependencies = [ "hex", "k256", "log", - "rand", + "rand 0.8.5", "rlp", "serde", "sha3", "zeroize", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "enum_dispatch" version = "0.3.13" @@ -2046,14 +2209,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -2061,31 +2224,31 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2100,13 +2263,13 @@ dependencies = [ "hex", "hmac", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid 0.8.2", ] @@ -2123,7 +2286,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -2202,7 +2365,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2224,8 +2387,8 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.79", - "toml 0.8.19", + "syn 2.0.108", + "toml 0.8.23", "walkdir", ] @@ -2242,7 +2405,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -2263,14 +2426,14 @@ dependencies = [ "num_enum", "once_cell", "open-fastrlp", - "rand", + "rand 0.8.5", "rlp", "serde", "serde_json", "strum 0.26.3", - "syn 2.0.79", + "syn 2.0.108", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -2284,10 +2447,10 @@ dependencies = [ "chrono", "ethers-core", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -2311,7 +2474,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -2344,7 +2507,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite 0.20.1", "tracing", @@ -2369,9 +2532,9 @@ dependencies = [ "elliptic-curve", "eth-keystore", "ethers-core", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", "tracing", ] @@ -2394,12 +2557,12 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", "solang-parser", "svm-rs", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "tokio", "tracing", @@ -2425,9 +2588,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fastrlp" @@ -2440,16 +2603,33 @@ dependencies = [ "bytes", ] +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -2457,7 +2637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -2470,9 +2650,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -2486,9 +2666,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -2507,9 +2687,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -2596,7 +2776,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -2656,9 +2836,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -2667,9 +2847,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", @@ -2678,17 +2858,29 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gloo-timers" @@ -2713,12 +2905,12 @@ dependencies = [ [[package]] name = "graphql-parser" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" +checksum = "7a818c0d883d7c0801df27be910917750932be279c7bc82dc541b8769425f409" dependencies = [ "combine", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2768,7 +2960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2779,14 +2971,14 @@ source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b9 dependencies = [ "ark-ec", "ark-ff 0.3.0", - "rand", + "rand 0.8.5", ] [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -2794,7 +2986,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -2803,12 +2995,13 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", ] [[package]] @@ -2841,16 +3034,16 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "allocator-api2", "serde", ] [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -2858,6 +3051,12 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "hashers" version = "1.0.1" @@ -2895,9 +3094,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -2908,12 +3107,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hmac" version = "0.12.1" @@ -2925,11 +3118,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2945,9 +3138,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -2972,27 +3165,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -3000,17 +3193,11 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -3023,7 +3210,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -3032,18 +3219,20 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -3057,7 +3246,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.32", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -3070,7 +3259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -3084,7 +3273,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.7.0", "hyper-util", "native-tls", "tokio", @@ -3094,18 +3283,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.7.0", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -3113,14 +3307,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -3134,6 +3329,87 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -3142,12 +3418,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -3179,20 +3466,20 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] name = "indenter" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" @@ -3207,20 +3494,21 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] @@ -3236,9 +3524,9 @@ dependencies = [ [[package]] name = "interprocess" -version = "2.2.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f4e4a06d42fab3e85ab1b419ad32b09eab58b901d40c57935ff92db3287a13" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" dependencies = [ "doctest-file", "futures-core", @@ -3251,15 +3539,25 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -3290,25 +3588,51 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -3336,7 +3660,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", - "sha2 0.10.8", + "sha2 0.10.9", "signature", ] @@ -3382,15 +3706,15 @@ dependencies = [ "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", "poly-commitment", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "rmp-serde", "serde", "serde_with 1.14.0", "strum 0.24.1", "strum_macros 0.24.3", - "thiserror", + "thiserror 1.0.69", "turshi", ] @@ -3401,7 +3725,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", - "bit-set", + "bit-set 0.5.3", "ena", "itertools 0.11.0", "lalrpop-util", @@ -3431,7 +3755,7 @@ source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa dependencies = [ "lambdaworks-math", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", ] @@ -3452,67 +3776,72 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "libc", ] [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "5e3283ed2d0e50c06dd8602e0ab319bb048b6325d0bba739db64ed8205179898" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "e5cec0ec4228b4853bb129c84dbf093a27e6c7a20526da046defc334a1b017f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.22" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru" @@ -3520,7 +3849,18 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.0", + "hashbrown 0.15.5", +] + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -3541,9 +3881,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "mime" @@ -3576,7 +3916,7 @@ dependencies = [ [[package]] name = "mina-p2p-messages" version = "0.6.4" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "ark-ff 0.3.0", "base64 0.13.1", @@ -3584,7 +3924,7 @@ dependencies = [ "binprot_derive", "blake2", "bs58 0.4.0", - "derive_more 0.99.18", + "derive_more 0.99.20", "hex", "mina-curves", "mina-hasher", @@ -3594,8 +3934,8 @@ dependencies = [ "rsexp", "serde", "serde_json", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", "time", ] @@ -3610,7 +3950,7 @@ dependencies = [ "mina-curves", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", - "rand", + "rand 0.8.5", "rayon", "serde", "serde_with 1.14.0", @@ -3630,9 +3970,9 @@ dependencies = [ "mina-curves", "mina-hasher", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -3666,7 +4006,7 @@ dependencies = [ [[package]] name = "mina-tree" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "anyhow", "ark-ec", @@ -3680,8 +4020,8 @@ dependencies = [ "bs58 0.4.0", "chrono", "crc32fast", - "derive_more 0.99.18", - "getrandom", + "derive_more 0.99.20", + "getrandom 0.2.16", "hex", "itertools 0.10.5", "kimchi", @@ -3698,18 +4038,18 @@ dependencies = [ "openmina-core", "poly-commitment", "postcard", - "rand", + "rand 0.8.5", "rand_pcg", "rand_seeder", "rayon", "serde", "serde_json", - "serde_with 3.11.0", - "sha2 0.10.8", + "serde_with 3.15.1", + "sha2 0.10.9", "static_assertions", - "thiserror", + "thiserror 1.0.69", "tuple-map", - "uuid 1.10.0", + "uuid 1.18.1", "wasm-bindgen", "wasm_thread", ] @@ -3717,7 +4057,7 @@ dependencies = [ [[package]] name = "mina_bridge_core" version = "0.1.0" -source = "git+https://github.com/lambdaclass/mina_bridge?rev=a4498abb345d68dbb699ff38ef698800879231f8#a4498abb345d68dbb699ff38ef698800879231f8" +source = "git+https://github.com/lambdaclass/mina_bridge?rev=82830aff612217da11502cfaae0f1fc49083b28d#82830aff612217da11502cfaae0f1fc49083b28d" dependencies = [ "aligned-sdk", "alloy", @@ -3751,7 +4091,7 @@ dependencies = [ "rpassword", "serde", "serde_json", - "serde_with 3.11.0", + "serde_with 3.15.1", "sha3", "tokio", "zeroize", @@ -3759,23 +4099,23 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ - "hermit-abi", "libc", "wasi", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3790,7 +4130,7 @@ dependencies = [ "core2", "digest 0.10.7", "multihash-derive", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", "unsigned-varint", ] @@ -3806,14 +4146,14 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -3840,7 +4180,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand", + "rand 0.8.5", "serde", ] @@ -3882,9 +4222,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -3892,23 +4232,24 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -3925,13 +4266,13 @@ dependencies = [ "num-bigint", "num-integer", "num-traits", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", "serde_with 1.14.0", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -3948,29 +4289,35 @@ dependencies = [ "num-bigint", "num-integer", "num-traits", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", - "serde_with 3.11.0", - "sha2 0.10.8", - "thiserror", + "serde_with 3.15.1", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] name = "object" -version = "0.36.5" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "opaque-debug" @@ -4006,7 +4353,7 @@ dependencies = [ [[package]] name = "openmina-core" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "ark-ff 0.3.0", "binprot", @@ -4020,7 +4367,7 @@ dependencies = [ "openmina-macros", "redux", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "slab", "time", "tokio", @@ -4030,20 +4377,20 @@ dependencies = [ [[package]] name = "openmina-macros" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "cfg-if", "foreign-types", "libc", @@ -4060,20 +4407,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", @@ -4089,28 +4436,30 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] @@ -4126,12 +4475,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.12", ] [[package]] @@ -4150,15 +4499,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -4168,7 +4517,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -4193,7 +4542,7 @@ dependencies = [ "digest 0.10.7", "hmac", "password-hash", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -4217,18 +4566,17 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.7.13" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror", "ucd-trie", ] @@ -4239,7 +4587,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.12.0", ] [[package]] @@ -4254,80 +4602,71 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", - "rand", + "phf_shared", + "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared 0.11.2", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -4347,9 +4686,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "poly-commitment" @@ -4367,19 +4706,34 @@ dependencies = [ "mina-poseidon", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", "serde_with 1.14.0", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", ] [[package]] name = "postcard" -version = "1.0.10" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -4388,6 +4742,15 @@ dependencies = [ "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -4396,9 +4759,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] @@ -4411,12 +4774,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -4439,17 +4802,17 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "thiserror", + "thiserror 1.0.69", "toml 0.5.11", ] [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.7", ] [[package]] @@ -4495,31 +4858,30 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "proc-macro2" -version = "1.0.87" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.10.0", "num-traits", - "rand", - "rand_chacha", + "rand 0.9.2", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -4535,13 +4897,19 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.37" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -4555,11 +4923,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -4567,7 +4945,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -4576,7 +4964,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", ] [[package]] @@ -4585,7 +4982,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -4594,23 +4991,23 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core", + "rand_core 0.9.3", ] [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -4618,9 +5015,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -4643,11 +5040,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", ] [[package]] @@ -4656,9 +5053,9 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4673,11 +5070,31 @@ dependencies = [ "wasm-timer", ] +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "regex" -version = "1.11.0" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -4687,9 +5104,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -4698,9 +5115,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "reqwest" @@ -4716,7 +5133,7 @@ dependencies = [ "h2", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.32", "hyper-rustls", "hyper-tls 0.5.0", "ipnet", @@ -4728,7 +5145,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls 0.21.12", - "rustls-pemfile 1.0.4", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", @@ -4748,41 +5165,38 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", "futures-core", - "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.7.0", "hyper-tls 0.6.0", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.2.0", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-registry", ] [[package]] @@ -4812,15 +5226,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -4880,13 +5293,13 @@ dependencies = [ [[package]] name = "rpassword" -version = "7.3.1" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -4897,34 +5310,38 @@ checksum = "c3df9a9b6491d42c0fc527e92a87525c17e45c6b9c22345702a6dc0400320bf1" [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "ruint" -version = "1.12.3" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "bytes", - "fastrlp", + "fastrlp 0.3.1", + "fastrlp 0.4.0", "num-bigint", + "num-integer", "num-traits", "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", + "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -4937,15 +5354,15 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -4968,20 +5385,20 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.27", ] [[package]] name = "rustix" -version = "0.38.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4991,21 +5408,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring 0.17.14", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.23.14" +version = "0.23.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" +checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" dependencies = [ "once_cell", - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -5020,52 +5437,46 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "rustls-pki-types" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ - "rustls-pki-types", + "zeroize", ] -[[package]] -name = "rustls-pki-types" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" - [[package]] name = "rustls-webpki" version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -5075,9 +5486,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -5099,40 +5510,64 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", - "derive_more 0.99.18", + "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", ] [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" @@ -5145,7 +5580,7 @@ dependencies = [ "hmac", "pbkdf2 0.11.0", "salsa20", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -5154,7 +5589,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] @@ -5178,7 +5613,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "core-foundation", "core-foundation-sys", "libc", @@ -5187,9 +5622,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -5206,18 +5641,19 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "semver-parser" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" dependencies = [ "pest", ] @@ -5236,52 +5672,63 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -5310,19 +5757,20 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.6.0", - "serde", - "serde_derive", + "indexmap 2.12.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde_core", "serde_json", - "serde_with_macros 3.11.0", + "serde_with_macros 3.15.1", "time", ] @@ -5340,14 +5788,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ - "darling 0.20.10", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5376,9 +5824,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -5424,53 +5872,68 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 2.0.17", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" dependencies = [ - "autocfg", "serde", ] [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "solang-parser" version = "0.3.3" @@ -5481,7 +5944,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] @@ -5512,9 +5975,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -5524,14 +5987,13 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.3", - "phf_shared 0.10.0", + "parking_lot 0.12.5", + "phf_shared", "precomputed-hash", ] @@ -5562,6 +6024,15 @@ dependencies = [ "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + [[package]] name = "strum_macros" version = "0.24.3" @@ -5585,7 +6056,19 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.108", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -5605,11 +6088,11 @@ dependencies = [ "hex", "once_cell", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", "url", "zip", ] @@ -5627,9 +6110,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" dependencies = [ "proc-macro2", "quote", @@ -5638,14 +6121,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20e7b52ad118b2153644eea95c6fc740b6c1555b2344fdab763fc9de4075f665" +checksum = "ab4e6eed052a117409a1a744c8bda9c3ea6934597cf7419f791cb7d590871c4c" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5656,9 +6139,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -5675,6 +6158,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5704,15 +6198,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5728,22 +6222,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5757,9 +6271,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -5772,15 +6286,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -5795,11 +6309,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -5812,29 +6336,28 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", "libc", "mio", "pin-project-lite", - "socket2", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5859,20 +6382,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.14", - "rustls-pki-types", + "rustls 0.23.34", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -5904,20 +6426,20 @@ dependencies = [ "futures-util", "log", "native-tls", - "rustls 0.23.14", + "rustls 0.23.34", "rustls-pki-types", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.4", "tungstenite 0.23.0", - "webpki-roots 0.26.6", + "webpki-roots 0.26.11", ] [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -5937,48 +6459,104 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.12.0", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.12.0", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.10.0", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower", "tower-layer", "tower-service", ] @@ -5997,9 +6575,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -6008,20 +6586,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -6054,10 +6632,10 @@ dependencies = [ "http 0.2.12", "httparse", "log", - "rand", + "rand 0.8.5", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -6071,15 +6649,15 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.3.1", "httparse", "log", "native-tls", - "rand", - "rustls 0.23.14", + "rand 0.8.5", + "rustls 0.23.34", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -6101,9 +6679,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -6129,32 +6707,17 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -6162,15 +6725,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - [[package]] name = "unsigned-varint" version = "0.7.2" @@ -6191,13 +6745,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -6206,6 +6761,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -6218,24 +6779,26 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.16", "serde", ] [[package]] name = "uuid" -version = "1.10.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom", + "getrandom 0.3.4", + "js-sys", + "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -6249,17 +6812,11 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -6285,53 +6842,50 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasm-bindgen" -version = "0.2.95" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.95" +name = "wasm-bindgen" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "bumpalo", - "log", + "cfg-if", "once_cell", - "proc-macro2", - "quote", - "syn 2.0.79", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6339,22 +6893,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.79", - "wasm-bindgen-backend", + "syn 2.0.108", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-timer" @@ -6385,9 +6942,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -6401,18 +6958,27 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.3", +] + +[[package]] +name = "webpki-roots" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] [[package]] name = "widestring" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -6432,11 +6998,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6447,41 +7013,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-implement" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "proc-macro2", + "quote", + "syn 2.0.108", ] +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -6511,6 +7097,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -6535,13 +7139,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6554,6 +7175,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -6566,6 +7193,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -6578,12 +7211,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -6596,6 +7241,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -6608,6 +7259,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -6620,6 +7277,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -6632,11 +7295,17 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -6651,11 +7320,23 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + [[package]] name = "ws_stream_wasm" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" dependencies = [ "async_io_stream", "futures", @@ -6664,7 +7345,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper 0.6.0", - "thiserror", + "thiserror 2.0.17", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -6685,32 +7366,75 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure 0.13.2", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", + "synstructure 0.13.2", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -6723,7 +7447,40 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -6767,9 +7524,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/operator/mina/lib/Cargo.toml b/operator/mina/lib/Cargo.toml index 8eba2e51ad..0999982ae8 100644 --- a/operator/mina/lib/Cargo.toml +++ b/operator/mina/lib/Cargo.toml @@ -22,14 +22,14 @@ serde = "1.0.197" rmp-serde = "1.1.2" serde_json = "1.0.118" hex = "0.4.3" -mina-tree = { git = "https://github.com/lambdaclass/openmina/", rev = "711c99f92ca3241dfbe8ae6d257b333e63abe643" } -mina-p2p-messages = { git = "https://github.com/lambdaclass/openmina/", rev = "711c99f92ca3241dfbe8ae6d257b333e63abe643" } +mina-tree = { git = "https://github.com/lambdaclass/openmina/", rev = "97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" } +mina-p2p-messages = { git = "https://github.com/lambdaclass/openmina/", rev = "97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" } base64 = "0.22.1" bs58 = "0.5.1" lazy_static = "1.5.0" blake2 = "0.10.6" once_cell = "1.19.0" -mina_bridge_core = { git = "https://github.com/lambdaclass/mina_bridge", rev = "a4498abb345d68dbb699ff38ef698800879231f8" } +mina_bridge_core = { git = "https://github.com/lambdaclass/mina_bridge", rev = "82830aff612217da11502cfaae0f1fc49083b28d" } bincode = "1.3.3" log = "0.4.21" diff --git a/operator/mina/mina.go b/operator/mina/mina.go index ac46c75b11..9e6249a228 100644 --- a/operator/mina/mina.go +++ b/operator/mina/mina.go @@ -24,7 +24,7 @@ func VerifyMinaState(proofBuffer []byte, pubInputBuffer []byte) (isVerified bool defer func() { rec := recover() if rec != nil { - err = fmt.Errorf("Panic was caught while verifying sp1 proof: %s", rec) + err = fmt.Errorf("panic was caught while verifying sp1 proof: %s", rec) } }() @@ -34,7 +34,7 @@ func VerifyMinaState(proofBuffer []byte, pubInputBuffer []byte) (isVerified bool r := (C.int32_t)(C.verify_mina_state_ffi(proofPtr, (C.uint32_t)(len(proofBuffer)), pubInputPtr, (C.uint32_t)(len(pubInputBuffer)))) if r == -1 { - err = fmt.Errorf("Panic happened on FFI while verifying Mina proof") + err = fmt.Errorf("panic happened on FFI while verifying Mina proof") return isVerified, err } diff --git a/operator/mina_account/lib/Cargo.lock b/operator/mina_account/lib/Cargo.lock index a7a6b8feb9..053c88e93b 100644 --- a/operator/mina_account/lib/Cargo.lock +++ b/operator/mina_account/lib/Cargo.lock @@ -14,18 +14,18 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -44,16 +44,16 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.16", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -63,9 +63,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -73,7 +73,7 @@ dependencies = [ [[package]] name = "aligned-sdk" version = "0.1.0" -source = "git+https://github.com/lambdaclass/aligned_layer.git?rev=cebeee7b86de0fcd3fd6f97bcd8a1096d7708bc5#cebeee7b86de0fcd3fd6f97bcd8a1096d7708bc5" +source = "git+https://github.com/lambdaclass/aligned_layer.git?rev=220546afa12c035a508529224f5148cd6af4ca78#220546afa12c035a508529224f5148cd6af4ca78" dependencies = [ "ciborium", "dialoguer", @@ -93,9 +93,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" @@ -124,13 +124,13 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.37" +version = "0.1.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54e2fbc026948a0f638bf6a94fc0ce6e44652280fed40bb0dd970e3357bc5f2" +checksum = "28e2652684758b0d9b389d248b209ed9fd9989ef489a550265fe4bb8454fe7eb" dependencies = [ "alloy-primitives", "num_enum", - "strum 0.26.3", + "strum 0.27.2", ] [[package]] @@ -165,14 +165,14 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "alloy-core" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb750349efda145ca6aada68d0336067f7f364d7d44ef09e2cf000b040c5e99" +checksum = "05f1ab91967646311bb7dd32db4fee380c69fe624319dcd176b89fb2a420c6b5" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -183,9 +183,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95d76a38cae906fd394a5afb0736aaceee5432efe76addfd71048e623e208af" +checksum = "cf69d3061e2e908a4370bda5d8d6529d5080232776975489eec0b49ce971027e" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -236,7 +236,7 @@ dependencies = [ "derive_more 1.0.0", "once_cell", "serde", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -252,9 +252,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c66eec1acdd96b39b995b8f5ee5239bc0c871d62c527ae1ac9fd1d7fecd455" +checksum = "4584e3641181ff073e9d5bec5b3b8f78f9749d9fb108a1cfbc4399a4a139c72a" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -272,7 +272,7 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -294,7 +294,7 @@ dependencies = [ "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -311,25 +311,24 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb848c43f6b06ae3de2e4a67496cbbabd78ae87db0f1248934f15d76192c6a" +checksum = "777d58b30eb9a4db0e5f59bc30e8c2caef877fee7dc8734cf242a51a60f22e05" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more 1.0.0", + "derive_more 2.0.1", "foldhash", - "hashbrown 0.15.0", - "hex-literal", - "indexmap 2.6.0", + "hashbrown 0.15.5", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", "paste", "proptest", - "rand", + "rand 0.8.5", "ruint", "rustc-hash", "serde", @@ -365,10 +364,10 @@ dependencies = [ "futures-utils-wasm", "lru", "pin-project", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "url", @@ -395,9 +394,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -406,13 +405,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -430,7 +429,7 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde", "serde_json", "tokio", @@ -508,7 +507,7 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -525,65 +524,66 @@ dependencies = [ "elliptic-curve", "eth-keystore", "k256", - "rand", - "thiserror", + "rand 0.8.5", + "thiserror 1.0.69", ] [[package]] name = "alloy-sol-macro" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "661c516eb1fa3294cc7f2fb8955b3b609d639c282ac81a4eedb14d3046db503a" +checksum = "e68b32b6fa0d09bb74b4cefe35ccc8269d711c26629bc7cd98a47eeb12fe353f" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecbabb8fc3d75a0c2cea5215be22e7a267e3efde835b0f2a8922f5e3f5d47683" +checksum = "2afe6879ac373e58fd53581636f2cce843998ae0b058ebe1e4f649195e2bd23c" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.6.0", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16517f2af03064485150d89746b8ffdcdbc9b6eeb3d536fb66efd7c2846fbc75" +checksum = "c3ba01aee235a8c699d07e5be97ba215607564e71be72f433665329bec307d28" dependencies = [ "alloy-json-abi", "const-hex", "dunce", "heck 0.5.0", + "macro-string", "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.108", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07ebb0c1674ff8cbb08378d7c2e0e27919d2a2dae07ad3bca26174deda8d389" +checksum = "4c13fc168b97411e04465f03e632f31ef94cad1c7c8951bf799237fd7870d535" dependencies = [ "serde", "winnow", @@ -591,9 +591,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e448d879903624863f608c552d10efb0e0905ddbee98b0049412799911eb062" +checksum = "6e960c4b52508ef2ae1e37cae5058e905e9ae099b107900067a503f8c454036f" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -614,7 +614,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tower", "tracing", @@ -629,7 +629,7 @@ checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest 0.12.8", + "reqwest 0.12.24", "serde_json", "tower", "tracing", @@ -664,8 +664,8 @@ dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http 1.1.0", - "rustls 0.23.14", + "http 1.3.1", + "rustls 0.23.34", "serde_json", "tokio", "tokio-tungstenite 0.23.1", @@ -673,12 +673,6 @@ dependencies = [ "ws_stream_wasm", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -690,9 +684,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -705,43 +699,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "ark-ec" @@ -795,6 +790,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.3.0" @@ -814,6 +829,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-ff-macros" version = "0.3.0" @@ -838,6 +863,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "ark-poly" version = "0.3.0" @@ -872,6 +910,18 @@ dependencies = [ "num-bigint", ] +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + [[package]] name = "ark-serialize-derive" version = "0.3.0" @@ -889,7 +939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", "rayon", ] @@ -900,7 +950,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", ] [[package]] @@ -915,12 +975,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - [[package]] name = "ascii-canvas" version = "3.0.0" @@ -960,18 +1014,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -994,28 +1048,34 @@ dependencies = [ "critical-section", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -1023,7 +1083,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1052,9 +1112,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bcs" @@ -1063,7 +1123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b6598a2f5d564fb7855dc6b06fd1c38cff5a72bd8b863a4d021938497b440a" dependencies = [ "serde", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1112,7 +1172,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -1121,6 +1190,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -1129,9 +1204,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitvec" @@ -1156,9 +1231,9 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", @@ -1167,9 +1242,9 @@ dependencies = [ [[package]] name = "blake2s_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" +checksum = "e90f7deecfac93095eb874a40febd69427776e24e1bd7f87f33ac62d6f0174df" dependencies = [ "arrayref", "arrayvec", @@ -1178,9 +1253,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -1209,9 +1284,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.13" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -1234,21 +1309,21 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ - "sha2 0.10.8", + "sha2 0.10.9", "tinyvec", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "byteorder" @@ -1258,9 +1333,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -1277,12 +1352,11 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -1303,18 +1377,18 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.9" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -1327,18 +1401,19 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "cc" -version = "1.1.28" +version = "1.2.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -1346,23 +1421,22 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1404,9 +1478,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -1414,9 +1488,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -1426,27 +1500,30 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cobs" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.17", +] [[package]] name = "coins-bip32" @@ -1460,8 +1537,8 @@ dependencies = [ "hmac", "k256", "serde", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -1475,9 +1552,9 @@ dependencies = [ "hmac", "once_cell", "pbkdf2 0.12.2", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -1495,28 +1572,25 @@ dependencies = [ "ripemd", "serde", "serde_derive", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "combine" -version = "3.8.1" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "ascii", - "byteorder", - "either", + "bytes", "memchr", - "unreachable", ] [[package]] @@ -1543,15 +1617,14 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.13.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -1560,6 +1633,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -1605,33 +1698,33 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "critical-section" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1648,15 +1741,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -1665,7 +1758,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1701,12 +1794,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1725,16 +1818,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -1750,13 +1843,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.20.10", + "darling_core 0.21.3", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -1770,20 +1863,20 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.12", ] [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -1791,12 +1884,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -1812,15 +1905,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -1829,7 +1922,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -1840,7 +1942,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", "unicode-xid", ] @@ -1853,7 +1967,7 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -1926,6 +2040,17 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d102f1a462fdcdddce88d6d46c06c074a2d2749b262230333726b06c52bb7585" +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "doctest-file" version = "1.0.0" @@ -1944,6 +2069,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "ecdsa" version = "0.16.9" @@ -1958,11 +2089,23 @@ dependencies = [ "spki", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -1977,7 +2120,7 @@ dependencies = [ "generic-array", "group", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -2012,9 +2155,9 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2030,13 +2173,33 @@ dependencies = [ "hex", "k256", "log", - "rand", + "rand 0.8.5", "rlp", "serde", "sha3", "zeroize", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "enum_dispatch" version = "0.3.13" @@ -2046,14 +2209,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "env_filter" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -2061,31 +2224,31 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", "env_filter", - "humantime", + "jiff", "log", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2100,13 +2263,13 @@ dependencies = [ "hex", "hmac", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", - "thiserror", + "thiserror 1.0.69", "uuid 0.8.2", ] @@ -2123,7 +2286,7 @@ dependencies = [ "serde", "serde_json", "sha3", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -2202,7 +2365,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2224,8 +2387,8 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.79", - "toml 0.8.19", + "syn 2.0.108", + "toml 0.8.23", "walkdir", ] @@ -2242,7 +2405,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -2263,14 +2426,14 @@ dependencies = [ "num_enum", "once_cell", "open-fastrlp", - "rand", + "rand 0.8.5", "rlp", "serde", "serde_json", "strum 0.26.3", - "syn 2.0.79", + "syn 2.0.108", "tempfile", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "unicode-xid", ] @@ -2284,10 +2447,10 @@ dependencies = [ "chrono", "ethers-core", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -2311,7 +2474,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -2344,7 +2507,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite 0.20.1", "tracing", @@ -2369,9 +2532,9 @@ dependencies = [ "elliptic-curve", "eth-keystore", "ethers-core", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", "tracing", ] @@ -2394,12 +2557,12 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", "solang-parser", "svm-rs", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", "tokio", "tracing", @@ -2425,9 +2588,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fastrlp" @@ -2440,16 +2603,33 @@ dependencies = [ "bytes", ] +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -2457,7 +2637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -2470,9 +2650,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -2486,9 +2666,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -2507,9 +2687,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -2596,7 +2776,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -2656,9 +2836,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -2667,9 +2847,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", @@ -2678,17 +2858,29 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gloo-timers" @@ -2713,12 +2905,12 @@ dependencies = [ [[package]] name = "graphql-parser" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" +checksum = "7a818c0d883d7c0801df27be910917750932be279c7bc82dc541b8769425f409" dependencies = [ "combine", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2768,7 +2960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2779,14 +2971,14 @@ source = "git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b9 dependencies = [ "ark-ec", "ark-ff 0.3.0", - "rand", + "rand 0.8.5", ] [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -2794,7 +2986,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -2803,12 +2995,13 @@ dependencies = [ [[package]] name = "half" -version = "2.4.1" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", ] [[package]] @@ -2841,16 +3034,16 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "allocator-api2", "serde", ] [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -2858,6 +3051,12 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "hashers" version = "1.0.1" @@ -2895,9 +3094,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -2908,12 +3107,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hmac" version = "0.12.1" @@ -2925,11 +3118,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2945,9 +3138,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -2972,27 +3165,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -3000,17 +3193,11 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -3023,7 +3210,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -3032,18 +3219,20 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -3057,7 +3246,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.32", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -3070,7 +3259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -3084,7 +3273,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.7.0", "hyper-util", "native-tls", "tokio", @@ -3094,18 +3283,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.7.0", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -3113,14 +3307,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -3134,6 +3329,87 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -3142,12 +3418,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -3179,20 +3466,20 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] name = "indenter" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" @@ -3207,20 +3494,21 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] @@ -3236,9 +3524,9 @@ dependencies = [ [[package]] name = "interprocess" -version = "2.2.1" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f4e4a06d42fab3e85ab1b419ad32b09eab58b901d40c57935ff92db3287a13" +checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" dependencies = [ "doctest-file", "futures-core", @@ -3251,15 +3539,25 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -3290,25 +3588,51 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -3336,7 +3660,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", - "sha2 0.10.8", + "sha2 0.10.9", "signature", ] @@ -3382,15 +3706,15 @@ dependencies = [ "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", "poly-commitment", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "rmp-serde", "serde", "serde_with 1.14.0", "strum 0.24.1", "strum_macros 0.24.3", - "thiserror", + "thiserror 1.0.69", "turshi", ] @@ -3401,7 +3725,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" dependencies = [ "ascii-canvas", - "bit-set", + "bit-set 0.5.3", "ena", "itertools 0.11.0", "lalrpop-util", @@ -3431,7 +3755,7 @@ source = "git+https://github.com/lambdaclass/lambdaworks.git?rev=efd46f0b0aea3aa dependencies = [ "lambdaworks-math", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", ] @@ -3452,67 +3776,72 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "libc", ] [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "5e3283ed2d0e50c06dd8602e0ab319bb048b6325d0bba739db64ed8205179898" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "e5cec0ec4228b4853bb129c84dbf093a27e6c7a20526da046defc334a1b017f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.22" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru" @@ -3520,7 +3849,18 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.0", + "hashbrown 0.15.5", +] + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -3541,9 +3881,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "mime" @@ -3606,7 +3946,7 @@ dependencies = [ [[package]] name = "mina-p2p-messages" version = "0.6.4" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "ark-ff 0.3.0", "base64 0.13.1", @@ -3614,7 +3954,7 @@ dependencies = [ "binprot_derive", "blake2", "bs58 0.4.0", - "derive_more 0.99.18", + "derive_more 0.99.20", "hex", "mina-curves", "mina-hasher", @@ -3624,8 +3964,8 @@ dependencies = [ "rsexp", "serde", "serde_json", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", "time", ] @@ -3640,7 +3980,7 @@ dependencies = [ "mina-curves", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", - "rand", + "rand 0.8.5", "rayon", "serde", "serde_with 1.14.0", @@ -3660,15 +4000,15 @@ dependencies = [ "mina-curves", "mina-hasher", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", - "rand", - "sha2 0.10.8", - "thiserror", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] name = "mina-tree" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "anyhow", "ark-ec", @@ -3682,8 +4022,8 @@ dependencies = [ "bs58 0.4.0", "chrono", "crc32fast", - "derive_more 0.99.18", - "getrandom", + "derive_more 0.99.20", + "getrandom 0.2.16", "hex", "itertools 0.10.5", "kimchi", @@ -3700,18 +4040,18 @@ dependencies = [ "openmina-core", "poly-commitment", "postcard", - "rand", + "rand 0.8.5", "rand_pcg", "rand_seeder", "rayon", "serde", "serde_json", - "serde_with 3.11.0", - "sha2 0.10.8", + "serde_with 3.15.1", + "sha2 0.10.9", "static_assertions", - "thiserror", + "thiserror 1.0.69", "tuple-map", - "uuid 1.10.0", + "uuid 1.18.1", "wasm-bindgen", "wasm_thread", ] @@ -3719,7 +4059,7 @@ dependencies = [ [[package]] name = "mina_bridge_core" version = "0.1.0" -source = "git+https://github.com/lambdaclass/mina_bridge?rev=a4498abb345d68dbb699ff38ef698800879231f8#a4498abb345d68dbb699ff38ef698800879231f8" +source = "git+https://github.com/lambdaclass/mina_bridge?rev=82830aff612217da11502cfaae0f1fc49083b28d#82830aff612217da11502cfaae0f1fc49083b28d" dependencies = [ "aligned-sdk", "alloy", @@ -3753,7 +4093,7 @@ dependencies = [ "rpassword", "serde", "serde_json", - "serde_with 3.11.0", + "serde_with 3.15.1", "sha3", "tokio", "zeroize", @@ -3761,23 +4101,23 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ - "hermit-abi", "libc", "wasi", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3792,7 +4132,7 @@ dependencies = [ "core2", "digest 0.10.7", "multihash-derive", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", "unsigned-varint", ] @@ -3808,14 +4148,14 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -3842,7 +4182,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand", + "rand 0.8.5", "serde", ] @@ -3884,9 +4224,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -3894,23 +4234,24 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -3927,13 +4268,13 @@ dependencies = [ "num-bigint", "num-integer", "num-traits", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", "serde_with 1.14.0", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] @@ -3950,29 +4291,35 @@ dependencies = [ "num-bigint", "num-integer", "num-traits", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", - "serde_with 3.11.0", - "sha2 0.10.8", - "thiserror", + "serde_with 3.15.1", + "sha2 0.10.9", + "thiserror 1.0.69", ] [[package]] name = "object" -version = "0.36.5" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "opaque-debug" @@ -4008,7 +4355,7 @@ dependencies = [ [[package]] name = "openmina-core" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "ark-ff 0.3.0", "binprot", @@ -4022,7 +4369,7 @@ dependencies = [ "openmina-macros", "redux", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "slab", "time", "tokio", @@ -4032,20 +4379,20 @@ dependencies = [ [[package]] name = "openmina-macros" version = "0.6.0" -source = "git+https://github.com/lambdaclass/openmina/?rev=711c99f92ca3241dfbe8ae6d257b333e63abe643#711c99f92ca3241dfbe8ae6d257b333e63abe643" +source = "git+https://github.com/lambdaclass/openmina/?rev=97df7ca5e3b631c99c9fa23a9ff8c76b4120504c#97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "cfg-if", "foreign-types", "libc", @@ -4062,20 +4409,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" dependencies = [ "cc", "libc", @@ -4091,28 +4438,30 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] @@ -4128,12 +4477,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.12", ] [[package]] @@ -4152,15 +4501,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -4170,7 +4519,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -4195,7 +4544,7 @@ dependencies = [ "digest 0.10.7", "hmac", "password-hash", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -4219,18 +4568,17 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.7.13" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror", "ucd-trie", ] @@ -4241,7 +4589,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.12.0", ] [[package]] @@ -4256,80 +4604,71 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", - "phf_shared 0.11.2", + "phf_shared", ] [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", - "rand", + "phf_shared", + "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", - "phf_shared 0.11.2", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -4349,9 +4688,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "poly-commitment" @@ -4369,19 +4708,34 @@ dependencies = [ "mina-poseidon", "o1-utils 0.1.0 (git+https://github.com/lambdaclass/openmina-proof-systems?rev=44e0d3b98b8747de54e595f53d97c035ff43167c)", "once_cell", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rayon", "serde", "serde_with 1.14.0", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", ] [[package]] name = "postcard" -version = "1.0.10" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -4390,6 +4744,15 @@ dependencies = [ "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -4398,9 +4761,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] @@ -4413,12 +4776,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -4441,17 +4804,17 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "thiserror", + "thiserror 1.0.69", "toml 0.5.11", ] [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.7", ] [[package]] @@ -4497,31 +4860,30 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "proc-macro2" -version = "1.0.87" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.10.0", "num-traits", - "rand", - "rand_chacha", + "rand 0.9.2", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -4537,13 +4899,19 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.37" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -4557,11 +4925,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -4569,7 +4947,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -4578,7 +4966,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", ] [[package]] @@ -4587,7 +4984,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -4596,23 +4993,23 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core", + "rand_core 0.9.3", ] [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -4620,9 +5017,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -4645,11 +5042,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", ] [[package]] @@ -4658,9 +5055,9 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4675,11 +5072,31 @@ dependencies = [ "wasm-timer", ] +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "regex" -version = "1.11.0" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -4689,9 +5106,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -4700,9 +5117,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "reqwest" @@ -4718,7 +5135,7 @@ dependencies = [ "h2", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.32", "hyper-rustls", "hyper-tls 0.5.0", "ipnet", @@ -4730,7 +5147,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls 0.21.12", - "rustls-pemfile 1.0.4", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", @@ -4750,41 +5167,38 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.8" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", "futures-core", - "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.7.0", "hyper-tls 0.6.0", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.2.0", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-registry", ] [[package]] @@ -4814,15 +5228,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -4882,13 +5295,13 @@ dependencies = [ [[package]] name = "rpassword" -version = "7.3.1" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -4899,34 +5312,38 @@ checksum = "c3df9a9b6491d42c0fc527e92a87525c17e45c6b9c22345702a6dc0400320bf1" [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "ruint" -version = "1.12.3" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "bytes", - "fastrlp", + "fastrlp 0.3.1", + "fastrlp 0.4.0", "num-bigint", + "num-integer", "num-traits", "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", + "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -4939,15 +5356,15 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -4970,20 +5387,20 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.27", ] [[package]] name = "rustix" -version = "0.38.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4993,21 +5410,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring 0.17.14", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.23.14" +version = "0.23.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "415d9944693cb90382053259f89fbb077ea730ad7273047ec63b19bc9b160ba8" +checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" dependencies = [ "once_cell", - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -5022,52 +5439,46 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "rustls-pki-types" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ - "rustls-pki-types", + "zeroize", ] -[[package]] -name = "rustls-pki-types" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" - [[package]] name = "rustls-webpki" version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -5077,9 +5488,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -5101,40 +5512,64 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", - "derive_more 0.99.18", + "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", ] [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.108", ] [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" @@ -5147,7 +5582,7 @@ dependencies = [ "hmac", "pbkdf2 0.11.0", "salsa20", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -5156,7 +5591,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] @@ -5180,7 +5615,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.10.0", "core-foundation", "core-foundation-sys", "libc", @@ -5189,9 +5624,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -5208,18 +5643,19 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "semver-parser" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" dependencies = [ "pest", ] @@ -5238,52 +5674,63 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -5312,19 +5759,20 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.6.0", - "serde", - "serde_derive", + "indexmap 2.12.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde_core", "serde_json", - "serde_with_macros 3.11.0", + "serde_with_macros 3.15.1", "time", ] @@ -5342,14 +5790,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.11.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ - "darling 0.20.10", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5378,9 +5826,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -5426,53 +5874,68 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 2.0.17", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" dependencies = [ - "autocfg", "serde", ] [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "solang-parser" version = "0.3.3" @@ -5483,7 +5946,7 @@ dependencies = [ "lalrpop", "lalrpop-util", "phf", - "thiserror", + "thiserror 1.0.69", "unicode-xid", ] @@ -5514,9 +5977,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -5526,14 +5989,13 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.7" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.3", - "phf_shared 0.10.0", + "parking_lot 0.12.5", + "phf_shared", "precomputed-hash", ] @@ -5564,6 +6026,15 @@ dependencies = [ "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", +] + [[package]] name = "strum_macros" version = "0.24.3" @@ -5587,7 +6058,19 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.108", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -5607,11 +6090,11 @@ dependencies = [ "hex", "once_cell", "reqwest 0.11.27", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "sha2 0.10.8", - "thiserror", + "sha2 0.10.9", + "thiserror 1.0.69", "url", "zip", ] @@ -5629,9 +6112,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" dependencies = [ "proc-macro2", "quote", @@ -5640,14 +6123,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.7" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20e7b52ad118b2153644eea95c6fc740b6c1555b2344fdab763fc9de4075f665" +checksum = "ab4e6eed052a117409a1a744c8bda9c3ea6934597cf7419f791cb7d590871c4c" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5658,9 +6141,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -5677,6 +6160,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -5706,15 +6200,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5730,22 +6224,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5759,9 +6273,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -5774,15 +6288,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -5797,11 +6311,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -5814,29 +6338,28 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", "libc", "mio", "pin-project-lite", - "socket2", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] @@ -5861,20 +6384,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.14", - "rustls-pki-types", + "rustls 0.23.34", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -5906,20 +6428,20 @@ dependencies = [ "futures-util", "log", "native-tls", - "rustls 0.23.14", + "rustls 0.23.34", "rustls-pki-types", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.4", "tungstenite 0.23.0", - "webpki-roots 0.26.6", + "webpki-roots 0.26.11", ] [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -5939,48 +6461,104 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.12.0", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.12.0", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.10.0", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower", "tower-layer", "tower-service", ] @@ -5999,9 +6577,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -6010,20 +6588,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -6056,10 +6634,10 @@ dependencies = [ "http 0.2.12", "httparse", "log", - "rand", + "rand 0.8.5", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] @@ -6073,15 +6651,15 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.3.1", "httparse", "log", "native-tls", - "rand", - "rustls 0.23.14", + "rand 0.8.5", + "rustls 0.23.34", "rustls-pki-types", "sha1", - "thiserror", + "thiserror 1.0.69", "utf-8", ] @@ -6103,9 +6681,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -6131,32 +6709,17 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -6164,15 +6727,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - [[package]] name = "unsigned-varint" version = "0.7.2" @@ -6193,13 +6747,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -6208,6 +6763,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -6220,24 +6781,26 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.16", "serde", ] [[package]] name = "uuid" -version = "1.10.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom", + "getrandom 0.3.4", + "js-sys", + "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -6251,17 +6814,11 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -6287,53 +6844,50 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasm-bindgen" -version = "0.2.95" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.95" +name = "wasm-bindgen" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "bumpalo", - "log", + "cfg-if", "once_cell", - "proc-macro2", - "quote", - "syn 2.0.79", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6341,22 +6895,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.79", - "wasm-bindgen-backend", + "syn 2.0.108", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-timer" @@ -6387,9 +6944,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -6403,18 +6960,27 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.3", +] + +[[package]] +name = "webpki-roots" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] [[package]] name = "widestring" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -6434,11 +7000,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6449,41 +7015,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-implement" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "proc-macro2", + "quote", + "syn 2.0.108", ] +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -6513,6 +7099,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -6537,13 +7141,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6556,6 +7177,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -6568,6 +7195,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -6580,12 +7213,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -6598,6 +7243,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -6610,6 +7261,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -6622,6 +7279,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -6634,11 +7297,17 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -6653,11 +7322,23 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + [[package]] name = "ws_stream_wasm" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" dependencies = [ "async_io_stream", "futures", @@ -6666,7 +7347,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper 0.6.0", - "thiserror", + "thiserror 2.0.17", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -6687,32 +7368,75 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", + "synstructure 0.13.2", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", + "synstructure 0.13.2", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -6725,7 +7449,40 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.108", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.108", ] [[package]] @@ -6769,9 +7526,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/operator/mina_account/lib/Cargo.toml b/operator/mina_account/lib/Cargo.toml index ade5e887f6..ea4c7674af 100644 --- a/operator/mina_account/lib/Cargo.toml +++ b/operator/mina_account/lib/Cargo.toml @@ -19,15 +19,15 @@ serde = "1.0.197" rmp-serde = "1.1.2" serde_json = "1.0.118" hex = "0.4.3" -mina-tree = { git = "https://github.com/lambdaclass/openmina/", rev = "711c99f92ca3241dfbe8ae6d257b333e63abe643" } -mina-p2p-messages = { git = "https://github.com/lambdaclass/openmina/", rev = "711c99f92ca3241dfbe8ae6d257b333e63abe643" } +mina-tree = { git = "https://github.com/lambdaclass/openmina/", rev = "97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" } +mina-p2p-messages = { git = "https://github.com/lambdaclass/openmina/", rev = "97df7ca5e3b631c99c9fa23a9ff8c76b4120504c" } base64 = "0.22.1" bs58 = "0.5.1" lazy_static = "1.5.0" blake2 = "0.10.6" once_cell = "1.19.0" sha3 = "0.10.8" -mina_bridge_core = { git = "https://github.com/lambdaclass/mina_bridge", rev = "a4498abb345d68dbb699ff38ef698800879231f8" } +mina_bridge_core = { git = "https://github.com/lambdaclass/mina_bridge", rev = "82830aff612217da11502cfaae0f1fc49083b28d" } bincode = "1.3.3" alloy = { version = "0.3.3", features = ["full"] } log = "0.4.21" diff --git a/operator/mina_account/mina_account.go b/operator/mina_account/mina_account.go index d994d563a8..99dde62ee7 100644 --- a/operator/mina_account/mina_account.go +++ b/operator/mina_account/mina_account.go @@ -24,7 +24,7 @@ func VerifyAccountInclusion(proofBuffer []byte, pubInputBuffer []byte) (isVerifi defer func() { rec := recover() if rec != nil { - err = fmt.Errorf("Panic was caught while verifying sp1 proof: %s", rec) + err = fmt.Errorf("panic was caught while verifying sp1 proof: %s", rec) } }() @@ -33,7 +33,7 @@ func VerifyAccountInclusion(proofBuffer []byte, pubInputBuffer []byte) (isVerifi r := (C.int32_t)(C.verify_account_inclusion_ffi(proofPtr, (C.uint32_t)(len(proofBuffer)), pubInputPtr, (C.uint32_t)(len(pubInputBuffer)))) if r == -1 { - err = fmt.Errorf("Panic happened on FFI while verifying Mina account proof") + err = fmt.Errorf("panic happened on FFI while verifying Mina account proof") return isVerified, err } diff --git a/operator/pkg/operator.go b/operator/pkg/operator.go index 319965e80d..af2b804aa2 100644 --- a/operator/pkg/operator.go +++ b/operator/pkg/operator.go @@ -11,9 +11,13 @@ import ( "net/http" "os" "path/filepath" + "runtime" "sync" "time" + rapidsnark_types "github.com/iden3/go-rapidsnark/types" + rapidsnark_verifier "github.com/iden3/go-rapidsnark/verifier" + "github.com/ethereum/go-ethereum/crypto" "github.com/urfave/cli/v2" "github.com/yetanotherco/aligned_layer/operator/mina" @@ -51,7 +55,6 @@ type Operator struct { OperatorId eigentypes.OperatorId avsSubscriber chainio.AvsSubscriber avsReader chainio.AvsReader - NewTaskCreatedChanV2 chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2 NewTaskCreatedChanV3 chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3 Logger logging.Logger aggRpcClient AggregatorRpcClient @@ -64,8 +67,10 @@ type Operator struct { } const ( - BatchDownloadTimeout = 1 * time.Minute - BatchDownloadMaxRetries = 3 + // This time out will even kill the retries, so it should be enough + // for them to be completed in most cases + BatchDownloadTimeout = 3 * time.Minute + BatchDownloadMaxRetries = 4 BatchDownloadRetryDelay = 5 * time.Second UnverifiedBatchOffset = 100 ) @@ -90,7 +95,6 @@ func NewOperatorFromConfig(configuration config.OperatorConfig) (*Operator, erro if err != nil { log.Fatalf("Could not create AVS subscriber") } - newTaskCreatedChanV2 := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) newTaskCreatedChanV3 := make(chan *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) rpcClient, err := NewAggregatorRpcClient(configuration.Operator.AggregatorServerIpPortAddress, logger) @@ -116,7 +120,6 @@ func NewOperatorFromConfig(configuration config.OperatorConfig) (*Operator, erro avsSubscriber: *avsSubscriber, avsReader: *avsReader, Address: address, - NewTaskCreatedChanV2: newTaskCreatedChanV2, NewTaskCreatedChanV3: newTaskCreatedChanV3, aggRpcClient: *rpcClient, OperatorId: operatorId, @@ -140,12 +143,8 @@ func NewOperatorFromConfig(configuration config.OperatorConfig) (*Operator, erro return operator, nil } -func (o *Operator) SubscribeToNewTasksV2() (chan error, error) { - return o.avsSubscriber.SubscribeToNewTasksV2(o.NewTaskCreatedChanV2) -} - -func (o *Operator) SubscribeToNewTasksV3() (chan error, error) { - return o.avsSubscriber.SubscribeToNewTasksV3(o.NewTaskCreatedChanV3) +func (o *Operator) SubscribeToNewTasksV3(errorPairChan chan chainio.ErrorPair) *chainio.ErrorPair { + return o.avsSubscriber.SubscribeToNewTasksV3(o.NewTaskCreatedChanV3, errorPairChan, o.Config.Operator.PollLatestBatchInterval) } type OperatorLastProcessedBatch struct { @@ -205,13 +204,10 @@ func (o *Operator) UpdateLastProcessBatch(blockNumber uint32) error { } func (o *Operator) Start(ctx context.Context) error { - subV2, err := o.SubscribeToNewTasksV2() - if err != nil { - log.Fatal("Could not subscribe to new tasks") - } - - subV3, err := o.SubscribeToNewTasksV3() - if err != nil { + // create a new channel to foward errors + subV3ErrorChannel := make(chan chainio.ErrorPair) + errorPair := o.SubscribeToNewTasksV3(subV3ErrorChannel) + if errorPair != nil { log.Fatal("Could not subscribe to new tasks") } @@ -231,24 +227,16 @@ func (o *Operator) Start(ctx context.Context) error { return nil case err := <-metricsErrChan: o.Logger.Errorf("Metrics server failed", "err", err) - case err := <-subV2: - o.Logger.Infof("Error in websocket subscription", "err", err) - subV2, err = o.SubscribeToNewTasksV2() - if err != nil { - o.Logger.Fatal("Could not subscribe to new tasks V2") - } - case err := <-subV3: - o.Logger.Infof("Error in websocket subscription", "err", err) - subV3, err = o.SubscribeToNewTasksV3() - if err != nil { + case errorPair := <-subV3ErrorChannel: + o.Logger.Infof("Error in websocket subscription", "err", errorPair) + errorPairPtr := o.SubscribeToNewTasksV3(subV3ErrorChannel) + if errorPairPtr != nil { o.Logger.Fatal("Could not subscribe to new tasks V3") } - case newBatchLogV2 := <-o.NewTaskCreatedChanV2: - go o.handleNewBatchLogV2(newBatchLogV2) case newBatchLogV3 := <-o.NewTaskCreatedChanV3: go o.handleNewBatchLogV3(newBatchLogV3) case blockNumber := <-o.lastProcessedBatch.batchProcessedChan: - err = o.UpdateLastProcessBatch(blockNumber) + err := o.UpdateLastProcessBatch(blockNumber) if err != nil { o.Logger.Errorf("Error while updating last process batch", "err", err) } @@ -295,97 +283,6 @@ func (o *Operator) ProcessMissedBatchesWhileOffline() { o.Logger.Info("Finished verifying all batches missed while offline") } -// Currently, Operator can handle NewBatchV2 and NewBatchV3 events. - -// The difference between these events do not affect the operator -// So if you read below, handleNewBatchLogV2 and handleNewBatchLogV3 -// are identical. - -// This structure may help for future upgrades. Having different logics under -// different events enables the smooth operator upgradeability - -// Process of handling batches from V2 events: -func (o *Operator) handleNewBatchLogV2(newBatchLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) { - var err error - defer func() { o.afterHandlingBatchV2(newBatchLog, err == nil) }() - - o.Logger.Info("Received new batch log V2") - err = o.ProcessNewBatchLogV2(newBatchLog) - if err != nil { - o.Logger.Infof("batch %x did not verify. Err: %v", newBatchLog.BatchMerkleRoot, err) - return - } - - batchIdentifier := append(newBatchLog.BatchMerkleRoot[:], newBatchLog.SenderAddress[:]...) - var batchIdentifierHash = *(*[32]byte)(crypto.Keccak256(batchIdentifier)) - responseSignature := o.SignTaskResponse(batchIdentifierHash) - o.Logger.Debugf("responseSignature about to send: %x", responseSignature) - - signedTaskResponse := types.SignedTaskResponse{ - BatchIdentifierHash: batchIdentifierHash, - BatchMerkleRoot: newBatchLog.BatchMerkleRoot, - SenderAddress: newBatchLog.SenderAddress, - BlsSignature: *responseSignature, - OperatorId: o.OperatorId, - } - o.Logger.Infof("Signed Task Response to send: BatchIdentifierHash=%s, BatchMerkleRoot=%s, SenderAddress=%s", - hex.EncodeToString(signedTaskResponse.BatchIdentifierHash[:]), - hex.EncodeToString(signedTaskResponse.BatchMerkleRoot[:]), - hex.EncodeToString(signedTaskResponse.SenderAddress[:]), - ) - - o.aggRpcClient.SendSignedTaskResponseToAggregator(&signedTaskResponse) -} -func (o *Operator) ProcessNewBatchLogV2(newBatchLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2) error { - - o.Logger.Info("Received new batch with proofs to verify", - "batch merkle root", "0x"+hex.EncodeToString(newBatchLog.BatchMerkleRoot[:]), - "sender address", "0x"+hex.EncodeToString(newBatchLog.SenderAddress[:]), - ) - - ctx, cancel := context.WithTimeout(context.Background(), BatchDownloadTimeout) - defer cancel() - - verificationDataBatch, err := o.getBatchFromDataService(ctx, newBatchLog.BatchDataPointer, newBatchLog.BatchMerkleRoot, BatchDownloadMaxRetries, BatchDownloadRetryDelay) - if err != nil { - o.Logger.Errorf("Could not get proofs from S3 bucket: %v", err) - return err - } - - verificationDataBatchLen := len(verificationDataBatch) - results := make(chan bool, verificationDataBatchLen) - var wg sync.WaitGroup - wg.Add(verificationDataBatchLen) - - disabledVerifiersBitmap, err := o.avsReader.DisabledVerifiers() - if err != nil { - o.Logger.Errorf("Could not check verifiers status: %s", err) - results <- false - return err - } - - for _, verificationData := range verificationDataBatch { - go func(data VerificationData) { - defer wg.Done() - o.verify(data, disabledVerifiersBitmap, results) - o.metrics.IncOperatorTaskResponses() - }(verificationData) - } - - go func() { - wg.Wait() - close(results) - }() - - for result := range results { - if !result { - return fmt.Errorf("invalid proof") - } - } - - return nil -} - // Process of handling batches from V3 events: func (o *Operator) handleNewBatchLogV3(newBatchLog *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3) { var err error @@ -427,7 +324,7 @@ func (o *Operator) ProcessNewBatchLogV3(newBatchLog *servicemanager.ContractAlig ctx, cancel := context.WithTimeout(context.Background(), BatchDownloadTimeout) defer cancel() - verificationDataBatch, err := o.getBatchFromDataService(ctx, newBatchLog.BatchDataPointer, newBatchLog.BatchMerkleRoot, BatchDownloadMaxRetries, BatchDownloadRetryDelay) + verificationDataBatch, err := o.getBatchFromDataServiceWithMultipleURLs(ctx, newBatchLog.BatchDataPointer, newBatchLog.BatchMerkleRoot, BatchDownloadMaxRetries, BatchDownloadRetryDelay) if err != nil { o.Logger.Errorf("Could not get proofs from S3 bucket: %v", err) return err @@ -435,22 +332,37 @@ func (o *Operator) ProcessNewBatchLogV3(newBatchLog *servicemanager.ContractAlig verificationDataBatchLen := len(verificationDataBatch) results := make(chan bool, verificationDataBatchLen) - var wg sync.WaitGroup - wg.Add(verificationDataBatchLen) + jobs := make(chan VerificationData, verificationDataBatchLen) + disabledVerifiersBitmap, err := o.avsReader.DisabledVerifiers() if err != nil { o.Logger.Errorf("Could not check verifiers status: %s", err) results <- false return err } - for _, verificationData := range verificationDataBatch { - go func(data VerificationData) { + + maxWorkers := runtime.NumCPU() - 1 + if maxWorkers < 1 { + maxWorkers = 1 + } + + var wg sync.WaitGroup + for i := 0; i < maxWorkers; i++ { + wg.Add(1) + go func() { defer wg.Done() - o.verify(data, disabledVerifiersBitmap, results) - o.metrics.IncOperatorTaskResponses() - }(verificationData) + for data := range jobs { + o.verify(data, disabledVerifiersBitmap, results) + o.metrics.IncOperatorTaskResponses() + } + }() } + for _, verificationData := range verificationDataBatch { + jobs <- verificationData + } + close(jobs) + go func() { wg.Wait() close(results) @@ -465,12 +377,6 @@ func (o *Operator) ProcessNewBatchLogV3(newBatchLog *servicemanager.ContractAlig return nil } -func (o *Operator) afterHandlingBatchV2(log *servicemanager.ContractAlignedLayerServiceManagerNewBatchV2, succeeded bool) { - if succeeded { - o.lastProcessedBatch.batchProcessedChan <- uint32(log.Raw.BlockNumber) - } -} - func (o *Operator) afterHandlingBatchV3(log *servicemanager.ContractAlignedLayerServiceManagerNewBatchV3, succeeded bool) { if succeeded { o.lastProcessedBatch.batchProcessedChan <- uint32(log.Raw.BlockNumber) @@ -486,25 +392,25 @@ func (o *Operator) verify(verificationData VerificationData, disabledVerifiersBi } switch verificationData.ProvingSystemId { case common.GnarkPlonkBls12_381: - verificationResult := o.verifyPlonkProofBLS12_381(verificationData.Proof, verificationData.PubInput, verificationData.VerificationKey) + verificationResult := o.verifyGnarkPlonkProofBLS12_381(verificationData.Proof, verificationData.PubInput, verificationData.VerificationKey) o.Logger.Infof("PLONK BLS12-381 proof verification result: %t", verificationResult) results <- verificationResult case common.GnarkPlonkBn254: - verificationResult := o.verifyPlonkProofBN254(verificationData.Proof, verificationData.PubInput, verificationData.VerificationKey) + verificationResult := o.verifyGnarkPlonkProofBN254(verificationData.Proof, verificationData.PubInput, verificationData.VerificationKey) o.Logger.Infof("PLONK BN254 proof verification result: %t", verificationResult) results <- verificationResult - case common.Groth16Bn254: - verificationResult := o.verifyGroth16ProofBN254(verificationData.Proof, verificationData.PubInput, verificationData.VerificationKey) + case common.GnarkGroth16Bn254: + verificationResult := o.verifyGnarkGroth16ProofBN254(verificationData.Proof, verificationData.PubInput, verificationData.VerificationKey) o.Logger.Infof("GROTH16 BN254 proof verification result: %t", verificationResult) results <- verificationResult case common.SP1: - verificationResult, err := sp1.VerifySp1Proof(verificationData.Proof, verificationData.VmProgramCode) + verificationResult, err := sp1.VerifySp1Proof(verificationData.Proof, verificationData.PubInput, verificationData.VmProgramCode) o.Logger.Infof("SP1 proof verification result: %t", verificationResult) o.handleVerificationResult(results, verificationResult, err, "SP1 proof verification") @@ -513,15 +419,23 @@ func (o *Operator) verify(verificationData VerificationData, disabledVerifiersBi verificationData.VmProgramCode, verificationData.PubInput) o.Logger.Infof("Risc0 proof verification result: %t", verificationResult) o.handleVerificationResult(results, verificationResult, err, "Risc0 proof verification") - results <- verificationResult + + case common.CircomGroth16Bn256: + verificationResult := o.verifyCircomGroth16Bn256Proof(verificationData.Proof, + verificationData.PubInput, verificationData.VerificationKey) + o.Logger.Infof("Circom Groth16 BN256 proof verification result: %t", verificationResult) + o.handleVerificationResult(results, verificationResult, nil, "Circom Groth16 BN256 proof verification") + case common.Mina: verificationResult, err := mina.VerifyMinaState(verificationData.Proof, verificationData.PubInput) o.Logger.Infof("Mina state proof verification result: %t", verificationResult) o.handleVerificationResult(results, verificationResult, err, "Mina state proof verification") + case common.MinaAccount: verificationResult, err := mina_account.VerifyAccountInclusion(verificationData.Proof, verificationData.PubInput) o.Logger.Infof("Mina account inclusion proof verification result: %t", verificationResult) o.handleVerificationResult(results, verificationResult, err, "Mina account state proof verification") + default: o.Logger.Error("Unrecognized proving system ID") results <- false @@ -538,23 +452,23 @@ func (o *Operator) handleVerificationResult(results chan bool, isVerified bool, } } -// VerifyPlonkProofBLS12_381 verifies a PLONK proof using BLS12-381 curve. -func (o *Operator) verifyPlonkProofBLS12_381(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool { - return o.verifyPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BLS12_381) +// VerifyGnarkPlonkProofBLS12_381 verifies a PLONK proof using BLS12-381 curve. +func (o *Operator) verifyGnarkPlonkProofBLS12_381(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool { + return o.verifyGnarkPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BLS12_381) } -// VerifyPlonkProofBN254 verifies a PLONK proof using BN254 curve. -func (o *Operator) verifyPlonkProofBN254(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool { - return o.verifyPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) +// VerifyGnarkPlonkProofBN254 verifies a PLONK proof using BN254 curve. +func (o *Operator) verifyGnarkPlonkProofBN254(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool { + return o.verifyGnarkPlonkProof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) } -// VerifyGroth16ProofBN254 verifies a GROTH16 proof using BN254 curve. -func (o *Operator) verifyGroth16ProofBN254(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool { - return o.verifyGroth16Proof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) +// VerifyGnarkGroth16ProofBN254 verifies a GROTH16 proof using BN254 curve. +func (o *Operator) verifyGnarkGroth16ProofBN254(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool { + return o.verifyGnarkGroth16Proof(proofBytes, pubInputBytes, verificationKeyBytes, ecc.BN254) } -// verifyPlonkProof contains the common proof verification logic. -func (o *Operator) verifyPlonkProof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte, curve ecc.ID) bool { +// verifyGnarkPlonkProof contains the common proof verification logic. +func (o *Operator) verifyGnarkPlonkProof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte, curve ecc.ID) bool { proofReader := bytes.NewReader(proofBytes) proof := plonk.NewProof(curve) if _, err := proof.ReadFrom(proofReader); err != nil { @@ -584,8 +498,8 @@ func (o *Operator) verifyPlonkProof(proofBytes []byte, pubInputBytes []byte, ver return err == nil } -// verifyGroth16Proof contains the common proof verification logic. -func (o *Operator) verifyGroth16Proof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte, curve ecc.ID) bool { +// verifyGnarkGroth16Proof contains the common proof verification logic. +func (o *Operator) verifyGnarkGroth16Proof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte, curve ecc.ID) bool { proofReader := bytes.NewReader(proofBytes) proof := groth16.NewProof(curve) if _, err := proof.ReadFrom(proofReader); err != nil { @@ -615,6 +529,63 @@ func (o *Operator) verifyGroth16Proof(proofBytes []byte, pubInputBytes []byte, v return err == nil } +// verifyCircomGroth16Bn256Proof verifies a Circom Groth16 proof using BN256 curve. +func (o *Operator) verifyCircomGroth16Bn256Proof(proofBytes []byte, pubInputBytes []byte, verificationKeyBytes []byte) bool { + bytesToBigInts32 := func(b []byte) ([]*big.Int, error) { + if len(b)%32 != 0 { + return nil, fmt.Errorf("invalid length") + } + + inputs := make([]*big.Int, 0, len(b)/32) + for i := 0; i < len(b); i += 32 { + chunk := b[i : i+32] + bi := new(big.Int).SetBytes(chunk) + inputs = append(inputs, bi) + } + return inputs, nil + } + + proofData := &rapidsnark_types.ProofData{} + err := json.Unmarshal(proofBytes, proofData) + if err != nil { + log.Printf("Could not unmarshal proof: %v", err) + return false + } + + parsedProofData, err := rapidsnark_verifier.ParseProofData(*proofData) + if err != nil { + log.Printf("Could not parse proof: %v", err) + return false + } + + var vkStr rapidsnark_verifier.VkJSON + err = json.Unmarshal(verificationKeyBytes, &vkStr) + if err != nil { + log.Printf("Could not unmarshal vk: %v", err) + return false + } + + vk, err := rapidsnark_verifier.ParseVK(vkStr) + if err != nil { + log.Printf("Could not parse vk: %v", err) + return false + } + + inputs, err := bytesToBigInts32(pubInputBytes) + if err != nil { + log.Printf("Could not parse pub inputs: %v", err) + return false + } + + err = rapidsnark_verifier.VerifyRaw(vk, parsedProofData, inputs) + if err != nil { + log.Printf("Could not verify Groth16 proof: %v", err) + return false + } + + return true +} + func (o *Operator) SignTaskResponse(batchIdentifierHash [32]byte) *bls.Signature { responseSignature := *o.Config.BlsConfig.KeyPair.SignMessage(batchIdentifierHash) return &responseSignature diff --git a/operator/pkg/s3.go b/operator/pkg/s3.go index 865115fa7a..317146008a 100644 --- a/operator/pkg/s3.go +++ b/operator/pkg/s3.go @@ -5,12 +5,59 @@ import ( "fmt" "io" "net/http" + "strings" "time" "github.com/ugorji/go/codec" "github.com/yetanotherco/aligned_layer/operator/merkle_tree" ) +const ( + MaxBatchURLs = 5 +) + +// getBatchFromDataServiceWithMultipleURLs tries multiple comma-separated URLs until first successful response +func (o *Operator) getBatchFromDataServiceWithMultipleURLs(ctx context.Context, batchURLs string, expectedMerkleRoot [32]byte, maxRetries int, retryDelay time.Duration) ([]VerificationData, error) { + // Parse comma-separated URLs and limit to max 5 + urls := parseBatchURLs(batchURLs) + o.Logger.Infof("Getting batch from data service with %d URLs: %v", len(urls), urls) + + var errors []string + + // Try each URL until first successful response + for i, batchURL := range urls { + o.Logger.Infof("Trying URL %d of %d: %s", i+1, len(urls), batchURL) + + batch, err := o.getBatchFromDataService(ctx, batchURL, expectedMerkleRoot, maxRetries, retryDelay) + if err != nil { + o.Logger.Warnf("Failed to get batch from URL %s: %v", batchURL, err) + errors = append(errors, fmt.Sprintf("URL %s: %v", batchURL, err)) + } else { + o.Logger.Infof("Successfully retrieved batch from URL: %s", batchURL) + return batch, nil + } + } + + // All URLs failed + return nil, fmt.Errorf("failed to get batch from all URLs, errors: %s", strings.Join(errors, "; ")) +} + +// parseBatchURLs parses comma-separated URLs and limits to max 5 +func parseBatchURLs(batchURLs string) []string { + urls := make([]string, 0) + for _, url := range strings.Split(batchURLs, ",") { + trimmedURL := strings.TrimSpace(url) + if trimmedURL != "" { + urls = append(urls, trimmedURL) + if len(urls) > MaxBatchURLs { + break + } + } + } + + return urls +} + func (o *Operator) getBatchFromDataService(ctx context.Context, batchURL string, expectedMerkleRoot [32]byte, maxRetries int, retryDelay time.Duration) ([]VerificationData, error) { o.Logger.Infof("Getting batch from data service, batchURL: %s", batchURL) @@ -18,6 +65,13 @@ func (o *Operator) getBatchFromDataService(ctx context.Context, batchURL string, var err error var req *http.Request + // Create HTTP client with response header timeout to prevent hanging on silent servers + transport := http.DefaultTransport.(*http.Transport).Clone() + transport.ResponseHeaderTimeout = 15 * time.Second + client := &http.Client{ + Transport: transport, + } + for attempt := 0; attempt < maxRetries; attempt++ { if attempt > 0 { o.Logger.Infof("Waiting for %s before retrying data fetch (attempt %d of %d)", retryDelay, attempt+1, maxRetries) @@ -35,7 +89,7 @@ func (o *Operator) getBatchFromDataService(ctx context.Context, batchURL string, return nil, err } - resp, err = http.DefaultClient.Do(req) + resp, err = client.Do(req) if err == nil && resp.StatusCode == http.StatusOK { break // Successful request, exit retry loop } @@ -92,7 +146,7 @@ func (o *Operator) getBatchFromDataService(ctx context.Context, batchURL string, o.Logger.Infof("Verifying batch merkle tree...") merkle_root_check, err := merkle_tree.VerifyMerkleTreeBatch(batchBytes, expectedMerkleRoot) if err != nil || !merkle_root_check { - return nil, fmt.Errorf("Error while verifying merkle tree batch") + return nil, fmt.Errorf("error while verifying merkle tree batch") } o.Logger.Infof("Batch merkle tree verified") diff --git a/operator/pkg/utils_test.go b/operator/pkg/utils_test.go index 504a712f6f..b1ea03348c 100644 --- a/operator/pkg/utils_test.go +++ b/operator/pkg/utils_test.go @@ -10,7 +10,7 @@ import ( func TestIsVerifierDisabled(t *testing.T) { t.Run("All verifiers are enabled", func(t *testing.T) { disabledVerifiersBitmap := big.NewInt(0) - proving_systems := []common.ProvingSystemId{common.GnarkPlonkBls12_381, common.GnarkPlonkBn254, common.Groth16Bn254, common.SP1, common.Risc0} + proving_systems := []common.ProvingSystemId{common.GnarkPlonkBls12_381, common.GnarkPlonkBn254, common.GnarkGroth16Bn254, common.SP1, common.Risc0} for _, verifierId := range proving_systems { got := IsVerifierDisabled(disabledVerifiersBitmap, verifierId) want := false @@ -24,7 +24,7 @@ func TestIsVerifierDisabled(t *testing.T) { t.Run("All verifiers are disabled", func(t *testing.T) { // This is the bitmap for all verifiers disabled since it is 11111 in binary. disabledVerifiersBitmap := big.NewInt(31) - proving_systems := []common.ProvingSystemId{common.GnarkPlonkBls12_381, common.GnarkPlonkBn254, common.Groth16Bn254, common.SP1, common.Risc0} + proving_systems := []common.ProvingSystemId{common.GnarkPlonkBls12_381, common.GnarkPlonkBn254, common.GnarkGroth16Bn254, common.SP1, common.Risc0} for _, verifierId := range proving_systems { got := IsVerifierDisabled(disabledVerifiersBitmap, verifierId) want := true @@ -38,7 +38,7 @@ func TestIsVerifierDisabled(t *testing.T) { t.Run("Some verifiers are disabled", func(t *testing.T) { // This is the bitmap for the first and last verifiers disabled since it is 10001 in binary. disabledVerifiersBitmap := big.NewInt(17) - proving_systems := []common.ProvingSystemId{common.GnarkPlonkBls12_381, common.GnarkPlonkBn254, common.Groth16Bn254, common.SP1, common.Risc0} + proving_systems := []common.ProvingSystemId{common.GnarkPlonkBls12_381, common.GnarkPlonkBn254, common.GnarkGroth16Bn254, common.SP1, common.Risc0} for _, verifierId := range proving_systems { got := IsVerifierDisabled(disabledVerifiersBitmap, verifierId) want := verifierId == common.GnarkPlonkBls12_381 || verifierId == common.Risc0 diff --git a/operator/risc_zero/lib/Cargo.lock b/operator/risc_zero/lib/Cargo.lock index 31033f865d..3f9910b27b 100644 --- a/operator/risc_zero/lib/Cargo.lock +++ b/operator/risc_zero/lib/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -38,6 +38,27 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anyhow" version = "1.0.84" @@ -46,21 +67,24 @@ checksum = "18b8795de6d09abb2b178fa5a9e3bb10da935750f33449a132b328b9391b2c6a" [[package]] name = "ark-bn254" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ "ark-ec", "ark-ff", + "ark-r1cs-std", "ark-std", ] [[package]] name = "ark-crypto-primitives" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3a13b34da09176a8baba701233fdffbaa7c1b1192ce031a3da4e55ce1f1a56" +checksum = "1e0c292754729c8a190e50414fd1a37093c786c709899f29c9f7daccecfa855e" dependencies = [ + "ahash", + "ark-crypto-primitives-macros", "ark-ec", "ark-ff", "ark-relations", @@ -70,74 +94,91 @@ dependencies = [ "blake2", "derivative", "digest", + "fnv", + "merlin", "sha2", ] +[[package]] +name = "ark-crypto-primitives-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "ark-ec" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" dependencies = [ + "ahash", "ark-ff", "ark-poly", "ark-serialize", "ark-std", - "derivative", - "hashbrown 0.13.2", - "itertools", + "educe", + "fnv", + "hashbrown 0.15.0", + "itertools 0.13.0", + "num-bigint", + "num-integer", "num-traits", "zeroize", ] [[package]] name = "ark-ff" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" dependencies = [ "ark-ff-asm", "ark-ff-macros", "ark-serialize", "ark-std", - "derivative", + "arrayvec", "digest", - "itertools", + "educe", + "itertools 0.13.0", "num-bigint", "num-traits", "paste", - "rustc_version", "zeroize", ] [[package]] name = "ark-ff-asm" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] name = "ark-ff-macros" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ "num-bigint", "num-traits", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] name = "ark-groth16" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ceafa83848c3e390f1cbf124bc3193b3e639b3f02009e0e290809a501b95fc" +checksum = "88f1d0f3a534bb54188b8dcc104307db6c56cdae574ddc3212aec0625740fc7e" dependencies = [ "ark-crypto-primitives", "ark-ec", @@ -150,22 +191,41 @@ dependencies = [ [[package]] name = "ark-poly" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" dependencies = [ + "ahash", "ark-ff", "ark-serialize", "ark-std", - "derivative", - "hashbrown 0.13.2", + "educe", + "fnv", + "hashbrown 0.15.0", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-relations", + "ark-std", + "educe", + "num-bigint", + "num-integer", + "num-traits", + "tracing", ] [[package]] name = "ark-relations" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00796b6efc05a3f48225e59cb6a2cda78881e7c390872d5786aaf112f31fb4f0" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" dependencies = [ "ark-ff", "ark-std", @@ -175,32 +235,33 @@ dependencies = [ [[package]] name = "ark-serialize" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" dependencies = [ "ark-serialize-derive", "ark-std", + "arrayvec", "digest", "num-bigint", ] [[package]] name = "ark-serialize-derive" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.100", ] [[package]] name = "ark-snark" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d3cc6833a335bb8a600241889ead68ee89a3cf8448081fb7694c0fe503da63" +checksum = "d368e2848c2d4c129ce7679a7d0d2d612b6a274d3ea6a13bad4445d61b381b88" dependencies = [ "ark-ff", "ark-relations", @@ -210,14 +271,26 @@ dependencies = [ [[package]] name = "ark-std" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "autocfg" version = "1.3.0" @@ -245,6 +318,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + [[package]] name = "bincode" version = "1.3.3" @@ -254,6 +333,12 @@ dependencies = [ "serde", ] +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -292,8 +377,8 @@ dependencies = [ [[package]] name = "bonsai-sdk" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "1.4.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "duplicate", "maybe-async", @@ -322,7 +407,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", "syn_derive", ] @@ -334,29 +419,35 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" -version = "1.6.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -381,9 +472,9 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.18.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", @@ -411,6 +502,25 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + [[package]] name = "const-oid" version = "0.9.6" @@ -463,6 +573,62 @@ dependencies = [ "typenum", ] +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.100", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derivative" version = "2.2.0" @@ -474,6 +640,58 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.100", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -488,23 +706,23 @@ dependencies = [ [[package]] name = "dirs" -version = "5.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.48.0", + "windows-sys 0.60.2", ] [[package]] @@ -521,12 +739,31 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "duplicate" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de78e66ac9061e030587b2a2e75cc88f22304913c907b11307bca737141230cb" +checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" dependencies = [ "heck", - "proc-macro-error", + "proc-macro2", + "proc-macro2-diagnostics", +] + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -541,6 +778,47 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -549,9 +827,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", "windows-sys 0.52.0", @@ -559,9 +837,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fnv" @@ -569,6 +847,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.5.0" @@ -587,7 +871,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -635,7 +919,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -685,7 +969,19 @@ checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -696,24 +992,34 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash", -] +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "allocator-api2", + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.0", +] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -829,6 +1135,36 @@ dependencies = [ "tracing", ] +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.5.0" @@ -839,6 +1175,23 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "include_bytes_aligned" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + [[package]] name = "indexmap" version = "2.6.0" @@ -847,6 +1200,7 @@ checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", "hashbrown 0.15.0", + "serde", ] [[package]] @@ -864,6 +1218,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -879,6 +1242,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + [[package]] name = "lazy-regex" version = "3.3.0" @@ -899,20 +1271,23 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "libc" -version = "0.2.153" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libm" @@ -932,9 +1307,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" [[package]] name = "log" @@ -959,7 +1334,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -968,6 +1343,18 @@ version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + [[package]] name = "metal" version = "0.29.0" @@ -1005,10 +1392,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] +[[package]] +name = "no_std_strings" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" + [[package]] name = "num-bigint" version = "0.4.5" @@ -1019,6 +1412,29 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -1028,6 +1444,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1035,6 +1462,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -1047,6 +1475,27 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "objc" version = "0.2.7" @@ -1083,6 +1532,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -1106,7 +1564,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -1121,6 +1579,45 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "postcard" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -1145,7 +1642,6 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", "version_check", ] @@ -1162,13 +1658,40 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.82" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "version_check", + "yansi", +] + +[[package]] +name = "proptest" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +dependencies = [ + "bitflags 2.5.0", + "num-traits", + "rand 0.8.5", + "rand_chacha", + "rand_xorshift", + "unarray", +] + [[package]] name = "prost" version = "0.13.3" @@ -1186,10 +1709,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -1201,6 +1724,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "rand" version = "0.8.5" @@ -1208,7 +1737,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "rand_chacha", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_core 0.9.3", ] [[package]] @@ -1218,7 +1756,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1226,18 +1764,56 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.14", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] [[package]] name = "redox_users" -version = "0.4.6" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom", + "getrandom 0.2.14", "libredox", "thiserror", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "regex" version = "1.11.1" @@ -1319,7 +1895,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.14", "libc", "spin", "untrusted", @@ -1328,40 +1904,67 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "borsh", + "bytemuck", + "derive_more", "elf", + "lazy_static", + "postcard", + "rand 0.9.2", "risc0-zkp", "risc0-zkvm-platform", + "ruint", + "semver", "serde", "tracing", ] [[package]] name = "risc0-build" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "cargo_metadata", + "derive_builder", "dirs", "docker-generate", "hex", "risc0-binfmt", + "risc0-zkos-v1compat", "risc0-zkp", "risc0-zkvm-platform", + "rzup", + "semver", "serde", "serde_json", + "stability", "tempfile", ] +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-zkp", + "tracing", +] + [[package]] name = "risc0-circuit-recursion" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "bytemuck", @@ -1374,36 +1977,39 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "4.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", - "metal", + "bit-vec", + "bytemuck", + "derive_more", + "paste", "risc0-binfmt", "risc0-core", "risc0-zkp", - "risc0-zkvm-platform", "serde", "tracing", ] [[package]] name = "risc0-core" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", - "rand_core", + "rand_core 0.9.3", ] [[package]] name = "risc0-groth16" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "ark-bn254", "ark-ec", + "ark-ff", "ark-groth16", "ark-serialize", "bytemuck", @@ -1415,10 +2021,20 @@ dependencies = [ "serde", ] +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform", +] + [[package]] name = "risc0-zkp" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.2" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "blake2", @@ -1430,18 +2046,19 @@ dependencies = [ "hex-literal", "metal", "paste", - "rand_core", + "rand_core 0.9.3", "risc0-core", "risc0-zkvm-platform", "serde", "sha2", + "stability", "tracing", ] [[package]] name = "risc0-zkvm" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "anyhow", "bincode", @@ -1449,19 +2066,22 @@ dependencies = [ "borsh", "bytemuck", "bytes", - "getrandom", + "derive_more", "hex", "lazy-regex", "prost", "risc0-binfmt", "risc0-build", + "risc0-circuit-keccak", "risc0-circuit-recursion", "risc0-circuit-rv32im", "risc0-core", "risc0-groth16", + "risc0-zkos-v1compat", "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", + "rzup", "semver", "serde", "sha2", @@ -1472,12 +2092,16 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "1.1.2" -source = "git+https://github.com/risc0/risc0?tag=v1.1.2#2ba504fddd84376235d335ec4db6b2353d967fc9" +version = "2.2.0" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" dependencies = [ "bytemuck", - "getrandom", + "cfg-if", + "getrandom 0.2.14", + "getrandom 0.3.2", "libm", + "num_enum", + "paste", "stability", ] @@ -1502,25 +2126,58 @@ dependencies = [ ] [[package]] -name = "rustc-demangle" -version = "0.1.24" +name = "rsa" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "signature", + "spki", + "subtle", + "zeroize", +] [[package]] -name = "rustc_version" -version = "0.4.0" +name = "ruint" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" dependencies = [ - "semver", + "borsh", + "proptest", + "rand 0.8.5", + "rand 0.9.2", + "ruint-macro", + "serde", + "valuable", + "zeroize", ] +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + [[package]] name = "rustix" -version = "0.38.34" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" dependencies = [ "bitflags 2.5.0", "errno", @@ -1570,12 +2227,60 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "rzup" +version = "0.5.1" +source = "git+https://github.com/risc0/risc0?tag=v3.0.3#14b5d588dd01cf4f7ba804d8bb0a61264e6ae2c6" +dependencies = [ + "hex", + "rsa", + "semver", + "serde", + "serde_with", + "sha2", + "strum", + "tempfile", + "thiserror", + "toml", + "yaml-rust2", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + [[package]] name = "semver" version = "1.0.23" @@ -1587,35 +2292,45 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.202" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.202" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -1628,6 +2343,38 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +dependencies = [ + "base64", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "sha2" version = "0.10.8" @@ -1639,6 +2386,16 @@ dependencies = [ "digest", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + [[package]] name = "slab" version = "0.4.9" @@ -1670,6 +2427,16 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "stability" version = "0.2.1" @@ -1677,7 +2444,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.64", + "syn 2.0.100", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.100", ] [[package]] @@ -1699,9 +2493,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.64" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -1717,7 +2511,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -1728,34 +2522,65 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.2", + "once_cell", "rustix", "windows-sys 0.52.0", ] [[package]] name = "thiserror" -version = "1.0.61" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", +] + +[[package]] +name = "time" +version = "0.3.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", ] [[package]] @@ -1813,19 +2638,36 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + [[package]] name = "toml_datetime" version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap", + "indexmap 2.6.0", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] @@ -1877,7 +2719,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -1911,6 +2753,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -1932,6 +2780,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "untrusted" version = "0.9.0" @@ -1976,6 +2830,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.92" @@ -1997,7 +2860,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", "wasm-bindgen-shared", ] @@ -2031,7 +2894,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2074,6 +2937,65 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -2092,6 +3014,15 @@ dependencies = [ "windows-targets 0.52.5", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -2116,13 +3047,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.5", "windows_aarch64_msvc 0.52.5", "windows_i686_gnu 0.52.5", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.5", "windows_i686_msvc 0.52.5", "windows_x86_64_gnu 0.52.5", "windows_x86_64_gnullvm 0.52.5", "windows_x86_64_msvc 0.52.5", ] +[[package]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -2135,6 +3083,12 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -2147,6 +3101,12 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -2159,12 +3119,24 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -2177,6 +3149,12 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -2189,6 +3167,12 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -2201,6 +3185,12 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -2213,11 +3203,17 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" dependencies = [ "memchr", ] @@ -2232,6 +3228,32 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "yaml-rust2" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "zerocopy" version = "0.7.34" @@ -2249,7 +3271,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] [[package]] @@ -2269,5 +3291,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.100", ] diff --git a/operator/risc_zero/lib/Cargo.toml b/operator/risc_zero/lib/Cargo.toml index e2d905e1cb..520caee997 100644 --- a/operator/risc_zero/lib/Cargo.toml +++ b/operator/risc_zero/lib/Cargo.toml @@ -4,9 +4,9 @@ version = "0.1.0" edition = "2021" [dependencies] -risc0-zkvm = { git = "https://github.com/risc0/risc0", tag="v1.1.2" } +risc0-zkvm = { git = "https://github.com/risc0/risc0", tag="v3.0.3" } bincode = "1.3.3" -lazy_static = "1.4.0" +lazy_static = "1.5.0" log = "0.4.21" [lib] diff --git a/operator/risc_zero/lib/rust-toolchain b/operator/risc_zero/lib/rust-toolchain index 45c8874831..526951c2a6 100644 --- a/operator/risc_zero/lib/rust-toolchain +++ b/operator/risc_zero/lib/rust-toolchain @@ -1,2 +1,3 @@ [toolchain] +channel = "stable" components = ["llvm-tools", "rustc-dev", "rustfmt", "rust-src"] diff --git a/operator/risc_zero/lib/src/lib.rs b/operator/risc_zero/lib/src/lib.rs index d23869cd90..f14649494c 100644 --- a/operator/risc_zero/lib/src/lib.rs +++ b/operator/risc_zero/lib/src/lib.rs @@ -72,12 +72,12 @@ pub extern "C" fn verify_risc_zero_receipt_ffi( mod tests { use super::*; - const RECEIPT: &[u8] = include_bytes!("../../../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.proof"); + const RECEIPT: &[u8] = include_bytes!("../../../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof"); const IMAGE_ID: &[u8] = include_bytes!( - "../../../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id.bin" + "../../../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin" ); const PUBLIC_INPUT: &[u8] = include_bytes!( - "../../../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.pub" + "../../../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub" ); #[test] diff --git a/operator/risc_zero/risc_zero.go b/operator/risc_zero/risc_zero.go index fdc72ea235..65308d675f 100644 --- a/operator/risc_zero/risc_zero.go +++ b/operator/risc_zero/risc_zero.go @@ -25,7 +25,7 @@ func VerifyRiscZeroReceipt(innerReceiptBuffer []byte, imageIdBuffer []byte, publ defer func() { rec := recover() if rec != nil { - err = fmt.Errorf("Panic was caught while verifying risc0 proof: %s", rec) + err = fmt.Errorf("panic was caught while verifying risc0 proof: %s", rec) } }() @@ -42,7 +42,7 @@ func VerifyRiscZeroReceipt(innerReceiptBuffer []byte, imageIdBuffer []byte, publ } if r == -1 { - err = fmt.Errorf("Panic happened on FFI while verifying risc0 proof") + err = fmt.Errorf("panic happened on FFI while verifying risc0 proof") return isVerified, err } diff --git a/operator/risc_zero/risc_zero_test.go b/operator/risc_zero/risc_zero_test.go index d23a30c5bc..7f918de999 100644 --- a/operator/risc_zero/risc_zero_test.go +++ b/operator/risc_zero/risc_zero_test.go @@ -8,17 +8,17 @@ import ( ) func TestFibonacciRiscZeroProofVerifies(t *testing.T) { - innerReceiptBytes, err := os.ReadFile("../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.proof") + innerReceiptBytes, err := os.ReadFile("../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.proof") if err != nil { t.Errorf("could not open proof file: %s", err) } - imageIdBytes, err := os.ReadFile("../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id.bin") + imageIdBytes, err := os.ReadFile("../../scripts/test_files/risc_zero/fibonacci_proof_generator/fibonacci_id_3_0_3.bin") if err != nil { t.Errorf("could not open image id file: %s", err) } - publicInputBytes, err := os.ReadFile("../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci.pub") + publicInputBytes, err := os.ReadFile("../../scripts/test_files/risc_zero/fibonacci_proof_generator/risc_zero_fibonacci_3_0_3.pub") if err != nil { t.Errorf("could not open public input file: %s", err) } diff --git a/operator/sp1/lib/Cargo.lock b/operator/sp1/lib/Cargo.lock index c7c5a2d3bd..3a49068880 100644 --- a/operator/sp1/lib/Cargo.lock +++ b/operator/sp1/lib/Cargo.lock @@ -1,16 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] +version = 4 [[package]] name = "addchain" @@ -38,22 +28,11 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -72,99 +51,44 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy-primitives" -version = "0.7.7" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +checksum = "a326d47106039f38b811057215a92139f46eef7983a4b77b10930a0ea5685b1e" dependencies = [ - "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more 0.99.18", - "hex-literal", + "derive_more 2.0.1", + "hashbrown 0.15.3", + "indexmap 2.9.0", "itoa", "k256", - "keccak-asm", - "proptest", - "rand", + "paste", + "rand 0.9.1", "ruint", "serde", "tiny-keccak", ] [[package]] -name = "alloy-rlp" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" -dependencies = [ - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-sol-macro" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.85", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.85", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "0.7.7" +name = "android-tzdata" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" -dependencies = [ - "const-hex", - "dunce", - "heck", - "proc-macro2", - "quote", - "syn 2.0.85", - "syn-solidity", -] +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" [[package]] -name = "alloy-sol-types" -version = "0.7.7" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "alloy-primitives", - "alloy-sol-macro", - "const-hex", - "serde", + "libc", ] [[package]] @@ -178,9 +102,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.17" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -193,9 +117,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" @@ -217,37 +141,20 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" dependencies = [ "anstyle", + "once_cell_polyfill", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" - -[[package]] -name = "ark-ff" -version = "0.3.0" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint 0.4.6", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "ark-ff" @@ -255,30 +162,20 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", "derivative", - "digest 0.10.7", + "digest", "itertools 0.10.5", "num-bigint 0.4.6", "num-traits", "paste", - "rustc_version 0.4.1", + "rustc_version", "zeroize", ] -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -289,18 +186,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -314,37 +199,17 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - [[package]] name = "ark-serialize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", + "ark-std", + "digest", "num-bigint 0.4.6", ] -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - [[package]] name = "ark-std" version = "0.4.0" @@ -352,7 +217,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -368,25 +233,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "async-trait" -version = "0.1.83" +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] -name = "async_io_stream" -version = "0.3.3" +name = "async-trait" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ - "futures", - "pharos", - "rustc_version 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -395,17 +271,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "auto_impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.85", -] - [[package]] name = "autocfg" version = "1.4.0" @@ -414,18 +279,18 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.7" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", "bytes", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.5.0", + "hyper", "hyper-util", "itoa", "matchit", @@ -438,9 +303,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", - "tower", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -455,23 +320,37 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.16", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", +] + [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -489,18 +368,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -509,15 +376,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bech32" -version = "0.9.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bincode" @@ -534,7 +395,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.6.0", + "bitflags", "cexpr", "clang-sys", "itertools 0.13.0", @@ -545,35 +406,14 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.85", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", + "syn 2.0.101", ] -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bitvec" @@ -593,14 +433,14 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest 0.10.7", + "digest", ] [[package]] name = "blake2b_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", @@ -609,9 +449,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -638,37 +478,27 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pairing", - "rand_core", + "rand_core 0.6.4", "subtle", ] -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2", - "tinyvec", -] - [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" [[package]] name = "byteorder" @@ -678,27 +508,27 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] [[package]] name = "camino" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -711,20 +541,37 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.9.0", + "log", + "proc-macro2", + "quote", "serde", "serde_json", - "thiserror", + "syn 2.0.101", + "tempfile", + "toml", ] [[package]] name = "cc" -version = "1.1.31" +version = "1.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" dependencies = [ - "jobserver", - "libc", "shlex", ] @@ -744,22 +591,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "chrono" -version = "0.4.38" +name = "cfg_aliases" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "num-traits", -] +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] -name = "cipher" -version = "0.4.4" +name = "chrono" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ - "crypto-common", - "inout", + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-link", ] [[package]] @@ -775,9 +621,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" dependencies = [ "clap_builder", "clap_derive", @@ -785,9 +631,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" dependencies = [ "anstream", "anstyle", @@ -797,73 +643,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] name = "clap_lex" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" - -[[package]] -name = "coins-bip32" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" -dependencies = [ - "bs58", - "coins-core", - "digest 0.10.7", - "hmac", - "k256", - "serde", - "sha2", - "thiserror", -] - -[[package]] -name = "coins-bip39" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand", - "sha2", - "thiserror", -] - -[[package]] -name = "coins-core" -version = "0.8.7" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" -dependencies = [ - "base64 0.21.7", - "bech32", - "bs58", - "digest 0.10.7", - "generic-array 0.14.7", - "hex", - "ripemd", - "serde", - "serde_derive", - "sha2", - "sha3", - "thiserror", -] +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" @@ -873,22 +667,22 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", "unicode-width", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "const-hex" -version = "1.13.1" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" dependencies = [ "cfg-if", "cpufeatures", @@ -904,22 +698,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] -name = "constant_time_eq" -version = "0.3.1" +name = "const_format" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] [[package]] -name = "convert_case" -version = "0.4.0" +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "core-foundation" -version = "0.9.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -933,26 +741,35 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] -name = "crossbeam-deque" -version = "0.8.5" +name = "crossbeam-channel" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ - "crossbeam-epoch", "crossbeam-utils", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ @@ -961,15 +778,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -978,7 +795,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -994,38 +811,13 @@ dependencies = [ ] [[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.3" +name = "ctrlc" +version = "3.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +checksum = "46f93780a459b7d656ef7f071fe699c4d3d2cb201c4b24d085b6ddc505276e73" dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.85", + "nix", + "windows-sys 0.59.0", ] [[package]] @@ -1108,19 +900,20 @@ dependencies = [ [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -1138,24 +931,20 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.85", + "derive_more-impl 1.0.0", ] [[package]] name = "derive_more" -version = "1.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" dependencies = [ - "derive_more-impl", + "derive_more-impl 2.0.1", ] [[package]] @@ -1166,16 +955,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] -name = "digest" -version = "0.9.0" +name = "derive_more-impl" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ - "generic-array 0.14.7", + "proc-macro2", + "quote", + "syn 2.0.101", + "unicode-xid", ] [[package]] @@ -1211,6 +1003,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "downcast-rs" version = "1.2.1" @@ -1218,10 +1021,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] -name = "dunce" -version = "1.0.5" +name = "downloader" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest", + "futures", + "rand 0.8.5", + "reqwest", + "thiserror 1.0.69", + "tokio", +] [[package]] name = "ecdsa" @@ -1230,18 +1041,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest 0.10.7", + "digest", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elf" @@ -1257,49 +1069,24 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest 0.10.7", - "ff 0.13.0", + "digest", + "ff 0.13.1", "generic-array 0.14.7", "group 0.13.0", + "pem-rfc7468", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", + "serdect", "subtle", "zeroize", ] [[package]] name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "encoding_rs" -version = "0.8.35" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enr" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" -dependencies = [ - "base64 0.21.7", - "bytes", - "hex", - "k256", - "log", - "rand", - "rlp", - "serde", - "sha3", - "zeroize", -] +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "enum-map" @@ -1319,287 +1106,34 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" dependencies = [ "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "eth-keystore" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand", - "scrypt", - "serde", - "serde_json", - "sha2", - "sha3", - "thiserror", - "uuid", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" -dependencies = [ - "ethers-addressbook", - "ethers-contract", - "ethers-core", - "ethers-middleware", - "ethers-providers", - "ethers-signers", -] - -[[package]] -name = "ethers-addressbook" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" -dependencies = [ - "ethers-core", - "once_cell", - "serde", - "serde_json", -] - -[[package]] -name = "ethers-contract" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" -dependencies = [ - "const-hex", - "ethers-contract-abigen", - "ethers-contract-derive", - "ethers-core", - "ethers-providers", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "ethers-contract-abigen" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "eyre", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "serde", - "serde_json", - "syn 2.0.85", - "toml", - "walkdir", -] - -[[package]] -name = "ethers-contract-derive" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" -dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen", - "ethers-core", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.85", -] - -[[package]] -name = "ethers-core" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" -dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "generic-array 0.14.7", - "k256", - "num_enum 0.7.3", - "once_cell", - "open-fastrlp", - "rand", - "rlp", - "serde", - "serde_json", - "strum", - "syn 2.0.85", - "tempfile", - "thiserror", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "ethers-middleware" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" -dependencies = [ - "async-trait", - "auto_impl", - "ethers-contract", - "ethers-core", - "ethers-providers", - "ethers-signers", - "futures-channel", - "futures-locks", - "futures-util", - "instant", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "tracing-futures", - "url", + "windows-sys 0.59.0", ] [[package]] -name = "ethers-providers" -version = "2.0.14" +name = "eventsource-stream" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" dependencies = [ - "async-trait", - "auto_impl", - "base64 0.21.7", - "bytes", - "const-hex", - "enr", - "ethers-core", "futures-core", - "futures-timer", - "futures-util", - "hashers", - "http 0.2.12", - "instant", - "jsonwebtoken", - "once_cell", - "pin-project", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "tracing-futures", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "ws_stream_wasm", -] - -[[package]] -name = "ethers-signers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" -dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", - "elliptic-curve", - "eth-keystore", - "ethers-core", - "rand", - "sha2", - "thiserror", - "tracing", + "nom", + "pin-project-lite", ] [[package]] @@ -1614,20 +1148,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" - -[[package]] -name = "fastrlp" -version = "0.3.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" @@ -1636,31 +1159,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ "bitvec", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "bitvec", "byteorder", "ff_derive", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "ff_derive" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" dependencies = [ "addchain", - "cfg-if", "num-bigint 0.3.3", "num-integer", "num-traits", @@ -1669,24 +1191,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - [[package]] name = "fnv" version = "1.0.7" @@ -1695,24 +1199,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "form_urlencoded" @@ -1777,16 +1266,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" -[[package]] -name = "futures-locks" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" -dependencies = [ - "futures-channel", - "futures-task", -] - [[package]] name = "futures-macro" version = "0.3.31" @@ -1795,7 +1274,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] @@ -1810,16 +1289,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - [[package]] name = "futures-util" version = "0.3.31" @@ -1838,21 +1307,18 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "gcd" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + [[package]] name = "generic-array" version = "0.14.7" @@ -1876,51 +1342,42 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "git2" -version = "0.19.0" +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "bitflags 2.6.0", + "cfg-if", + "js-sys", "libc", - "libgit2-sys", - "log", - "url", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] -name = "glob" -version = "0.3.1" +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "gloo-timers" -version = "0.2.6" +name = "glob" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "group" @@ -1930,7 +1387,7 @@ checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", "memuse", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1940,43 +1397,24 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", - "rand_core", + "ff 0.13.1", + "rand_core 0.6.4", "subtle", ] [[package]] name = "h2" -version = "0.3.26" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap", + "http", + "indexmap 2.9.0", "slab", "tokio", "tokio-util", @@ -2002,10 +1440,16 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "pasta_curves 0.4.1", - "rand_core", + "rand_core 0.6.4", "rayon", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" @@ -2019,23 +1463,21 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "allocator-api2", "equivalent", "foldhash", + "serde", ] [[package]] -name = "hashers" -version = "1.0.1" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" -dependencies = [ - "fxhash", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "heck" @@ -2045,62 +1487,37 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +dependencies = [ + "serde", +] [[package]] name = "hmac" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" -dependencies = [ - "bytes", - "fnv", - "itoa", +dependencies = [ + "digest", ] [[package]] -name = "http-body" -version = "0.4.6" +name = "http" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", - "http 0.2.12", - "pin-project-lite", + "fnv", + "itoa", ] [[package]] @@ -2110,27 +1527,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "futures-core", + "http", + "http-body", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -2140,40 +1557,16 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", - "http 1.1.0", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -2185,13 +1578,12 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" dependencies = [ - "futures-util", - "http 1.1.0", - "hyper 1.5.0", + "http", + "hyper", "hyper-util", "rustls", "rustls-pki-types", @@ -2202,46 +1594,35 @@ dependencies = [ ] [[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.31", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" +name = "hyper-timeout" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "bytes", - "http-body-util", - "hyper 1.5.0", + "hyper", "hyper-util", - "native-tls", + "pin-project-lite", "tokio", - "tokio-native-tls", "tower-service", ] [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" dependencies = [ + "base64", "bytes", "futures-channel", + "futures-core", "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "hyper 1.5.0", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -2250,51 +1631,145 @@ dependencies = [ ] [[package]] -name = "idna" -version = "0.5.0" +name = "iana-time-zone" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.61.2", ] [[package]] -name = "impl-codec" -version = "0.6.0" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "parity-scale-codec", + "cc", ] [[package]] -name = "impl-rlp" -version = "0.3.0" +name = "icu_collections" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ - "rlp", + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "impl-serde" -version = "0.4.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ - "serde", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] @@ -2305,34 +1780,36 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.6.0" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.3", + "serde", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "unicode-width", -] - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array 0.14.7", + "web-time", ] [[package]] @@ -2346,9 +1823,19 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" @@ -2384,41 +1871,28 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "jobserver" -version = "0.1.32" +name = "itertools" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ - "libc", + "either", ] [[package]] -name = "js-sys" -version = "0.3.72" +name = "itoa" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" -dependencies = [ - "wasm-bindgen", -] +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] -name = "jsonwebtoken" -version = "8.3.0" +name = "js-sys" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ - "base64 0.21.7", - "pem", - "ring 0.16.20", - "serde", - "serde_json", - "simple_asn1", + "once_cell", + "wasm-bindgen", ] [[package]] @@ -2431,7 +1905,7 @@ dependencies = [ "bls12_381", "ff 0.12.1", "group 0.12.1", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2445,6 +1919,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2", "signature", ] @@ -2458,58 +1933,36 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "keccak-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.9.8", + "spin", ] [[package]] name = "libc" -version = "0.2.161" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" - -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" @@ -2517,33 +1970,27 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags", "libc", ] [[package]] -name = "libz-sys" -version = "1.1.20" +name = "linux-raw-sys" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] -name = "linux-raw-sys" -version = "0.4.14" +name = "litemap" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -2551,9 +1998,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "lru" @@ -2561,9 +2008,15 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.0", + "hashbrown 0.15.3", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "matchers" version = "0.1.0" @@ -2587,9 +2040,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memuse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2145869435ace5ea6ea3d35f59be559317ec9a0d04e1812d5f185a87b6d36f1a" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" [[package]] name = "mime" @@ -2605,40 +2058,34 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi", "libc", - "wasi", - "windows-sys 0.52.0", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] -name = "native-tls" -version = "0.2.12" +name = "nix" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", ] [[package]] @@ -2784,9 +2231,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -2798,16 +2245,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ - "num_enum_derive 0.5.11", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive 0.7.3", + "num_enum_derive", ] [[package]] @@ -2822,27 +2260,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.85", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "number_prefix" version = "0.4.0" @@ -2851,87 +2268,30 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" - -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "openssl" -version = "0.10.68" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] -name = "openssl-macros" -version = "0.1.1" +name = "once_cell_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.85", -] +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.104" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "option-ext" @@ -2945,11 +2305,23 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "p3-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066f571b2e645505ed5972dd0e1e252ba03352150830c9566769ca711c0f1e9b" +checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" dependencies = [ "p3-field", "p3-matrix", @@ -2957,49 +2329,39 @@ dependencies = [ [[package]] name = "p3-baby-bear" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff00f571044d299310d9659c6e51c98422de3bf94b8577f7f30cf59cf2043e40" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" dependencies = [ "num-bigint 0.4.6", "p3-field", "p3-mds", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] -[[package]] -name = "p3-blake3" -version = "0.1.4-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4cb69ae54a279bbbd477566d1bdb71aa879b528fd658d0fcfc36f54b00217c" -dependencies = [ - "blake3", - "p3-symmetric", -] - [[package]] name = "p3-bn254-fr" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf19917f986d45e9abb6d177e875824ced6eed096480d574fce16f2c45c721ea" +checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" dependencies = [ - "ff 0.13.0", + "ff 0.13.1", "num-bigint 0.4.6", "p3-field", "p3-poseidon2", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-challenger" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be7e4fbce4566a93091107eadfafa0b5374bd1ffd3e0f6b850da3ff72eb183f" +checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" dependencies = [ "p3-field", "p3-maybe-rayon", @@ -3011,13 +2373,12 @@ dependencies = [ [[package]] name = "p3-commit" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a03eb0f99d68a712c41e658e9a7782a0705d4ffcfb6232a43bd3f1ef9591002" +checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" dependencies = [ "itertools 0.12.1", "p3-challenger", - "p3-dft", "p3-field", "p3-matrix", "p3-util", @@ -3026,9 +2387,9 @@ dependencies = [ [[package]] name = "p3-dft" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1556de968523fbe5d804ab50600ea306fcceea3500cfd7601e40882480524664" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" dependencies = [ "p3-field", "p3-matrix", @@ -3039,23 +2400,23 @@ dependencies = [ [[package]] name = "p3-field" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec2af6e1ac47a2035af5165e668d64612c4b9ccabd06df37fc1fd381fdf8a71" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" dependencies = [ "itertools 0.12.1", "num-bigint 0.4.6", "num-traits", "p3-util", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-fri" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f351ee9f9d4256455164565cd91e3e6d2487cc2a5355515fa2b6d479269188dd" +checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" dependencies = [ "itertools 0.12.1", "p3-challenger", @@ -3072,9 +2433,9 @@ dependencies = [ [[package]] name = "p3-interpolation" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24d0f2907a374ebe4545fcff3120d6376d9630cf0bef30feedcfc5908ea2c37" +checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" dependencies = [ "p3-field", "p3-matrix", @@ -3083,9 +2444,9 @@ dependencies = [ [[package]] name = "p3-keccak-air" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e66badd47cedf6570e91a0cabc389b80dfd53ba1a6e9a45a3923fd54b86122ff" +checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" dependencies = [ "p3-air", "p3-field", @@ -3097,33 +2458,33 @@ dependencies = [ [[package]] name = "p3-matrix" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa272f3ae77ed8d73478aa7c89e712efb15bda3ff4aff10fadfe11a012cd5389" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" dependencies = [ "itertools 0.12.1", "p3-field", "p3-maybe-rayon", "p3-util", - "rand", + "rand 0.8.5", "serde", "tracing", ] [[package]] name = "p3-maybe-rayon" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eecad6292021858f282d643d9d1284ab112a200494d589863a9c4080e578ef0" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" dependencies = [ "rayon", ] [[package]] name = "p3-mds" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716c4dbe68a02f1541eb09149d07b8663a3a5951b1864a31cd67ff3bb0826e57" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" dependencies = [ "itertools 0.12.1", "p3-dft", @@ -3131,14 +2492,14 @@ dependencies = [ "p3-matrix", "p3-symmetric", "p3-util", - "rand", + "rand 0.8.5", ] [[package]] name = "p3-merkle-tree" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7ebab52a03c26025988663a135aed62f5084a2e2ea262176dc8748efb593e5" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" dependencies = [ "itertools 0.12.1", "p3-commit", @@ -3153,23 +2514,23 @@ dependencies = [ [[package]] name = "p3-poseidon2" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c042efa15beab7a8c4d0ca9b9e4cbda7582be0c08e121e830fec45f082935b" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" dependencies = [ "gcd", "p3-field", "p3-mds", "p3-symmetric", - "rand", + "rand 0.8.5", "serde", ] [[package]] name = "p3-symmetric" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9896a831f5b688adc13f6fbe1dcf66ecfaa4622a500f81aa745610e777acb72" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" dependencies = [ "itertools 0.12.1", "p3-field", @@ -3178,9 +2539,9 @@ dependencies = [ [[package]] name = "p3-uni-stark" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437ebcd060c8a5479898030b114a93da8a86eb4c2e5f313d9eeaaf40c6e6f61" +checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" dependencies = [ "itertools 0.12.1", "p3-air", @@ -3197,9 +2558,9 @@ dependencies = [ [[package]] name = "p3-util" -version = "0.1.4-succinct" +version = "0.2.3-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dedb9d27ba47ac314c6fac4ca54e55c3e486c864d51ec5ba55dbe47b75121157" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" dependencies = [ "serde", ] @@ -3215,35 +2576,35 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", - "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", - "serde", + "rustversion", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -3251,9 +2612,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -3272,7 +2633,7 @@ dependencies = [ "ff 0.12.1", "group 0.12.1", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -3284,10 +2645,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" dependencies = [ "blake2b_simd", - "ff 0.13.0", + "ff 0.13.1", "group 0.13.0", "lazy_static", - "rand", + "rand 0.8.5", "static_assertions", "subtle", ] @@ -3299,31 +2660,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" +name = "pathdiff" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", -] +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] -name = "pem" -version = "1.1.1" +name = "pem-rfc7468" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" dependencies = [ - "base64 0.13.1", + "base64ct", ] [[package]] @@ -3332,52 +2680,31 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "pest" -version = "2.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - -[[package]] -name = "pharos" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" -dependencies = [ - "futures", - "rustc_version 0.4.1", -] - [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3396,16 +2723,19 @@ dependencies = [ ] [[package]] -name = "pkg-config" -version = "0.3.31" +name = "portable-atomic" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] -name = "portable-atomic" -version = "1.9.0" +name = "potential_utf" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -3415,35 +2745,30 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" dependencies = [ "proc-macro2", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] -name = "primitive-types" -version = "0.12.2" +name = "primeorder" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "uint", + "elliptic-curve", ] [[package]] @@ -3458,71 +2783,41 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit 0.22.22", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit 0.22.26", ] [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", + "bitflags", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.8.5", - "rusty-fork", - "tempfile", "unarray", ] [[package]] name = "prost" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -3530,64 +2825,65 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "rustls", "socket2", - "thiserror", + "thiserror 2.0.12", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "rand", - "ring 0.17.8", - "rustc-hash 2.0.0", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", + "ring", + "rustc-hash 2.1.1", "rustls", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.12", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", @@ -3597,13 +2893,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -3617,8 +2919,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", ] [[package]] @@ -3628,7 +2941,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -3637,7 +2960,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", ] [[package]] @@ -3646,7 +2979,19 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", ] [[package]] @@ -3680,11 +3025,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags 2.6.0", + "bitflags", ] [[package]] @@ -3693,9 +3038,9 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3706,7 +3051,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -3721,9 +3066,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -3744,84 +3089,39 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.8" +version = "0.12.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" dependencies = [ - "base64 0.22.1", + "base64", "bytes", - "encoding_rs", "futures-core", "futures-util", - "h2 0.4.6", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.5.0", + "hyper", "hyper-rustls", - "hyper-tls 0.6.0", "hyper-util", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", - "system-configuration 0.6.1", + "sync_wrapper", "tokio", - "tokio-native-tls", "tokio-rustls", "tokio-util", + "tower 0.5.2", + "tower-http", "tower-service", "url", "wasm-bindgen", @@ -3829,7 +3129,6 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots", - "windows-registry", ] [[package]] @@ -3840,10 +3139,10 @@ checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" dependencies = [ "anyhow", "async-trait", - "http 1.1.0", - "reqwest 0.12.8", + "http", + "reqwest", "serde", - "thiserror", + "thiserror 1.0.69", "tower-service", ] @@ -3859,65 +3158,18 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - -[[package]] -name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin 0.9.8", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rlp-derive", - "rustc-hex", -] - -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "rrs-succinct" version = "0.1.0" @@ -3925,28 +3177,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" dependencies = [ "downcast-rs", - "num_enum 0.5.11", + "num_enum", "paste", ] [[package]] name = "ruint" -version = "1.12.3" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "bytes", - "fastrlp", - "num-bigint 0.4.6", - "num-traits", - "parity-scale-codec", - "primitive-types", "proptest", - "rand", - "rlp", + "rand 0.8.5", + "rand 0.9.1", "ruint-macro", "serde", "valuable", @@ -3973,24 +3216,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -3998,30 +3226,31 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver", ] [[package]] name = "rustix" -version = "0.38.37" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.6.0", + "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" dependencies = [ + "log", "once_cell", - "ring 0.17.8", + "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -4029,12 +3258,15 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls-native-certs" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ - "base64 0.21.7", + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", ] [[package]] @@ -4048,68 +3280,42 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time", + "zeroize", +] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ - "ring 0.17.8", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - -[[package]] -name = "rusty-fork" -version = "0.3.0" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "salsa20" -version = "0.10.2" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "scale-info" -version = "2.11.5" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa7ffc1c0ef49b0452c6e2986abf2b07743320641ffd5fc63d552458e3b779b" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "cfg-if", "derive_more 1.0.0", @@ -4119,30 +3325,30 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.5" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46385cc24172cf615450267463f937c10072516359b3ff1cb24228a4a08bf951" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] name = "scc" -version = "2.2.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c1f7fc6deb21665a9060dfc7d271be784669295a31babdcd4dd2c79ae8cbfb" +checksum = "22b2d775fb28f245817589471dd49c5edf64237f4a19d10ce9a92ff4651a27f4" dependencies = [ "sdd", ] [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -4153,23 +3359,11 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2", -] - [[package]] name = "sdd" -version = "3.0.4" +version = "3.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" [[package]] name = "sec1" @@ -4181,17 +3375,18 @@ dependencies = [ "der", "generic-array 0.14.7", "pkcs8", + "serdect", "subtle", "zeroize", ] [[package]] name = "security-framework" -version = "2.11.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.6.0", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -4199,79 +3394,49 @@ dependencies = [ ] [[package]] -name = "security-framework-sys" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.11.0" +name = "security-framework-sys" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ - "semver-parser", + "core-foundation-sys", + "libc", ] [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - [[package]] name = "serde" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -4281,9 +3446,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -4310,11 +3475,21 @@ dependencies = [ "serde", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "serial_test" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" dependencies = [ "futures", "log", @@ -4326,24 +3501,24 @@ dependencies = [ [[package]] name = "serial_test_derive" -version = "3.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -4352,20 +3527,10 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest 0.10.7", + "digest", "keccak", ] -[[package]] -name = "sha3-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -dependencies = [ - "cc", - "cfg-if", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -4383,9 +3548,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -4396,20 +3561,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest 0.10.7", - "rand_core", -] - -[[package]] -name = "simple_asn1" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "thiserror", - "time", + "digest", + "rand_core 0.6.4", ] [[package]] @@ -4429,9 +3582,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "snowbridge-amcl" @@ -4445,41 +3598,59 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "sp1-build" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "anyhow", + "cargo_metadata", + "chrono", + "clap", + "dirs", + "sp1-prover", +] + [[package]] name = "sp1-core-executor" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", "bytemuck", + "clap", "elf", "enum-map", "eyre", "hashbrown 0.14.5", "hex", "itertools 0.13.0", - "log", "nohash-hasher", "num", + "p3-baby-bear", "p3-field", "p3-maybe-rayon", - "rand", + "p3-util", + "rand 0.8.5", + "range-set-blaze", "rrs-succinct", "serde", + "serde_json", "sp1-curves", "sp1-primitives", "sp1-stark", "strum", "strum_macros", - "thiserror", + "subenum", + "thiserror 1.0.69", "tiny-keccak", "tracing", "typenum", @@ -4488,32 +3659,40 @@ dependencies = [ [[package]] name = "sp1-core-machine" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "cbindgen", + "cc", "cfg-if", "elliptic-curve", "generic-array 1.1.0", + "glob", "hashbrown 0.14.5", "hex", "itertools 0.13.0", "k256", - "log", "num", "num_cpus", + "p256", "p3-air", "p3-baby-bear", - "p3-blake3", "p3-challenger", "p3-field", "p3-keccak-air", "p3-matrix", "p3-maybe-rayon", + "p3-poseidon2", + "p3-symmetric", "p3-uni-stark", "p3-util", - "rand", + "pathdiff", + "rand 0.8.5", + "rayon", + "rayon-scan", "serde", + "serde_json", "size", "snowbridge-amcl", "sp1-core-executor", @@ -4525,7 +3704,7 @@ dependencies = [ "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", "tracing-forest", "tracing-subscriber", @@ -4533,19 +3712,35 @@ dependencies = [ "web-time", ] +[[package]] +name = "sp1-cuda" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + [[package]] name = "sp1-curves" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "cfg-if", - "curve25519-dalek", "dashu", "elliptic-curve", "generic-array 1.1.0", "itertools 0.13.0", "k256", "num", + "p256", "p3-field", "serde", "snowbridge-amcl", @@ -4556,8 +3751,8 @@ dependencies = [ [[package]] name = "sp1-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -4565,10 +3760,12 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "bincode", + "blake3", + "cfg-if", "hex", "lazy_static", "num-bigint 0.4.6", @@ -4582,16 +3779,19 @@ dependencies = [ [[package]] name = "sp1-prover" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.1" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", "clap", "dirs", + "downloader", + "enum-map", "eyre", + "hashbrown 0.14.5", + "hex", "itertools 0.13.0", - "lazy_static", "lru", "num-bigint 0.4.6", "p3-baby-bear", @@ -4601,11 +3801,12 @@ dependencies = [ "p3-field", "p3-matrix", "p3-symmetric", + "p3-util", "rayon", - "reqwest 0.11.27", "serde", "serde_json", "serial_test", + "sha2", "sp1-core-executor", "sp1-core-machine", "sp1-primitives", @@ -4614,17 +3815,16 @@ dependencies = [ "sp1-recursion-core", "sp1-recursion-gnark-ffi", "sp1-stark", - "subtle-encoding", - "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", + "tracing-appender", "tracing-subscriber", ] [[package]] name = "sp1-recursion-circuit" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", @@ -4639,8 +3839,9 @@ dependencies = [ "p3-fri", "p3-matrix", "p3-symmetric", + "p3-uni-stark", "p3-util", - "rand", + "rand 0.8.5", "rayon", "serde", "sp1-core-executor", @@ -4656,8 +3857,8 @@ dependencies = [ [[package]] name = "sp1-recursion-compiler" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", "itertools 0.13.0", @@ -4677,13 +3878,18 @@ dependencies = [ [[package]] name = "sp1-recursion-core" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "backtrace", - "ff 0.13.0", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", "hashbrown 0.14.5", "itertools 0.13.0", + "num_cpus", "p3-air", "p3-baby-bear", "p3-bn254-fr", @@ -4698,13 +3904,15 @@ dependencies = [ "p3-poseidon2", "p3-symmetric", "p3-util", + "pathdiff", + "rand 0.8.5", "serde", "sp1-core-machine", "sp1-derive", "sp1-primitives", "sp1-stark", "static_assertions", - "thiserror", + "thiserror 1.0.69", "tracing", "vec_map", "zkhash", @@ -4712,8 +3920,8 @@ dependencies = [ [[package]] name = "sp1-recursion-derive" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "quote", "syn 1.0.109", @@ -4721,8 +3929,8 @@ dependencies = [ [[package]] name = "sp1-recursion-gnark-ffi" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "anyhow", "bincode", @@ -4730,7 +3938,6 @@ dependencies = [ "cc", "cfg-if", "hex", - "log", "num-bigint 0.4.6", "p3-baby-bear", "p3-field", @@ -4742,57 +3949,62 @@ dependencies = [ "sp1-recursion-compiler", "sp1-stark", "tempfile", + "tracing", ] [[package]] name = "sp1-sdk" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.2" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ - "alloy-sol-types", + "alloy-primitives", "anyhow", "async-trait", + "backoff", "bincode", "cfg-if", "dirs", - "ethers", + "eventsource-stream", "futures", "hashbrown 0.14.5", "hex", "indicatif", "itertools 0.13.0", - "log", + "k256", "p3-baby-bear", "p3-field", "p3-fri", "prost", - "reqwest 0.12.8", + "reqwest", "reqwest-middleware", "serde", + "serde_json", + "sp1-build", "sp1-core-executor", "sp1-core-machine", + "sp1-cuda", "sp1-primitives", "sp1-prover", "sp1-stark", "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", + "tonic", "tracing", "twirp-rs", - "vergen", ] [[package]] name = "sp1-stark" -version = "3.0.0" -source = "git+https://github.com/succinctlabs/sp1.git?rev=v3.0.0#ff8f482c3e135f1a1f325d639fb6fc8c383407f2" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" dependencies = [ "arrayref", - "getrandom", "hashbrown 0.14.5", "itertools 0.13.0", + "num-bigint 0.4.6", "num-traits", "p3-air", "p3-baby-bear", @@ -4815,7 +4027,6 @@ dependencies = [ "strum", "strum_macros", "sysinfo", - "thiserror", "tracing", ] @@ -4829,12 +4040,6 @@ dependencies = [ "sp1-sdk", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -4851,6 +4056,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -4878,27 +4089,30 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "subenum" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "4f5d5dfb8556dd04017db5e318bbeac8ab2b0c67b76bf197bfb79e9b29f18ecf" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "subtle-encoding" -version = "0.5.1" +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" -dependencies = [ - "zeroize", -] +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -4913,9 +4127,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -4923,30 +4137,23 @@ dependencies = [ ] [[package]] -name = "syn-solidity" -version = "0.7.7" +name = "sync_wrapper" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.85", + "futures-core", ] [[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.1" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "futures-core", + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -4965,84 +4172,62 @@ dependencies = [ ] [[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" +name = "tap" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "system-configuration-sys 0.6.0", -] +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] -name = "system-configuration-sys" -version = "0.5.0" +name = "tempfile" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "core-foundation-sys", - "libc", + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] -name = "system-configuration-sys" -version = "0.6.0" +name = "thiserror" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "core-foundation-sys", - "libc", + "thiserror-impl 1.0.69", ] [[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.13.0" +name = "thiserror" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "cfg-if", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", + "thiserror-impl 2.0.12", ] [[package]] -name = "thiserror" -version = "1.0.65" +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] @@ -5057,15 +4242,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -5074,15 +4257,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -5097,11 +4280,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -5114,9 +4307,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" dependencies = [ "backtrace", "bytes", @@ -5132,41 +4325,41 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "tokio-rustls" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "native-tls", + "rustls", "tokio", ] [[package]] -name = "tokio-rustls" -version = "0.26.0" +name = "tokio-stream" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ - "rustls", - "rustls-pki-types", + "futures-core", + "pin-project-lite", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -5177,21 +4370,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.22", + "toml_edit 0.22.26", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] @@ -5202,38 +4395,116 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.9.0", "toml_datetime", "winnow 0.5.40", ] [[package]] -name = "toml_edit" -version = "0.22.22" +name = "toml_edit" +version = "0.22.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +dependencies = [ + "indexmap 2.9.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow 0.7.10", +] + +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs", + "rustls-pemfile", + "socket2", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.20", + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", ] [[package]] -name = "tower" -version = "0.5.1" +name = "tower-http" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "futures-core", + "bitflags", + "bytes", "futures-util", + "http", + "http-body", + "iri-string", "pin-project-lite", - "sync_wrapper 0.1.2", - "tokio", + "tower 0.5.2", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -5250,9 +4521,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -5260,22 +4531,34 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -5289,21 +4572,11 @@ checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" dependencies = [ "ansi_term", "smallvec", - "thiserror", + "thiserror 1.0.69", "tracing", "tracing-subscriber", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -5317,9 +4590,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -5348,42 +4621,24 @@ dependencies = [ "async-trait", "axum", "futures", - "http 1.1.0", + "http", "http-body-util", - "hyper 1.5.0", + "hyper", "prost", - "reqwest 0.12.8", + "reqwest", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", - "tower", + "tower 0.5.2", "url", ] [[package]] name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "unarray" @@ -5391,32 +4646,17 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" -version = "0.1.14" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" @@ -5424,12 +4664,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -5438,9 +4672,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -5448,32 +4682,22 @@ dependencies = [ ] [[package]] -name = "utf8parse" -version = "0.2.2" +name = "utf8_iter" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] -name = "uuid" -version = "0.8.2" +name = "utf8parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vec_map" @@ -5484,44 +4708,12 @@ dependencies = [ "serde", ] -[[package]] -name = "vergen" -version = "8.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" -dependencies = [ - "anyhow", - "cfg-if", - "git2", - "rustversion", - "time", -] - [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -dependencies = [ - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - [[package]] name = "want" version = "0.3.1" @@ -5537,49 +4729,59 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5587,28 +4789,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -5619,9 +4824,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -5639,9 +4844,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" dependencies = [ "rustls-pki-types", ] @@ -5662,15 +4867,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -5683,7 +4879,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core", + "windows-core 0.52.0", "windows-targets 0.52.6", ] @@ -5697,33 +4893,62 @@ dependencies = [ ] [[package]] -name = "windows-registry" -version = "0.2.0" +name = "windows-core" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", "windows-result", "windows-strings", - "windows-targets 0.52.6", ] +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -5777,13 +5002,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -5796,6 +5037,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -5808,6 +5055,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -5820,12 +5073,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -5838,6 +5103,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -5850,6 +5121,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -5862,6 +5139,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -5874,6 +5157,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.5.40" @@ -5885,41 +5174,27 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] [[package]] -name = "winreg" -version = "0.50.0" +name = "wit-bindgen-rt" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "bitflags", ] [[package]] -name = "ws_stream_wasm" -version = "0.7.4" +name = "writeable" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" -dependencies = [ - "async_io_stream", - "futures", - "js-sys", - "log", - "pharos", - "rustc_version 0.4.1", - "send_wrapper 0.6.0", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wyz" @@ -5930,25 +5205,69 @@ dependencies = [ "tap", ] +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", + "synstructure", ] [[package]] @@ -5968,7 +5287,40 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.101", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -5977,8 +5329,8 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" dependencies = [ - "ark-ff 0.4.2", - "ark-std 0.4.0", + "ark-ff", + "ark-std", "bitvec", "blake2", "bls12_381", @@ -5991,7 +5343,7 @@ dependencies = [ "jubjub", "lazy_static", "pasta_curves 0.5.1", - "rand", + "rand 0.8.5", "serde", "sha2", "sha3", diff --git a/operator/sp1/lib/Cargo.toml b/operator/sp1/lib/Cargo.toml index e5c985ef31..1a51660737 100644 --- a/operator/sp1/lib/Cargo.toml +++ b/operator/sp1/lib/Cargo.toml @@ -5,8 +5,8 @@ edition = "2021" [dependencies] bincode = "1.3.3" -lazy_static = "1.4.0" -sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v3.0.0" } +lazy_static = "1.5.0" +sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } log = "0.4.21" [lib] diff --git a/operator/sp1/lib/rust-toolchain b/operator/sp1/lib/rust-toolchain index 989860f406..9397b95266 100644 --- a/operator/sp1/lib/rust-toolchain +++ b/operator/sp1/lib/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2024-04-17" +channel = "stable" components = ["llvm-tools", "rustc-dev"] diff --git a/operator/sp1/lib/sp1.h b/operator/sp1/lib/sp1.h index aeb607b3ab..fe564356c1 100644 --- a/operator/sp1/lib/sp1.h +++ b/operator/sp1/lib/sp1.h @@ -2,4 +2,5 @@ #include int32_t verify_sp1_proof_ffi(unsigned char *proof_buffer, uint32_t proof_len, - unsigned char *elf_buffer, uint32_t elf_len); + unsigned char *public_inputs_buffer, uint32_t public_inputs_len, + unsigned char *elf_buffer, uint32_t elf_len); diff --git a/operator/sp1/lib/src/lib.rs b/operator/sp1/lib/src/lib.rs index 266d9e0bea..eb1ec16f88 100644 --- a/operator/sp1/lib/src/lib.rs +++ b/operator/sp1/lib/src/lib.rs @@ -1,14 +1,16 @@ use lazy_static::lazy_static; -use log::error; -use sp1_sdk::ProverClient; +use log::{error, warn}; +use sp1_sdk::{ProverClient, EnvProver, SP1ProofWithPublicValues}; lazy_static! { - static ref PROVER_CLIENT: ProverClient = ProverClient::new(); + static ref PROVER_CLIENT: EnvProver = ProverClient::from_env(); } fn inner_verify_sp1_proof_ffi( proof_bytes: *const u8, proof_len: u32, + public_inputs_bytes: *const u8, + public_inputs_len: u32, elf_bytes: *const u8, elf_len: u32, ) -> bool { @@ -23,10 +25,15 @@ fn inner_verify_sp1_proof_ffi( } let proof_bytes = unsafe { std::slice::from_raw_parts(proof_bytes, proof_len as usize) }; - + let public_inputs_bytes = + unsafe { std::slice::from_raw_parts(public_inputs_bytes, public_inputs_len as usize) }; let elf_bytes = unsafe { std::slice::from_raw_parts(elf_bytes, elf_len as usize) }; - if let Ok(proof) = bincode::deserialize(proof_bytes) { + if let Ok(proof) = bincode::deserialize::(proof_bytes) { + if *proof.public_values.as_slice() != *public_inputs_bytes { + warn!("SP1 public inputs do not match proof public values"); + return false; + } let (_pk, vk) = PROVER_CLIENT.setup(elf_bytes); return PROVER_CLIENT.verify(&proof, &vk).is_ok(); } @@ -38,11 +45,13 @@ fn inner_verify_sp1_proof_ffi( pub extern "C" fn verify_sp1_proof_ffi( proof_bytes: *const u8, proof_len: u32, + public_inputs_bytes: *const u8, + public_inputs_len: u32, elf_bytes: *const u8, elf_len: u32, ) -> i32 { let result = std::panic::catch_unwind(|| { - inner_verify_sp1_proof_ffi(proof_bytes, proof_len, elf_bytes, elf_len) + inner_verify_sp1_proof_ffi(proof_bytes, proof_len, public_inputs_bytes, public_inputs_len, elf_bytes, elf_len) }); match result { @@ -55,27 +64,32 @@ pub extern "C" fn verify_sp1_proof_ffi( mod tests { use super::*; - const PROOF: &[u8] = include_bytes!("../../../../scripts/test_files/sp1/sp1_fibonacci.proof"); - const ELF: &[u8] = include_bytes!("../../../../scripts/test_files/sp1/sp1_fibonacci.elf"); + const PROOF: &[u8] = include_bytes!("../../../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof"); + const PUBLIC_INPUTS: &[u8] = include_bytes!("../../../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub"); + const ELF: &[u8] = include_bytes!("../../../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf"); #[test] fn verify_sp1_proof_with_elf_works() { let proof_bytes = PROOF.as_ptr(); + let public_inputs_bytes = PUBLIC_INPUTS.as_ptr(); let elf_bytes = ELF.as_ptr(); let result = - verify_sp1_proof_ffi(proof_bytes, PROOF.len() as u32, elf_bytes, ELF.len() as u32); + verify_sp1_proof_ffi(proof_bytes, PROOF.len() as u32, public_inputs_bytes, PUBLIC_INPUTS.len() as u32, elf_bytes, ELF.len() as u32); assert_eq!(result, 1) } #[test] fn verify_sp1_aborts_with_bad_proof() { let proof_bytes = PROOF.as_ptr(); + let public_inputs_bytes = PUBLIC_INPUTS.as_ptr(); let elf_bytes = ELF.as_ptr(); let result = verify_sp1_proof_ffi( proof_bytes, (PROOF.len() - 1) as u32, + public_inputs_bytes, + PUBLIC_INPUTS.len() as u32, elf_bytes, ELF.len() as u32, ); diff --git a/operator/sp1/sp1.go b/operator/sp1/sp1.go index 861401abf1..2fe9e5c3c7 100644 --- a/operator/sp1/sp1.go +++ b/operator/sp1/sp1.go @@ -12,7 +12,7 @@ import ( "unsafe" ) -func VerifySp1Proof(proofBuffer []byte, elfBuffer []byte) (isVerified bool, err error) { +func VerifySp1Proof(proofBuffer []byte, publicInputsBuffer []byte, elfBuffer []byte) (isVerified bool, err error) { // Here we define the return value on failure isVerified = false err = nil @@ -24,17 +24,23 @@ func VerifySp1Proof(proofBuffer []byte, elfBuffer []byte) (isVerified bool, err defer func() { rec := recover() if rec != nil { - err = fmt.Errorf("Panic was caught while verifying sp1 proof: %s", rec) + err = fmt.Errorf("panic was caught while verifying sp1 proof: %s", rec) } }() proofPtr := (*C.uchar)(unsafe.Pointer(&proofBuffer[0])) elfPtr := (*C.uchar)(unsafe.Pointer(&elfBuffer[0])) - r := (C.int32_t)(C.verify_sp1_proof_ffi(proofPtr, (C.uint32_t)(len(proofBuffer)), elfPtr, (C.uint32_t)(len(elfBuffer)))) + r := (C.int32_t)(0) + if len(publicInputsBuffer) == 0 { // allow empty public inputs + r = (C.int32_t)(C.verify_sp1_proof_ffi(proofPtr, (C.uint32_t)(len(proofBuffer)), nil, (C.uint32_t)(0), elfPtr, (C.uint32_t)(len(elfBuffer)))) + } else { + publicInputsPtr := (*C.uchar)(unsafe.Pointer(&publicInputsBuffer[0])) + r = (C.int32_t)(C.verify_sp1_proof_ffi(proofPtr, (C.uint32_t)(len(proofBuffer)), publicInputsPtr, (C.uint32_t)(len(publicInputsBuffer)), elfPtr, (C.uint32_t)(len(elfBuffer)))) + } if r == -1 { - err = fmt.Errorf("Panic happened on FFI while verifying sp1 proof") + err = fmt.Errorf("panic happened on FFI while verifying sp1 proof") return isVerified, err } diff --git a/operator/sp1/sp1_test.go b/operator/sp1/sp1_test.go index a524252699..c3bb75fb03 100644 --- a/operator/sp1/sp1_test.go +++ b/operator/sp1/sp1_test.go @@ -7,9 +7,9 @@ import ( "github.com/yetanotherco/aligned_layer/operator/sp1" ) -const ProofFilePath = "../../scripts/test_files/sp1/sp1_fibonacci.proof" - -const ElfFilePath = "../../scripts/test_files/sp1/sp1_fibonacci.elf" +const ProofFilePath = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof" +const PublicInputsFilePath = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub" +const ElfFilePath = "../../scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf" func TestFibonacciSp1ProofVerifies(t *testing.T) { proofBytes, err := os.ReadFile(ProofFilePath) @@ -17,12 +17,17 @@ func TestFibonacciSp1ProofVerifies(t *testing.T) { t.Errorf("could not open proof file: %s", err) } + publicInputsBytes, err := os.ReadFile(PublicInputsFilePath) + if err != nil { + t.Errorf("could not open public inputs file: %s", err) + } + elfBytes, err := os.ReadFile(ElfFilePath) if err != nil { t.Errorf("could not open elf file: %s", err) } - verified, err := sp1.VerifySp1Proof(proofBytes, elfBytes) + verified, err := sp1.VerifySp1Proof(proofBytes, publicInputsBytes, elfBytes) if err != nil || !verified { t.Errorf("proof did not verify") } diff --git a/scripts/fund_operator_devnet.sh b/scripts/fund_operator_devnet.sh index 7cee7b555a..493e259005 100755 --- a/scripts/fund_operator_devnet.sh +++ b/scripts/fund_operator_devnet.sh @@ -1,7 +1,12 @@ #!/bin/bash +if [[ -z "$RPC_URL" ]]; then + echo "RPC_URL is empty, using default value http://localhost:8545" + RPC_URL="http://localhost:8545" +fi; + # Check that OPERATOR_ADDRESS is not empty -if [[ "$OPERATOR_ADDRESS" -eq "" ]]; then +if [[ -z "$OPERATOR_ADDRESS" ]]; then echo "OPERATOR_ADDRESS is empty, using default value 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" OPERATOR_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 fi; @@ -22,6 +27,6 @@ amount_in_eth="1ether" cast send --from $sender_address \ --value $amount_in_eth \ --private-key $sender_private_key \ - --rpc-url "http://localhost:8545" \ + --rpc-url $RPC_URL \ "$recipient_address" \ - --gas-price $(cast gas-price --rpc-url "http://localhost:8545") + --gas-price $(cast gas-price --rpc-url "$RPC_URL") diff --git a/scripts/init-s3-main.sh b/scripts/init-s3-main.sh new file mode 100755 index 0000000000..da4cca2667 --- /dev/null +++ b/scripts/init-s3-main.sh @@ -0,0 +1,7 @@ +#!/bin/bash +python3 /etc/localstack/init/ready.d/init-s3.py \ + --endpoint_url http://localhost:4566 \ + --access_key test \ + --secret_key test \ + --bucket_name aligned.storage \ + --region us-east-2 diff --git a/scripts/init-s3-secondary.sh b/scripts/init-s3-secondary.sh new file mode 100755 index 0000000000..200caa3d03 --- /dev/null +++ b/scripts/init-s3-secondary.sh @@ -0,0 +1,7 @@ +#!/bin/bash +python3 /etc/localstack/init/ready.d/init-s3.py \ + --endpoint_url http://localhost:4566 \ + --access_key test2 \ + --secret_key test2 \ + --bucket_name aligned.storage \ + --region us-west-1 diff --git a/scripts/init-s3.py b/scripts/init-s3.py index 734b32ea2a..123490ad0a 100644 --- a/scripts/init-s3.py +++ b/scripts/init-s3.py @@ -1,10 +1,32 @@ import boto3 +import argparse -s3_client = boto3.client( - "s3", - endpoint_url=f"http://localhost:4566", - aws_access_key_id="test", - aws_secret_access_key="test" -) +def main(): + parser = argparse.ArgumentParser(description='Initialize S3 bucket in LocalStack') + parser.add_argument('--endpoint_url', default='http://localhost:4566', help='S3 endpoint URL') + parser.add_argument('--access_key', default='test', help='AWS access key ID') + parser.add_argument('--secret_key', default='test', help='AWS secret access key') + parser.add_argument('--bucket_name', default='aligned.storage', help='S3 bucket name') + parser.add_argument('--region', default='us-east-2', help='AWS region') + + args = parser.parse_args() -s3_client.create_bucket(Bucket="aligned.storage") + s3_client = boto3.client( + "s3", + endpoint_url=args.endpoint_url, + aws_access_key_id=args.access_key, + aws_secret_access_key=args.secret_key, + region_name=args.region + ) + + try: + s3_client.create_bucket( + Bucket=args.bucket_name, + CreateBucketConfiguration={'LocationConstraint': args.region} + ) + print(f"Successfully created bucket: {args.bucket_name}") + except Exception as e: + print(f"Error creating bucket {args.bucket_name}: {e}") + +if __name__ == "__main__": + main() diff --git a/scripts/mint_mock_token.sh b/scripts/mint_mock_token.sh index e6c0afde91..b0307b2674 100755 --- a/scripts/mint_mock_token.sh +++ b/scripts/mint_mock_token.sh @@ -1,7 +1,12 @@ #!/bin/bash +if [[ -z "$RPC_URL" ]]; then + echo "RPC_URL is empty, using default value http://localhost:8545" + RPC_URL="http://localhost:8545" +fi; + # check that OPERATOR_ADDRESS is not empty -if [[ "$OPERATOR_ADDRESS" -eq "" ]]; then +if [[ -z "$OPERATOR_ADDRESS" ]]; then echo "OPERATOR_ADDRESS is empty, using default value 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" OPERATOR_ADDRESS="0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" fi; @@ -12,12 +17,12 @@ if [[ "$#" -ne 2 ]]; then exit 1 fi; -mock_strategy_address=$(cat "contracts/script/output/devnet/eigenlayer_deployment_output.json" | jq -r '.addresses.strategies.MOCK') -mock_token_address=$(cast call "$mock_strategy_address" "underlyingToken()") +mock_strategy_address=$(cat "contracts/script/output/devnet/eigenlayer_deployment_output.json" | jq -r '.addresses.strategies.WETH') +mock_token_address=$(cast call "$mock_strategy_address" "underlyingToken()" --rpc-url "$RPC_URL") operator_address=$(cat "$1" | yq -r '.operator.address') -if [[ "$mock_token_address" -eq "" ]]; then +if [[ -z "$mock_token_address" ]]; then echo "Mock token address is empty, please deploy the contracts first" exit 1 fi; @@ -42,8 +47,11 @@ echo "Mock token address: $mock_token_address" private_key="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" # Mint tokens +# The deployment `contracts/eigenlayer_contracts/eigenlayer-contracts/script/deploy/local/deploy_from_scratch.slashing.s.sol` +# send tokens to `executorMultisig` which is `0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266` (Anvil address 1) +# We need to send tokens from `executorMultisig` to `operator_address` cast send "$mock_token_address" \ - "mint(address, uint256)" \ + "transfer(address recipient, uint256 amount)(bool)" \ "$operator_address" "$2" \ --private-key $private_key \ - --rpc-url "http://localhost:8545" + --rpc-url $RPC_URL diff --git a/scripts/test_files/README.md b/scripts/test_files/README.md new file mode 100644 index 0000000000..d87e003c27 --- /dev/null +++ b/scripts/test_files/README.md @@ -0,0 +1,51 @@ +# Generate Proofs + +To generate example proofs you can use the following commands: + +Note: You have to be in the root of the project + +## Generate SP1 Proof + +```bash +make generate_sp1_fibonacci_proof +``` + +```bash +make generate_sp1_no_public_input_proof +``` + +## Generate Risc0 Proof + +```bash +make generate_risc_zero_fibonacci_proof +``` + +```bash +make generate_risc_zero_empty_journal_proof +``` + +## Generate Gnark Groth16 BN254 Proof + +```bash +make generate_gnark_groth16_bn254_proof +``` + +## Generate Gnark Plonk BN254 Proof + +```bash +make generate_gnark_plonk_bn254_proof +``` + +## Generate Gnark Plonk BLS12-381 Proof + +```bash +make generate_gnark_plonk_bls12_381_proof +``` + +## Generate Circom Groth16 BN256 Proof + +```bash +make generate_circom_groth16_bn256_proof +``` + +You can find more details about Circom in [./circom_groth16_bn256_script/README.md](./circom_groth16_bn256_script/README.md). diff --git a/scripts/test_files/circom_groth16_bn256_no_pub_input_script/README.md b/scripts/test_files/circom_groth16_bn256_no_pub_input_script/README.md new file mode 100644 index 0000000000..069c7dcd64 --- /dev/null +++ b/scripts/test_files/circom_groth16_bn256_no_pub_input_script/README.md @@ -0,0 +1,43 @@ +# Circom + +# Circom Groth16 BN256 Script + +The proof contained here is generated using the steps from [snarkjs repository](https://github.com/iden3/snarkjs) guide. + +The example uses the following dependencies versions: + +- Node version `v22.16.0` +- Circom version `2.2.2` +- Snarkjs version `0.7.5` + +You can find how to install all dependencies in the snarkjs repository. + +## Powers Of Tau Setup + +You can run the following command from the repository root to create the setup: + +```bash +make generate_circom_groth16_bn256_setup +``` + +## Generate the Circuit + +You can modify `circuit.circom` and `input.json` files to create your own circuit and input. + +## Generate the Proof + +You can run the following command from the repository root to generate the proof: + +```bash +make generate_circom_groth16_bn256_proof +``` + +This will generate the following files `proof.json`, `public.json`, and `verification_key.json` that can be sent to Aligned. + +## Send the Proof to Aligned + +You can run the following command from the repository root to send the proof to Aligned: + +```bash +make batcher_send_circom_groth16_bn256_task +``` \ No newline at end of file diff --git a/scripts/test_files/circom_groth16_bn256_no_pub_input_script/circuit.circom b/scripts/test_files/circom_groth16_bn256_no_pub_input_script/circuit.circom new file mode 100644 index 0000000000..1551142777 --- /dev/null +++ b/scripts/test_files/circom_groth16_bn256_no_pub_input_script/circuit.circom @@ -0,0 +1,15 @@ +pragma circom 2.0.0; + +template Multiplier(n) { + signal input a; + signal input b; + + signal int[n]; + + int[0] <== a*a + b; + for (var i=1; i(); + + // Compute the n'th fibonacci number, using normal Rust code. + let mut a = 0; + let mut b = 1; + for _ in 0..n { + let mut c = a + b; + c %= 7919; // Modulus to prevent overflow. + a = b; + b = c; + } + + // Do not commit public inputs on purpose, as this is a test case for no public inputs. +} diff --git a/scripts/test_files/sp1/no_public_inputs/script/Cargo.lock b/scripts/test_files/sp1/no_public_inputs/script/Cargo.lock new file mode 100644 index 0000000000..45254ba88e --- /dev/null +++ b/scripts/test_files/sp1/no_public_inputs/script/Cargo.lock @@ -0,0 +1,5357 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-primitives" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a326d47106039f38b811057215a92139f46eef7983a4b77b10930a0ea5685b1e" +dependencies = [ + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "hashbrown 0.15.3", + "indexmap 2.9.0", + "itoa", + "k256", + "paste", + "rand 0.9.1", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std", + "digest", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "futures-core", + "getrandom 0.2.16", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.101", +] + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "bls12_381" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +dependencies = [ + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cbindgen" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce8dd7fcfcbf3a0a87d8f515194b49d6135acab73e18bd380d1d93bb1a15eb" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap 2.9.0", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.101", + "tempfile", + "toml", +] + +[[package]] +name = "cc" +version = "1.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" +dependencies = [ + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-link", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + +[[package]] +name = "const-hex" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "ctrlc" +version = "3.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f93780a459b7d656ef7f071fe699c4d3d2cb201c4b24d085b6ddc505276e73" +dependencies = [ + "nix", + "windows-sys 0.59.0", +] + +[[package]] +name = "dashu" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b3e5ac1e23ff1995ef05b912e2b012a8784506987a2651552db2c73fb3d7e0" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-macros", + "dashu-ratio", + "rustversion", +] + +[[package]] +name = "dashu-base" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b80bf6b85aa68c58ffea2ddb040109943049ce3fbdf4385d0380aef08ef289" + +[[package]] +name = "dashu-float" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85078445a8dbd2e1bd21f04a816f352db8d333643f0c9b78ca7c3d1df71063e7" +dependencies = [ + "dashu-base", + "dashu-int", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-int" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee99d08031ca34a4d044efbbb21dff9b8c54bb9d8c82a189187c0651ffdb9fbf" +dependencies = [ + "cfg-if", + "dashu-base", + "num-modular", + "num-order", + "rustversion", + "static_assertions", +] + +[[package]] +name = "dashu-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93381c3ef6366766f6e9ed9cf09e4ef9dec69499baf04f0c60e70d653cf0ab10" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "dashu-ratio", + "paste", + "proc-macro2", + "quote", + "rustversion", +] + +[[package]] +name = "dashu-ratio" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e33b04dd7ce1ccf8a02a69d3419e354f2bbfdf4eb911a0b7465487248764c9" +dependencies = [ + "dashu-base", + "dashu-float", + "dashu-int", + "num-modular", + "num-order", + "rustversion", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest", + "futures", + "rand 0.8.5", + "reqwest", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "serdect", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff 0.13.1", + "generic-array 0.14.7", + "group 0.13.0", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "eventsource-stream" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" +dependencies = [ + "futures-core", + "nom", + "pin-project-lite", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "gen_ops" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304de19db7028420975a296ab0fcbbc8e69438c4ed254a1e41e2a7f37d5f0e0a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "generic-array" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" +dependencies = [ + "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "memuse", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.9.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "halo2" +version = "0.1.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a23c779b38253fe1538102da44ad5bd5378495a61d2c4ee18d64eaa61ae5995" +dependencies = [ + "halo2_proofs", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core 0.6.4", + "rayon", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.61.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown 0.15.3", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381", + "ff 0.12.1", + "group 0.12.1", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "serdect", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.0", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.3", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memuse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d97bbf43eb4f088f8ca469930cde17fa036207c9a5e02ccc5107c4e8b17c964" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "no_public_input_proof_generator-script" +version = "0.1.0" +dependencies = [ + "sp1-helper", + "sp1-sdk", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p3-air" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05a97452c4b1cfa8626e69181d901fc8231d99ff7d87e9701a2e6b934606615" +dependencies = [ + "p3-field", + "p3-matrix", +] + +[[package]] +name = "p3-baby-bear" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0dd4d095d254783098bd09fc5fdf33fd781a1be54608ab93cb3ed4bd723da54" +dependencies = [ + "ff 0.13.1", + "num-bigint 0.4.6", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d18c223b7e0177f4ac91070fa3f6cc557d5ee3b279869924c3102fb1b20910" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b38fe979d53d4f1d64158c40b3cd9ea1bd6b7bc8f085e489165c542ef914ae28" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-field", + "p3-matrix", + "p3-util", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c274dab2dcd060cdea9ab3f8f7129f5fa5f08917d6092dc2b297a31d883aa0" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-interpolation", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-interpolation" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed8de7333abb0ad0a17bb78726a43749cc7fcab4763f296894e8b2933841d4d8" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-util", +] + +[[package]] +name = "p3-keccak-air" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c7ec21317c455d39588428e4ec85b96d663ff171ddf102a10e2ca54c942dea" +dependencies = [ + "p3-air", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-matrix" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand 0.8.5", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f159e073afbee02c00d22390bf26ebb9ce03bbcd3e6dcd13c6a7a3811ab39608" +dependencies = [ + "itertools 0.12.1", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "p3-symmetric" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a86f29c32bf46fa4acb6547d2065a711e146d4faca388b56d75718c60a0097d" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-util" +version = "0.2.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parity-scale-codec" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" +dependencies = [ + "arrayvec", + "byte-slice-cast", + "const_format", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.1", + "group 0.13.0", + "lazy_static", + "rand 0.8.5", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "portable-atomic" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" +dependencies = [ + "proc-macro2", + "syn 2.0.101", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit 0.22.26", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +dependencies = [ + "bitflags", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "unarray", +] + +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "quinn" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls", + "socket2", + "thiserror 2.0.12", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", + "ring", + "rustc-hash 2.1.1", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.12", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", + "serde", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "range-set-blaze" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8421b5d459262eabbe49048d362897ff3e3830b44eac6cfe341d6acb2f0f13d2" +dependencies = [ + "gen_ops", + "itertools 0.12.1", + "num-integer", + "num-traits", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rayon-scan" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f87cc11a0140b4b0da0ffc889885760c61b13672d80a908920b2c0df078fa14" +dependencies = [ + "rayon", +] + +[[package]] +name = "redox_syscall" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2f8e5513d63f2e5b386eb5106dc67eaf3f84e95258e210489136b8b92ad6119" +dependencies = [ + "base64", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower 0.5.2", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rrs-succinct" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" +dependencies = [ + "downcast-rs", + "num_enum", + "paste", +] + +[[package]] +name = "ruint" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" +dependencies = [ + "proptest", + "rand 0.8.5", + "rand 0.9.1", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "scc" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22b2d775fb28f245817589471dd49c5edf64237f4a19d10ce9a92ff4651a27f4" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sdd" +version = "3.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "serial_test" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + +[[package]] +name = "size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "sp1-build" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "anyhow", + "cargo_metadata", + "chrono", + "clap", + "dirs", + "sp1-prover", +] + +[[package]] +name = "sp1-core-executor" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "bytemuck", + "clap", + "elf", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "nohash-hasher", + "num", + "p3-baby-bear", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand 0.8.5", + "range-set-blaze", + "rrs-succinct", + "serde", + "serde_json", + "sp1-curves", + "sp1-primitives", + "sp1-stark", + "strum", + "strum_macros", + "subenum", + "thiserror 1.0.69", + "tiny-keccak", + "tracing", + "typenum", + "vec_map", +] + +[[package]] +name = "sp1-core-machine" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "cbindgen", + "cc", + "cfg-if", + "elliptic-curve", + "generic-array 1.1.0", + "glob", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "k256", + "num", + "num_cpus", + "p256", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-field", + "p3-keccak-air", + "p3-matrix", + "p3-maybe-rayon", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "pathdiff", + "rand 0.8.5", + "rayon", + "rayon-scan", + "serde", + "serde_json", + "size", + "snowbridge-amcl", + "sp1-core-executor", + "sp1-curves", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "strum", + "strum_macros", + "tempfile", + "thiserror 1.0.69", + "tracing", + "tracing-forest", + "tracing-subscriber", + "typenum", + "web-time", +] + +[[package]] +name = "sp1-cuda" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "ctrlc", + "prost", + "serde", + "sp1-core-machine", + "sp1-prover", + "tokio", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-curves" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "cfg-if", + "dashu", + "elliptic-curve", + "generic-array 1.1.0", + "itertools 0.13.0", + "k256", + "num", + "p256", + "p3-field", + "serde", + "snowbridge-amcl", + "sp1-primitives", + "sp1-stark", + "typenum", +] + +[[package]] +name = "sp1-derive" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-helper" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "sp1-build", +] + +[[package]] +name = "sp1-primitives" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "bincode", + "blake3", + "cfg-if", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "serde", + "sha2", +] + +[[package]] +name = "sp1-prover" +version = "5.0.1" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "anyhow", + "bincode", + "clap", + "dirs", + "downloader", + "enum-map", + "eyre", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "lru", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rayon", + "serde", + "serde_json", + "serial_test", + "sha2", + "sp1-core-executor", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "thiserror 1.0.69", + "tracing", + "tracing-appender", + "tracing-subscriber", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-traits", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rand 0.8.5", + "rayon", + "serde", + "sp1-core-executor", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-stark", + "tracing", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "backtrace", + "itertools 0.13.0", + "p3-baby-bear", + "p3-bn254-fr", + "p3-field", + "p3-symmetric", + "serde", + "sp1-core-machine", + "sp1-primitives", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-stark", + "tracing", + "vec_map", +] + +[[package]] +name = "sp1-recursion-core" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "backtrace", + "cbindgen", + "cc", + "cfg-if", + "ff 0.13.1", + "glob", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "pathdiff", + "rand 0.8.5", + "serde", + "sp1-core-machine", + "sp1-derive", + "sp1-primitives", + "sp1-stark", + "static_assertions", + "thiserror 1.0.69", + "tracing", + "vec_map", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "anyhow", + "bincode", + "bindgen", + "cc", + "cfg-if", + "hex", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-symmetric", + "serde", + "serde_json", + "sha2", + "sp1-core-machine", + "sp1-recursion-compiler", + "sp1-stark", + "tempfile", + "tracing", +] + +[[package]] +name = "sp1-sdk" +version = "5.0.2" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "alloy-primitives", + "anyhow", + "async-trait", + "backoff", + "bincode", + "cfg-if", + "dirs", + "eventsource-stream", + "futures", + "hashbrown 0.14.5", + "hex", + "indicatif", + "itertools 0.13.0", + "k256", + "p3-baby-bear", + "p3-field", + "p3-fri", + "prost", + "reqwest", + "reqwest-middleware", + "serde", + "serde_json", + "sp1-build", + "sp1-core-executor", + "sp1-core-machine", + "sp1-cuda", + "sp1-primitives", + "sp1-prover", + "sp1-stark", + "strum", + "strum_macros", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tonic", + "tracing", + "twirp-rs", +] + +[[package]] +name = "sp1-stark" +version = "5.0.0" +source = "git+https://github.com/succinctlabs/sp1.git?rev=v5.0.0#38f0f143dece864e8bffafad64196a924f190336" +dependencies = [ + "arrayref", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rayon-scan", + "serde", + "sp1-derive", + "sp1-primitives", + "strum", + "strum_macros", + "sysinfo", + "tracing", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.101", +] + +[[package]] +name = "subenum" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f5d5dfb8556dd04017db5e318bbeac8ab2b0c67b76bf197bfb79e9b29f18ecf" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.26", +] + +[[package]] +name = "toml_datetime" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.9.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +dependencies = [ + "indexmap 2.9.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow 0.7.10", +] + +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "rustls-native-certs", + "rustls-pemfile", + "socket2", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-forest" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror 1.0.69", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "twirp-rs" +version = "0.13.0-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27dfcc06b8d9262bc2d4b8d1847c56af9971a52dd8a0076876de9db763227d0d" +dependencies = [ + "async-trait", + "axum", + "futures", + "http", + "http-body-util", + "hyper", + "prost", + "reqwest", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tower 0.5.2", + "url", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +dependencies = [ + "serde", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.101", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" +dependencies = [ + "ark-ff", + "ark-std", + "bitvec", + "blake2", + "bls12_381", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand 0.8.5", + "serde", + "sha2", + "sha3", + "subtle", +] diff --git a/scripts/test_files/sp1/no_public_inputs/script/Cargo.toml b/scripts/test_files/sp1/no_public_inputs/script/Cargo.toml new file mode 100644 index 0000000000..c9d9120b56 --- /dev/null +++ b/scripts/test_files/sp1/no_public_inputs/script/Cargo.toml @@ -0,0 +1,11 @@ +[workspace] +[package] +version = "0.1.0" +name = "no_public_input_proof_generator-script" +edition = "2021" + +[dependencies] +sp1-sdk = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } + +[build-dependencies] +sp1-helper = { git = "https://github.com/succinctlabs/sp1.git", rev = "v5.0.0" } diff --git a/scripts/test_files/sp1/no_public_inputs/script/build.rs b/scripts/test_files/sp1/no_public_inputs/script/build.rs new file mode 100644 index 0000000000..32b99273cd --- /dev/null +++ b/scripts/test_files/sp1/no_public_inputs/script/build.rs @@ -0,0 +1,5 @@ +use sp1_helper::build_program; + +fn main() { + build_program("../program") +} diff --git a/scripts/test_files/sp1/no_public_inputs/script/rust-toolchain b/scripts/test_files/sp1/no_public_inputs/script/rust-toolchain new file mode 100644 index 0000000000..9397b95266 --- /dev/null +++ b/scripts/test_files/sp1/no_public_inputs/script/rust-toolchain @@ -0,0 +1,3 @@ +[toolchain] +channel = "stable" +components = ["llvm-tools", "rustc-dev"] diff --git a/scripts/test_files/sp1/no_public_inputs/script/src/main.rs b/scripts/test_files/sp1/no_public_inputs/script/src/main.rs new file mode 100644 index 0000000000..bf513e690a --- /dev/null +++ b/scripts/test_files/sp1/no_public_inputs/script/src/main.rs @@ -0,0 +1,42 @@ +use sp1_sdk::{include_elf, utils, HashableKey, ProverClient, SP1Stdin}; +use std::io::Write; + +/// The ELF we want to execute inside the zkVM. +// const ELF: &[u8] = include_bytes!("../../program/elf/riscv32im-succinct-zkvm-elf"); +const ELF: &[u8] = include_elf!("no-public-input-program"); + +const SP1_VERSION: &str = "5_0_0"; + +fn main() { + // Setup logging. + utils::setup_logger(); + + // Create an input stream and write '500' to it. + let n = 500u32; + + let mut stdin = SP1Stdin::new(); + stdin.write(&n); + + // Generate the proof for the given program and input. + let client = ProverClient::from_env(); + let (pk, vk) = client.setup(ELF); + let mut proof = client.prove(&pk, &stdin).compressed().run().unwrap(); + + println!("Fibonacci program proof generated"); + + // Verify proof and public values + client.verify(&proof, &vk).expect("verification failed"); + + // Save the proof. + let proof_file_path = format!("../../sp1_no_pub_input_{}.proof", SP1_VERSION); + proof.save(proof_file_path).expect("saving proof failed"); + + std::fs::write(format!("../../sp1_no_pub_input_{}.vk", SP1_VERSION), vk.hash_bytes()) + .expect("failed to save vk hash"); + + let elf_file_path = format!("../../sp1_no_pub_input_{}.elf", SP1_VERSION); + let mut file = std::fs::File::create(elf_file_path).unwrap(); + file.write_all(ELF).unwrap(); + + println!("Successfully generated and verified proof for the program!") +} diff --git a/scripts/test_files/sp1/sp1_fibonacci.elf b/scripts/test_files/sp1/sp1_fibonacci.elf deleted file mode 100755 index d3284df48d..0000000000 Binary files a/scripts/test_files/sp1/sp1_fibonacci.elf and /dev/null differ diff --git a/scripts/test_files/sp1/sp1_fibonacci.proof b/scripts/test_files/sp1/sp1_fibonacci.proof deleted file mode 100644 index f206780eeb..0000000000 Binary files a/scripts/test_files/sp1/sp1_fibonacci.proof and /dev/null differ diff --git a/scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf new file mode 100644 index 0000000000..fa1bbf65c8 Binary files /dev/null and b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.elf differ diff --git a/scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof new file mode 100644 index 0000000000..97025ca3e6 Binary files /dev/null and b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof differ diff --git a/scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub new file mode 100644 index 0000000000..463bfe7229 Binary files /dev/null and b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.pub differ diff --git a/scripts/test_files/sp1/sp1_fibonacci_5_0_0.vk b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.vk new file mode 100644 index 0000000000..ea57080e1b --- /dev/null +++ b/scripts/test_files/sp1/sp1_fibonacci_5_0_0.vk @@ -0,0 +1 @@ +\:ܬ:D8=[a-]u,( \ No newline at end of file diff --git a/scripts/test_files/sp1/sp1_fibonacci_old.elf b/scripts/test_files/sp1/sp1_fibonacci_old.elf deleted file mode 100644 index cb2eada43c..0000000000 Binary files a/scripts/test_files/sp1/sp1_fibonacci_old.elf and /dev/null differ diff --git a/scripts/test_files/sp1/sp1_fibonacci_old.proof b/scripts/test_files/sp1/sp1_fibonacci_old.proof deleted file mode 100644 index 2c7d9efeb3..0000000000 Binary files a/scripts/test_files/sp1/sp1_fibonacci_old.proof and /dev/null differ diff --git a/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.elf b/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.elf new file mode 100644 index 0000000000..789b9ff159 Binary files /dev/null and b/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.elf differ diff --git a/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.proof b/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.proof new file mode 100644 index 0000000000..ffbc4661de Binary files /dev/null and b/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.proof differ diff --git a/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.vk b/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.vk new file mode 100644 index 0000000000..0b5239d395 --- /dev/null +++ b/scripts/test_files/sp1/sp1_no_pub_input_5_0_0.vk @@ -0,0 +1 @@ +%#6q;a־6-N*sgsˆ \ No newline at end of file diff --git a/scripts/unlocked_funds/.env.devnet b/scripts/unlocked_funds/.env.devnet new file mode 100644 index 0000000000..58154c30ca --- /dev/null +++ b/scripts/unlocked_funds/.env.devnet @@ -0,0 +1,6 @@ +RPC_URL=http://localhost:8545 +NETWORK=devnet +BATCHER_PAYMENT_SERVICE_ADDRESS=0x7bc06c482DEAd17c0e297aFbC32f6e63d3846650 +# Anvil address 6 +PRIVATE_KEY=0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e +SLEEP_SECONDS=3600 diff --git a/scripts/unlocked_funds/.env.example b/scripts/unlocked_funds/.env.example new file mode 100644 index 0000000000..1475b0a3fb --- /dev/null +++ b/scripts/unlocked_funds/.env.example @@ -0,0 +1,5 @@ +RPC_URL= +NETWORK= +BATCHER_PAYMENT_SERVICE_ADDRESS +PRIVATE_KEY= +SLEEP_SECONDS= diff --git a/scripts/unlocked_funds/README.md b/scripts/unlocked_funds/README.md new file mode 100644 index 0000000000..dbbe289757 --- /dev/null +++ b/scripts/unlocked_funds/README.md @@ -0,0 +1,51 @@ +# Unlocked Funds Test Script + +## Overview + +The `test_unlocked_funds.sh` script tests the unlocked funds flow in the Aligned protocol by continuously cycling between locking and unlocking funds while submitting proofs. + +## Usage + +**Important: This script must be run from the root of the repository.** + +```bash +./scripts/unlocked_funds/test_unlocked_funds.sh +``` + +## Required Environment Variables + +The script requires an environment file with the following variables: + +- `RPC_URL` - RPC endpoint URL for the blockchain network +- `NETWORK` - Network identifier (e.g., holesky, mainnet) +- `BATCHER_PAYMENT_SERVICE_ADDRESS` - Contract address of the batcher payment service +- `PRIVATE_KEY` - Private key for transaction signing +- `SLEEP_SECONDS` - Sleep duration between cycles (in seconds) + +## How It Works + +1. **Initial Setup**: Locks funds using the batcher payment service contract +2. **Continuous Loop**: + - Submits a proof to Aligned (runs in background) + - Waits 5 minutes + - Unlocks funds from the contract + - Sleeps for the configured duration + - Locks funds again + - Repeats the cycle + +## Test Files + +The script uses test files located at: +- `./scripts/test_files/circom_groth16_bn256_script/proof.json` +- `./scripts/test_files/circom_groth16_bn256_script/public.json` +- `./scripts/test_files/circom_groth16_bn256_script/verification_key.json` + +## Success Criteria + +The test is considered successful when the `UserFundsUnlocked` event is detected in the proof submission output. + +## Dependencies + +- `aligned` CLI tool +- `cast` (from Foundry) +- Bash shell environment diff --git a/scripts/unlocked_funds/test_unlocked_funds.sh b/scripts/unlocked_funds/test_unlocked_funds.sh new file mode 100755 index 0000000000..3c4b0087ea --- /dev/null +++ b/scripts/unlocked_funds/test_unlocked_funds.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +# ENV VARIABLES: +# - RPC_URL +# - NETWORK +# - BATCHER_PAYMENT_SERVICE_ADDRESS +# - PRIVATE_KEY +# - SLEEP_SECONDS + +# Load env file from $1 path +source "$1" + +### FUNCTIONS ### + +# Function to log with timestamp and severity +function log() { + local severity=$1 + local message=$2 + local timestamp=$(date '+%Y-%m-%d %H:%M:%S') + + echo "[$timestamp] [$severity] $message" +} + +# Function to send a proof to Aligned +function send_proof() { + log "INFO" "⏳ Sending proof to Aligned..." + + submit=$(aligned submit \ + --rpc_url $RPC_URL \ + --network $NETWORK \ + --private_key $PRIVATE_KEY \ + --proving_system CircomGroth16Bn256 \ + --proof ./scripts/test_files/circom_groth16_bn256_script/proof.json \ + --public_input ./scripts/test_files/circom_groth16_bn256_script/public.json \ + --vk ./scripts/test_files/circom_groth16_bn256_script/verification_key.json \ + --custom_fee_estimate 64 \ + 2>&1) + + # Check if UserFundsUnlocked appears in the output + if echo "$submit" | grep -q "UserFundsUnlocked"; then + log "INFO" "✅ Test successful - UserFundsUnlocked event detected" + else + log "ERROR" "❌ Test failed - UserFundsUnlocked event not detected" + log "ERROR" "Submit output: $submit" + fi +} + + +# Function to unlock funds +function unlock_funds() { + log "INFO" "⏳ Unlocking funds..." + output=$(cast send $BATCHER_PAYMENT_SERVICE_ADDRESS "unlock()" \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY 2>&1) + + if echo "$output" | grep -q "status.*1 (success)"; then + log "INFO" "✅ Unlock transaction successful" + else + log "ERROR" "❌ Unlock transaction failed" + fi +} + +# Function to lock funds +function lock_funds() { + log "INFO" "⏳ Locking funds..." + output=$(cast send $BATCHER_PAYMENT_SERVICE_ADDRESS "lock()" \ + --rpc-url $RPC_URL \ + --private-key $PRIVATE_KEY 2>&1) + + if echo "$output" | grep -q "status.*1 (success)"; then + log "INFO" "✅ Lock transaction successful" + else + log "ERROR" "❌ Lock transaction failed" + fi +} + +### MAIN LOOP ### +log "INFO" "🚀 Running..." +lock_funds +while true +do + send_proof & + sleep 300 + unlock_funds + sleep $SLEEP_SECONDS + lock_funds +done diff --git a/scripts/user_fund_payment_service_devnet.sh b/scripts/user_fund_payment_service_devnet.sh index 0129606e40..7fa5acf11c 100755 --- a/scripts/user_fund_payment_service_devnet.sh +++ b/scripts/user_fund_payment_service_devnet.sh @@ -1,7 +1,12 @@ #!/bin/bash +if [[ -z "$RPC_URL" ]]; then + echo "RPC_URL is empty, using default value http://localhost:8545" + RPC_URL="http://localhost:8545" +fi; + # Check that OPERATOR_ADDRESS is not empty -if [[ "$USER_ADDRESS" -eq "" ]]; then +if [[ -z "$USER_ADDRESS" ]]; then echo "USER_ADDRESS is empty, using default value 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" USER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 USER_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 @@ -18,6 +23,6 @@ amount_in_eth="100ether" cast send --from $USER_ADDRESS \ --value $amount_in_eth \ --private-key $USER_PRIVATE_KEY \ - --rpc-url "http://localhost:8545" \ + --rpc-url $RPC_URL \ "$batcher_payment_service_address" \ - --gas-price $(cast gas-price --rpc-url "http://localhost:8545") + --gas-price $(cast gas-price --rpc-url "$RPC_URL") diff --git a/storage-docker-compose.yaml b/storage-docker-compose.yaml index e8b1d61f75..e45f8c514e 100644 --- a/storage-docker-compose.yaml +++ b/storage-docker-compose.yaml @@ -13,3 +13,20 @@ services: - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack" - "/var/run/docker.sock:/var/run/docker.sock" - "./scripts/init-s3.py:/etc/localstack/init/ready.d/init-s3.py" # bucket initialization script + - "./scripts/init-s3-main.sh:/etc/localstack/init/ready.d/init-s3-main.sh" # bucket initialization script + + localstack2: + container_name: "${LOCALSTACK2_DOCKER_NAME:-localstack-secondary}" + image: localstack/localstack:s3-latest + ports: + - "127.0.0.1:4567:4566" # LocalStack Gateway + environment: + - DEBUG=${DEBUG:-0} + - DEFAULT_REGION=us-west-1 + - AWS_ACCESS_KEY_ID=test2 + - AWS_SECRET_ACCESS_KEY=test2 + volumes: + - "${LOCALSTACK2_VOLUME_DIR:-./volume2}:/var/lib/localstack" + - "/var/run/docker.sock:/var/run/docker.sock" + - "./scripts/init-s3.py:/etc/localstack/init/ready.d/init-s3.py" # bucket initialization script + - "./scripts/init-s3-secondary.sh:/etc/localstack/init/ready.d/init-s3-secondary.sh" # bucket initialization script diff --git a/telemetry-docker-compose.yaml b/telemetry-docker-compose.yaml index f56686c15c..a32fcb3b23 100644 --- a/telemetry-docker-compose.yaml +++ b/telemetry-docker-compose.yaml @@ -8,7 +8,7 @@ services: volumes: - ./otel-collector.yaml:/etc/otel-collector.yaml ports: - - "4317:4317" + - "4319:4317" cassandra: image: cassandra:latest diff --git a/telemetry_api/lib/telemetry_api/contract_managers/delegation_manager.ex b/telemetry_api/lib/telemetry_api/contract_managers/delegation_manager.ex index b3b5f73c60..bb0ebe7b26 100644 --- a/telemetry_api/lib/telemetry_api/contract_managers/delegation_manager.ex +++ b/telemetry_api/lib/telemetry_api/contract_managers/delegation_manager.ex @@ -8,6 +8,8 @@ defmodule TelemetryApi.ContractManagers.DelegationManager do "devnet" -> 0 "holesky" -> 1_210_000 "mainnet" -> 19_000_000 + "sepolia" -> 9_062_616 + "hoodi" -> 1_093_860 _ -> raise("Invalid environment") end) diff --git a/telemetry_api/lib/telemetry_api/periodically.ex b/telemetry_api/lib/telemetry_api/periodically.ex index 21ba1639fd..67bf7cd31b 100644 --- a/telemetry_api/lib/telemetry_api/periodically.ex +++ b/telemetry_api/lib/telemetry_api/periodically.ex @@ -9,7 +9,7 @@ defmodule TelemetryApi.Periodically do @registered 1 @deregistered 2 - @wait_time_str System.get_env("OPERATOR_FETCHER_WAIT_TIME_MS") || + @wait_time_str "60000" || raise """ environment variable OPERATOR_FETCHER_WAIT_TIME_MS is missing. """